Re: [PATCH 5/5] modesetting: Implement page flipping support for Present.

2015-05-04 Thread Mario Kleiner

On 04/28/2015 06:31 AM, Kenneth Graunke wrote:

On Tuesday, April 21, 2015 05:58:44 PM Kenneth Graunke wrote:

Based on code by Keith Packard, Eric Anholt, and Jason Ekstrand.

v2:
- Fix double free and flip_count underrun (caught by Mario Kleiner).
- Don't leak flip_vblank_event on the error_out path (Mario).
- Use the updated ms_flush_drm_events API (Mario, Ken).

v3: Hack around DPMS shenanigans.  If all monitors are DPMS off, then
 there is no active framebuffer; attempting to pageflip will hit the
 error_undo paths, causing us to drmModeRmFB with no framebuffer,
 which confuses the kernel into doing full modesets and generally
 breaks things.  To avoid this, make ms_present_check_flip check that
 some CRTCs are enabled and DPMS on.  This is an ugly hack that would
 get better with atomic modesetting, or some core Present work.

v4:
- Don't do pageflipping if CRTCs are rotated (caught by Jason Ekstrand).
- Make pageflipping optional (Option PageFlip in xorg.conf.d), but
   enabled by default.

Signed-off-by: Kenneth Graunke kenn...@whitecape.org


Upon further testing, there are still nasty DPMS bugs affecting this
patch.  We no longer crash the X server, but clients appear to
occasionally get stuck.

I guess we just need to bite the bullet and unflip on DPMS off.
Or switch to atomic modesetting...



I retested v4 + the attached patch with some small improvements applied. 
The patch adds async page flip cap support, fixes that missing zero init 
which Michel also reported and fixes some small inconsistency in the 
ms_present_unflip routine.


Everything worked nicely, except for the not quite resolved DPMS off 
bug. No more crashes, but page-flipped clients reliably hang after DPMS 
off - on. KDE with composition on and page flipping on (Setting 
Tearing prevention set to Full scene repaints) hangs after each 
off-on cycle, my own fullscreen app hangs reliably as well if 
page-flipped swaps are used.


Looking at stack traces it seems to me as if somehow after a dpms 
off/on, a present_event_notify() somehow doesn't get delivered to the 
server / gets lost somewhere, so clients like mine which wait for swap 
completion or vblank events hang, and KDE hangs in Mesa when Mesa tries 
to get a new backbuffer for rendering, runs out of buffers and then 
waits infinitely for a present notify event from the server in order to 
reuse one of its busy buffers.


-mario
From 3d1e2383d7bcd35cf0838f32f26b82b8118a17d5 Mon Sep 17 00:00:00 2001
From: Mario Kleiner mario.kleiner...@gmail.com
Date: Fri, 1 May 2015 09:01:41 +0200
Subject: [PATCH 8/8] modesetting: Add async flip support, fix small bugs.

Detect if kms driver is async flip capable.
Add missing zero init for number of crtc's on counting.
Fix small inconsistency.

Signed-off-by: Mario Kleiner mario.kleiner...@gmail.com
---
 hw/xfree86/drivers/modesetting/present.c | 13 +++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/hw/xfree86/drivers/modesetting/present.c b/hw/xfree86/drivers/modesetting/present.c
