xserver: Branch 'server-1.10-branch' - 2 commits

Jeremy Huddleston jeremyhu at kemper.freedesktop.org
Sun Jul 10 00:26:08 PDT 2011


 dix/getevents.c  |   18 +++++++++++-------
 glx/glxscreens.c |    7 +++++++
 include/input.h  |    9 +++++----
 mi/mipointer.c   |    2 +-
 4 files changed, 24 insertions(+), 12 deletions(-)

New commits:
commit afb537d56af9a037c4f43d90795fb7e9acb7f9d2
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Fri Jun 24 11:02:23 2011 +1000

    input: add POINTER_NORAW to avoid generation of raw events (#30068)
    
    RawEvents are supposed to be events coming from the driver. When warping the
    pointer, this should not generate a raw event.
    
    X.Org Bug 30068 <http://bugs.freedesktop.org/show_bug.cgi?id=30068>
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Daniel Stone <daniel at fooishbar.org>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    (cherry picked from commit 23a783278963919778d017965542e0f983814e37)
    
    Conflicts:
    
    	dix/getevents.c

diff --git a/dix/getevents.c b/dix/getevents.c
index 8355040..ba93818 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -1136,14 +1136,17 @@ GetPointerEvents(EventList *events, DeviceIntPtr pDev, int type, int buttons,
 
     events = UpdateFromMaster(events, pDev, DEVCHANGE_POINTER_EVENT, &num_events);
 
-    raw = (RawDeviceEvent*)events->event;
-    events++;
-    num_events++;
-
     valuator_mask_copy(&mask, mask_in);
 
-    init_raw(pDev, raw, ms, type, buttons);
-    set_raw_valuators(raw, &mask, raw->valuators.data_raw);
+    if ((flags & POINTER_NORAW) == 0)
+    {
+        raw = (RawDeviceEvent*)events->event;
+	events++;
+	num_events++;
+
+	init_raw(pDev, raw, ms, type, buttons);
+	set_raw_valuators(raw, &mask, raw->valuators.data_raw);
+    }
 
     if (flags & POINTER_ABSOLUTE)
     {
@@ -1195,7 +1198,8 @@ GetPointerEvents(EventList *events, DeviceIntPtr pDev, int type, int buttons,
         moveRelative(pDev, &x, &y, &mask);
     }
 
-    set_raw_valuators(raw, &mask, raw->valuators.data);
+    if ((flags & POINTER_NORAW) == 0)
+	set_raw_valuators(raw, &mask, raw->valuators.data);
 
     positionSprite(pDev, &x, &y, x_frac, y_frac, scr, &cx, &cy, &cx_frac, &cy_frac);
     updateHistory(pDev, &mask, ms);
diff --git a/include/input.h b/include/input.h
index 95aae43..eb25fc6 100644
--- a/include/input.h
+++ b/include/input.h
@@ -62,10 +62,11 @@ SOFTWARE.
 #define DEVICE_OFF	2
 #define DEVICE_CLOSE	3
 
-#define POINTER_RELATIVE (1 << 1)
-#define POINTER_ABSOLUTE (1 << 2)
-#define POINTER_ACCELERATE (1 << 3)
-#define POINTER_SCREEN (1 << 4) /* Data in screen coordinates */
+#define POINTER_RELATIVE	(1 << 1)
+#define POINTER_ABSOLUTE	(1 << 2)
+#define POINTER_ACCELERATE	(1 << 3)
+#define POINTER_SCREEN		(1 << 4)	/* Data in screen coordinates */
+#define POINTER_NORAW		(1 << 5)	/* Don't generate RawEvents */
 
 /*int constants for pointer acceleration schemes*/
 #define PtrAccelNoOp            0
diff --git a/mi/mipointer.c b/mi/mipointer.c
index ca0bae5..bfe9754 100644
--- a/mi/mipointer.c
+++ b/mi/mipointer.c
@@ -574,7 +574,7 @@ miPointerMove (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)
 
     valuator_mask_set_range(&mask, 0, 2, valuators);
     nevents = GetPointerEvents(events, pDev, MotionNotify, 0,
-                               POINTER_SCREEN | POINTER_ABSOLUTE, &mask);
+                               POINTER_SCREEN | POINTER_ABSOLUTE | POINTER_NORAW, &mask);
 
     OsBlockSignals();
 #ifdef XQUARTZ
commit 6b06f376544f222e426f0a35d22d69df0c523882
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Apr 12 15:30:25 2011 -0400

    glx: Fix fbconfigs with no corresponding visual
    
    There are, in general, more fbconfig depths than visual depths.
    fbconfigs need not support Window rendering, however any that do must
    have an associated visual ID (which we got right), and any that do not
    must not claim GLX_WINDOW_BIT in GLX_DRAWABLE_TYPE (which we got
    wrong).
    
    Fixes piglit/glx-fbconfig-sanity, assuming you have a sufficiently
    recent piglit, as that test formerly wrongly required pixmap-capable
    fbconfigs to have a visual.
    
    v2: Additional check for fbconfigs that didn't have GLX_WINDOW_BIT in
        the first place, from previous patch by Jon TURNEY; also, also clear
        ->visualID.
    
    Reviewed-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    Signed-off-by: Adam Jackson <ajax at redhat.com>
    (cherry picked from commit 3e8270b869ebf788778d5d56107f6d47c7c050d0)

diff --git a/glx/glxscreens.c b/glx/glxscreens.c
index 496cf9e..c4ad426 100644
--- a/glx/glxscreens.c
+++ b/glx/glxscreens.c
@@ -395,8 +395,15 @@ void __glXScreenInit(__GLXscreen *pGlxScreen, ScreenPtr pScreen)
 	    if (depth == pScreen->visuals[i].nplanes)
 		break;
 	}
+	/* if it can't, fix up the fbconfig to not advertise window support */
 	if (i == pScreen->numVisuals)
+	    config->drawableType &= ~(GLX_WINDOW_BIT);
+
+       /* fbconfig must support window drawables */
+	if (!(config->drawableType & GLX_WINDOW_BIT)) {
+	    config->visualID = 0;
 	    continue;
+	}
 
 	/* Create a new X visual for our FBconfig. */
 	visual = AddScreenVisuals(pScreen, 1, depth);


More information about the xorg-commit mailing list