index 0ec0f40..693d4f3 100644
--- a/hw/xfree86/drivers/modesetting/present.c
+++ b/hw/xfree86/drivers/modesetting/present.c
@@ -504,7 +504,7 @@ ms_present_check_flip(RRCrtcPtr crtc,
 ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
 modesettingPtr ms = modesettingPTR(scrn);
 xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
-int num_crtcs_on;
+int num_crtcs_on = 0;
 int i;
 
 if (!ms-drmmode.pageflip)
@@ -579,7 +579,7 @@ ms_present_unflip(ScreenPtr screen, uint64_t event_id)
 PixmapPtr pixmap = screen-GetScreenPixmap(screen);
 Bool ret;
 
-if (!ms_present_check_flip(NULL, screen-root, pixmap, FALSE))
+if (!ms_present_check_flip(NULL, screen-root, pixmap, TRUE))
 return;
 
 ret = ms_do_pageflip(screen, pixmap, -1, FALSE, event_id);
@@ -609,5 +609,14 @@ static present_screen_info_rec ms_present_screen_info = {
 Bool
 ms_present_screen_init(ScreenPtr screen)
 {
+ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
+modesettingPtr ms = modesettingPTR(scrn);
+uint64_t value;
+int ret;
+
+ret = drmGetCap(ms-fd, DRM_CAP_ASYNC_PAGE_FLIP, value);
+if (ret == 0  value == 1)
+ms_present_screen_info.capabilities |= PresentCapabilityAsync;
+
 return present_screen_init(screen, ms_present_screen_info);
 }
-- 
1.9.1

___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Re: [PATCH] modesetting: Fix software cursor fallback

2015-05-04 Thread Rob Clark
On Fri, May 1, 2015 at 11:43 AM, Adel Gadllah adel.gadl...@gmail.com wrote:
 The code in drmmode_set_cursor does not properly handle the case where
 drmModeSetCursor2 returns any other error than EINVAL and silently fails to 
 set
 a cursor.

 So only return when the drmModeSetCursor2 succeeds (i.e returns 0) and disable
 the cursor2 usage on EINVAL.

Might not hurt to add something to the commit msg about falling
through to drmModeSetCursor() path (which does properly handle -ENXIO
and other non-EINVAL errors properly) since you can't easily see that
from the diffstat..

either way,

Reviewed-by: Rob Clark robdcl...@gmail.com



 References: https://bugzilla.redhat.com/show_bug.cgi?id=1205725
 Signed-off-by: Adel Gadllah adel.gadl...@gmail.com
 ---
  hw/xfree86/drivers/modesetting/drmmode_display.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

 diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c 
 b/hw/xfree86/drivers/modesetting/drmmode_display.c
 index 824500b..912abda 100644
 --- a/hw/xfree86/drivers/modesetting/drmmode_display.c
 +++ b/hw/xfree86/drivers/modesetting/drmmode_display.c
 @@ -396,10 +396,10 @@ drmmode_set_cursor(xf86CrtcPtr crtc)
  drmModeSetCursor2(drmmode-fd, drmmode_crtc-mode_crtc-crtc_id,
handle, ms-cursor_width, ms-cursor_height,
cursor-bits-xhot, cursor-bits-yhot);
 +if (!ret)
 +return;
  if (ret == -EINVAL)
  use_set_cursor2 = FALSE;
 -else
 -return;
  }

  ret = drmModeSetCursor(drmmode-fd, drmmode_crtc-mode_crtc-crtc_id, 
 handle,
 --
 2.1.0

 ___
 xorg-devel@lists.x.org: X.Org development
 Archives: http://lists.x.org/archives/xorg-devel
 Info: http://lists.x.org/mailman/listinfo/xorg-devel
___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Re: [PATCH RESEND libpciaccess] linux_sysfs.c: Include limits.h for PATH_MAX

2015-05-04 Thread Alan Coopersmith

On 05/ 1/15 10:54 PM, Felix Janda wrote:

Alan Coopersmith wrote:

On 05/ 1/15 07:36 AM, Felix Janda wrote:

Fixes compilation with musl libc.

Tested-by: Bernd Kuhls bernd.ku...@t-online.de
Signed-off-by: Felix Janda felix.ja...@posteo.de
---
   src/linux_sysfs.c | 1 +
   1 file changed, 1 insertion(+)

diff --git a/src/linux_sysfs.c b/src/linux_sysfs.c
index 8fca65e..1c8d3e3 100644
--- a/src/linux_sysfs.c
+++ b/src/linux_sysfs.c
@@ -41,6 +41,7 @@
   #include sys/types.h
   #include sys/stat.h
   #include fcntl.h
+#include limits.h
   #include sys/mman.h
   #include dirent.h
   #include errno.h



Reviewed-by: Alan Coopersmith alan.coopersm...@oracle.com


Thanks!


Did you need this pushed to git master for you or do you have someone with
commit access to do that?


No, I don't have someone with commit access and would be grateful if it
could be push for me.


Done:

To ssh://git.freedesktop.org/git/xorg/lib/libpciaccess
   765e0a3..6bd2f7f  master - master

--
-Alan Coopersmith-  alan.coopersm...@oracle.com
 Oracle Solaris Engineering - http://blogs.oracle.com/alanc
___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

[PATCH 1/2] dix: Add unaccelerated valuators to the ValuatorMask

2015-05-04 Thread Peter Hutterer
Allows a mask to carry both accelerated and unaccelerated motion at the same
time.

This is required for xf86-input-libinput where the pointer acceleration
happens in libinput already, but parts of the server, specifically raw events
and DGA rely on device-specific unaccelerated data.

To ease integration add this as a second set to the ValuatorMask rather than
extending all APIs to carry a second, possibly NULL set of valuators.

Note that a valuator mask should only be used in either accel/unaccel or
standard mode at any time. Switching requires either a valuator_mask_zero()
call or unsetting all valuators one-by-one.
Trying to mix the two will produce a warning.

Signed-off-by: Peter Hutterer peter.hutte...@who-t.net
---
 dix/inpututils.c   | 75 +++---
 hw/xfree86/common/xf86Module.h |  2 +-
 include/input.h| 14 
 include/inpututils.h   |  2 ++
 4 files changed, 87 insertions(+), 6 deletions(-)

diff --git a/dix/inpututils.c b/dix/inpututils.c
index 5c2a32d..c5869ab 100644
--- a/dix/inpututils.c
+++ b/dix/inpututils.c
@@ -505,11 +505,8 @@ valuator_mask_isset(const ValuatorMask *mask, int valuator)
 return mask-last_bit = valuator  BitIsOn(mask-mask, valuator);
 }
 
-/**
- * Set the valuator to the given floating-point data.
- */
-void
-valuator_mask_set_double(ValuatorMask *mask, int valuator, double data)
+static inline void
+_valuator_mask_set_double(ValuatorMask *mask, int valuator, double data)
 {
 mask-last_bit = max(valuator, mask-last_bit);
 SetBit(mask-mask, valuator);
@@ -517,6 +514,17 @@ valuator_mask_set_double(ValuatorMask *mask, int valuator, 
double data)
 }
 
 /**
+ * Set the valuator to the given floating-point data.
+ */
+void
+valuator_mask_set_double(ValuatorMask *mask, int valuator, double data)
+{
+BUG_WARN_MSG(mask-has_unacel,
+ Do not mix valuator types, zero mask first\n);
+_valuator_mask_set_double(mask, valuator, data);
+}
+
+/**
  * Set the valuator to the given integer data.
  */
 void
@@ -594,11 +602,15 @@ valuator_mask_unset(ValuatorMask *mask, int valuator)
 
 ClearBit(mask-mask, valuator);
 mask-valuators[valuator] = 0.0;
+mask-unaccelerated[valuator] = 0.0;
 
 for (i = 0; i = mask-last_bit; i++)
 if (valuator_mask_isset(mask, i))
 lastbit = max(lastbit, i);
 mask-last_bit = lastbit;
+
+if (mask-last_bit == -1)
+mask-has_unacel = FALSE;
 }
 }
 
@@ -611,6 +623,59 @@ valuator_mask_copy(ValuatorMask *dest, const ValuatorMask 
*src)
 valuator_mask_zero(dest);
 }
 
+Bool
+valuator_mask_has_accelerated(const ValuatorMask *mask)
+{
+return mask-has_unacel;
+}
+
+/**
+ * Set both accelerated and unaccelerated value for this mask.
+ */
+void
+valuator_mask_set_accelerated(ValuatorMask *mask,
+  int valuator,
+  double accel,
+  double unaccel)
+{
+BUG_WARN_MSG(mask-last_bit != -1  !mask-has_unacel,
+ Do not mix valuator types, zero mask first\n);
+_valuator_mask_set_double(mask, valuator, accel);
+mask-has_unacel = TRUE;
+mask-unaccelerated[valuator] = unaccel;
+}
+
+double
+valuator_mask_get_accelerated(const ValuatorMask *mask,
+  int valuator)
+{
+return valuator_mask_get_double(mask, valuator);
+}
+
+double
+valuator_mask_get_unaccelerated(const ValuatorMask *mask,
+int valuator)
+{
+return mask-unaccelerated[valuator];
+}
+
+Bool
+valuator_mask_fetch_accelerated(const ValuatorMask *mask,
+int valuator,
+double *accel,
+double *unaccel)
+{
+if (valuator_mask_isset(mask, valuator)) {
+if (accel)
+*accel = valuator_mask_get_accelerated(mask, valuator);
+if (unaccel)
+*unaccel = valuator_mask_get_unaccelerated(mask, valuator);
+return TRUE;
+}
+else
+return FALSE;
+}
+
 int
 CountBits(const uint8_t * mask, int len)
 {
diff --git a/hw/xfree86/common/xf86Module.h b/hw/xfree86/common/xf86Module.h
index 25a8869..66c2bb5 100644
--- a/hw/xfree86/common/xf86Module.h
+++ b/hw/xfree86/common/xf86Module.h
@@ -81,7 +81,7 @@ typedef enum {
  */
 #define ABI_ANSIC_VERSION  SET_ABI_VERSION(0, 4)
 #define ABI_VIDEODRV_VERSION   SET_ABI_VERSION(19, 0)
-#define ABI_XINPUT_VERSION SET_ABI_VERSION(22, 0)
+#define ABI_XINPUT_VERSION SET_ABI_VERSION(22, 1)
 #define ABI_EXTENSION_VERSION  SET_ABI_VERSION(9, 0)
 #define ABI_FONT_VERSION   SET_ABI_VERSION(0, 6)
 
diff --git a/include/input.h b/include/input.h
index 00a9cbd..480cbd0 100644
--- a/include/input.h
+++ b/include/input.h
@@ -673,6 +673,20 @@ extern _X_EXPORT Bool valuator_mask_fetch(const 
ValuatorMask *mask,
 extern _X_EXPORT Bool valuator_mask_fetch_double(const 

[PATCH 2/2] dix: hook up the unaccelerated valuator masks

2015-05-04 Thread Peter Hutterer
If present, access the unaccelerated valuator mask values for DGA and XI2 raw
events.

Signed-off-by: Peter Hutterer peter.hutte...@who-t.net
---
 dix/getevents.c| 25 ++---
 hw/xfree86/common/xf86Xinput.c |  4 
 2 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/dix/getevents.c b/dix/getevents.c
index d0a87f7..9a94b8f 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -208,14 +208,25 @@ init_raw(DeviceIntPtr dev, RawDeviceEvent *event, Time 
ms, int type, int detail)
 }
 
 static void
-set_raw_valuators(RawDeviceEvent *event, ValuatorMask *mask, double *data)
+set_raw_valuators(RawDeviceEvent *event, ValuatorMask *mask,
+  BOOL use_unaccel, double *data)
 {
 int i;
 
+use_unaccel = use_unaccel  valuator_mask_has_accelerated(mask);
+
 for (i = 0; i  valuator_mask_size(mask); i++) {
 if (valuator_mask_isset(mask, i)) {
+double v;
+
 SetBit(event-valuators.mask, i);
-data[i] = valuator_mask_get_double(mask, i);
+
+if (use_unaccel)
+v = valuator_mask_get_unaccelerated(mask, i);
+else
+v = valuator_mask_get_double(mask, i);
+
+data[i] = v;
 }
 }
 }
@@ -1388,7 +1399,7 @@ fill_pointer_events(InternalEvent *events, DeviceIntPtr 
pDev, int type,
 num_events++;
 
 init_raw(pDev, raw, ms, type, buttons);
-set_raw_valuators(raw, mask, raw-valuators.data_raw);
+set_raw_valuators(raw, mask, TRUE, raw-valuators.data_raw);
 }
 
 /* valuators are in driver-native format (rel or abs) */
@@ -1403,7 +1414,7 @@ fill_pointer_events(InternalEvent *events, DeviceIntPtr 
pDev, int type,
 transformAbsolute(pDev, mask);
 clipAbsolute(pDev, mask);
 if ((flags  POINTER_NORAW) == 0  raw)
-set_raw_valuators(raw, mask, raw-valuators.data);
+set_raw_valuators(raw, mask, FALSE, raw-valuators.data);
 }
 else {
 transformRelative(pDev, mask);
@@ -1411,7 +1422,7 @@ fill_pointer_events(InternalEvent *events, DeviceIntPtr 
pDev, int type,
 if (flags  POINTER_ACCELERATE)
 accelPointer(pDev, mask, ms);
 if ((flags  POINTER_NORAW) == 0  raw)
-set_raw_valuators(raw, mask, raw-valuators.data);
+set_raw_valuators(raw, mask, FALSE, raw-valuators.data);
 
 moveRelative(pDev, flags, mask);
 }
@@ -1916,7 +1927,7 @@ GetTouchEvents(InternalEvent *events, DeviceIntPtr dev, 
uint32_t ddx_touchid,
 events++;
 num_events++;
 init_raw(dev, raw, ms, type, client_id);
-set_raw_valuators(raw, mask, raw-valuators.data_raw);
+set_raw_valuators(raw, mask, TRUE, raw-valuators.data_raw);
 }
 
 event = events-device_event;
@@ -1978,7 +1989,7 @@ GetTouchEvents(InternalEvent *events, DeviceIntPtr dev, 
uint32_t ddx_touchid,
 screeny = dev-spriteInfo-sprite-hotPhys.y;
 }
 if (need_rawevent)
-set_raw_valuators(raw, mask, raw-valuators.data);
+set_raw_valuators(raw, mask, FALSE, raw-valuators.data);
 
 /* Indirect device touch coordinates are not used for cursor positioning.
  * They are merely informational, and are provided in device coordinates.
diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index 9fa3dc4..2fe85dd 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -1137,12 +1137,16 @@ xf86CheckMotionEvent4DGA(DeviceIntPtr device, int 
is_absolute,
 dx = valuator_mask_get(mask, 0);
 if (is_absolute)
 dx -= device-last.valuators[0];
+else if (valuator_mask_has_accelerated(mask))
+dx = valuator_mask_get_unaccelerated(mask, 0);
 }
 
 if (valuator_mask_isset(mask, 1)) {
 dy = valuator_mask_get(mask, 1);
 if (is_absolute)
 dy -= device-last.valuators[1];
+else if (valuator_mask_has_accelerated(mask))
+dy = valuator_mask_get_unaccelerated(mask, 1);
 }
 
 if (DGAStealMotionEvent(device, idx, dx, dy))
-- 
2.3.5

___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

[PATCH xf86-input-libinput] Use the new unaccelerated valuator ValuatorMask features

2015-05-04 Thread Peter Hutterer
SDL Games like openarena rely on relative input that's handled by the DGA code
in the server. That code casts the driver's input data to int and sends it to
the client. libinput does pointer acceleration for us, so sending any deltas
of less than 1 (likely for slow movements) ends up being 0.

Use the new ValuatorMask accelerated/unaccelerated values to pass the
unaccelerated values along, the server can then decide what to do with it.

Signed-off-by: Peter Hutterer peter.hutte...@who-t.net
---
 src/libinput.c | 27 ++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/src/libinput.c b/src/libinput.c
index c7ab18c..110af78 100644
--- a/src/libinput.c
+++ b/src/libinput.c
@@ -47,6 +47,12 @@
 #define XI86_SERVER_FD 0x20
 #endif
 
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) * 1000 + 
GET_ABI_MINOR(ABI_XINPUT_VERSION)  22000
+#define HAVE_VMASK_UNACCEL 1
+#else
+#undef HAVE_VMASK_UNACCEL
+#endif
+
 #define TOUCHPAD_NUM_AXES 4 /* x, y, hscroll, vscroll */
 #define TOUCH_MAX_SLOTS 15
 #define XORG_KEYCODE_OFFSET 8
@@ -84,6 +90,7 @@ struct xf86libinput {
} scale;
 
ValuatorMask *valuators;
+   ValuatorMask *valuators_unaccelerated;
 
struct options {
BOOL tapping;
@@ -693,9 +700,21 @@ xf86libinput_handle_motion(InputInfoPtr pInfo, struct 
libinput_event_pointer *ev
y = libinput_event_pointer_get_dy(event);
 
valuator_mask_zero(mask);
+
+#if HAVE_VMASK_UNACCEL
+   {
+   double ux, uy;
+
+   ux = libinput_event_pointer_get_dx_unaccelerated(event);
+   uy = libinput_event_pointer_get_dy_unaccelerated(event);
+
+   valuator_mask_set_accelerated(mask, 0, x, ux);
+   valuator_mask_set_accelerated(mask, 1, y, uy);
+   }
+#else
valuator_mask_set_double(mask, 0, x);
valuator_mask_set_double(mask, 1, y);
-
+#endif
xf86PostMotionEventM(dev, Relative, mask);
 }
 
@@ -1349,6 +1368,10 @@ xf86libinput_pre_init(InputDriverPtr drv,
if (!driver_data-valuators)
goto fail;
 
+   driver_data-valuators_unaccelerated = valuator_mask_new(2);
+   if (!driver_data-valuators_unaccelerated)
+   goto fail;
+
driver_data-scroll_vdist = 15;
driver_data-scroll_hdist = 15;
 
@@ -1420,6 +1443,8 @@ fail:
fd_pop(driver_context, pInfo-fd);
if (driver_data-valuators)
valuator_mask_free(driver_data-valuators);
+   if (driver_data-valuators_unaccelerated)
+   valuator_mask_free(driver_data-valuators_unaccelerated);
free(path);
free(driver_data);
return BadValue;
-- 
2.3.5

___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

[PATCH] config: remove 10-evdev.conf, let the evdev driver install that file

2015-05-04 Thread Peter Hutterer
Now that we have two likely drivers that fight for control over the input
devices (evdev and libinput) let's move the respective driver assignment to
each package. So you get what you install.

https://bugs.freedesktop.org/show_bug.cgi?id=89023

Signed-off-by: Peter Hutterer peter.hutte...@who-t.net
---
 config/10-evdev.conf | 40 
 config/Makefile.am   |  4 ++--
 2 files changed, 2 insertions(+), 42 deletions(-)
 delete mode 100644 config/10-evdev.conf

diff --git a/config/10-evdev.conf b/config/10-evdev.conf
deleted file mode 100644
index cc83ab2..000
--- a/config/10-evdev.conf
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# Catch-all evdev loader for udev-based systems
-# We don't simply match on any device since that also adds accelerometers
-# and other devices that we don't really want to use. The list below
-# matches everything but joysticks.
-
-Section InputClass
-Identifier evdev pointer catchall
-MatchIsPointer on
-MatchDevicePath /dev/input/event*
-Driver evdev
-EndSection
-
-Section InputClass
-Identifier evdev keyboard catchall
-MatchIsKeyboard on
-MatchDevicePath /dev/input/event*
-Driver evdev
-EndSection
-
-Section InputClass
-Identifier evdev touchpad catchall
-MatchIsTouchpad on
-MatchDevicePath /dev/input/event*
-Driver evdev
-EndSection
-
-Section InputClass
-Identifier evdev tablet catchall
-MatchIsTablet on
-MatchDevicePath /dev/input/event*
-Driver evdev
-EndSection
-
-Section InputClass
-Identifier evdev touchscreen catchall
-MatchIsTouchscreen on
-MatchDevicePath /dev/input/event*
-Driver evdev
-EndSection
diff --git a/config/Makefile.am b/config/Makefile.am
index 0e20e8b..51aae47 100644
--- a/config/Makefile.am
+++ b/config/Makefile.am
@@ -18,7 +18,7 @@ libconfig_la_LIBADD += $(UDEV_LIBS)
 
 if XORG
 xorgconfddir = $(datadir)/X11/$(XF86CONFIGDIR)
-xorgconfd_DATA = 10-evdev.conf 10-quirks.conf
+xorgconfd_DATA = 10-quirks.conf
 endif
 
 else
@@ -38,4 +38,4 @@ endif # !CONFIG_HAL
 
 endif # !CONFIG_UDEV
 
-EXTRA_DIST = x11-input.fdi 10-evdev.conf fdi2iclass.py 10-quirks.conf
+EXTRA_DIST = x11-input.fdi fdi2iclass.py 10-quirks.conf
-- 
2.3.5

___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

[PATCH evdev] Add the default evdev config

2015-05-04 Thread Peter Hutterer
This used to be part of the server but now that we have two drivers doing the
same thing (libinput, evdev) shift the configuration defaults to the driver.
This way you get what you install.

https://bugs.freedesktop.org/show_bug.cgi?id=89023

Signed-off-by: Peter Hutterer peter.hutte...@who-t.net
---
 10-evdev.conf | 40 
 Makefile.am   |  1 +
 configure.ac  |  7 +++
 3 files changed, 48 insertions(+)
 create mode 100644 10-evdev.conf

diff --git a/10-evdev.conf b/10-evdev.conf
new file mode 100644
index 000..cc83ab2
--- /dev/null
+++ b/10-evdev.conf
@@ -0,0 +1,40 @@
+#
+# Catch-all evdev loader for udev-based systems
+# We don't simply match on any device since that also adds accelerometers
+# and other devices that we don't really want to use. The list below
+# matches everything but joysticks.
+
+Section InputClass
+Identifier evdev pointer catchall
+MatchIsPointer on
+MatchDevicePath /dev/input/event*
+Driver evdev
+EndSection
+
+Section InputClass
+Identifier evdev keyboard catchall
+MatchIsKeyboard on
+MatchDevicePath /dev/input/event*
+Driver evdev
+EndSection
+
+Section InputClass
+Identifier evdev touchpad catchall
+MatchIsTouchpad on
+MatchDevicePath /dev/input/event*
+Driver evdev
+EndSection
+
+Section InputClass
+Identifier evdev tablet catchall
+MatchIsTablet on
+MatchDevicePath /dev/input/event*
+Driver evdev
+EndSection
+
+Section InputClass
+Identifier evdev touchscreen catchall
+MatchIsTouchscreen on
+MatchDevicePath /dev/input/event*
+Driver evdev
+EndSection
diff --git a/Makefile.am b/Makefile.am
index 00c7940..1cc3ea6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -28,6 +28,7 @@ MAINTAINERCLEANFILES = ChangeLog INSTALL
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = xorg-evdev.pc
 
+dist_xorgconf_DATA = 10-evdev.conf
 
 .PHONY: ChangeLog INSTALL
 
diff --git a/configure.ac b/configure.ac
index e0d480a..f6fd2e4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -59,6 +59,13 @@ AC_ARG_WITH(xorg-module-dir,
 inputdir=${moduledir}/input
 AC_SUBST(inputdir)
 
+AC_ARG_WITH(xorg-conf-dir,
+AC_HELP_STRING([--with-xorg-conf-dir=DIR],
+   [Default xorg.conf.d directory 
[[default=$prefix/share/X11/xorg.conf.d/]]]),
+[xorgconfdir=$withval],
+[xorgconfdir=$prefix/share/X11/xorg.conf.d])
+AC_SUBST(xorgconfdir)
+
 # X Server SDK location is required to install evdev header files
 # This location is also relayed in the xorg-evdev.pc file
 sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server`
-- 
2.3.5

___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel