xserver: Branch 'master' - 14 commits

Keith Packard keithp at kemper.freedesktop.org
Wed Feb 2 15:20:26 PST 2011


 hw/xfree86/common/xf86DGA.c         |   51 ++++++++++++------------------------
 hw/xfree86/common/xf86Module.h      |    2 -
 hw/xfree86/common/xf86Xinput.c      |   29 ++++++++++++--------
 hw/xfree86/dixmods/extmod/dgaproc.h |    1 
 include/eventstr.h                  |    2 -
 xkb/xkb.c                           |    7 ++++
 6 files changed, 44 insertions(+), 48 deletions(-)

New commits:
commit ea1ffd3e60bdcedbec5a6f28929f8677bf45d450
Merge: 12b0f7d... 53602c3...
Author: Keith Packard <keithp at keithp.com>
Date:   Wed Feb 2 15:19:55 2011 -0800

    Merge remote branch 'whot/for-keith'

commit 53602c36217487e0a80880e8328f89ab302d85c8
Author: Ville Syrjala <syrjala at sci.fi>
Date:   Mon Jan 24 01:06:49 2011 +0200

    xfree86/dga: Remove DGAIsDgaEvent()
    
    DGAIsDgaEvent() is not used anymore.
    
    Signed-off-by: Ville Syrjala <syrjala at sci.fi>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/xfree86/common/xf86DGA.c b/hw/xfree86/common/xf86DGA.c
index 28fffc1..74eb739 100644
--- a/hw/xfree86/common/xf86DGA.c
+++ b/hw/xfree86/common/xf86DGA.c
@@ -999,18 +999,6 @@ DGAStealButtonEvent(DeviceIntPtr dev, int index, int button, int is_down)
 
 /* We have the power to steal or modify events that are about to get queued */
 
-Bool
-DGAIsDgaEvent (xEvent *e)
-{
-    int	    coreEquiv;
-    if (!DGAScreenKeyRegistered || XDGAEventBase == 0)
-	return FALSE;
-    coreEquiv = e->u.u.type - *XDGAEventBase;
-    if (KeyPress <= coreEquiv && coreEquiv <= MotionNotify)
-	return TRUE;
-    return FALSE;
-}
-
 #define NoSuchEvent 0x80000000	/* so doesn't match NoEventMask */
 static Mask filters[] =
 {
diff --git a/hw/xfree86/dixmods/extmod/dgaproc.h b/hw/xfree86/dixmods/extmod/dgaproc.h
index 6745a6e..a13a517 100644
--- a/hw/xfree86/dixmods/extmod/dgaproc.h
+++ b/hw/xfree86/dixmods/extmod/dgaproc.h
@@ -124,7 +124,6 @@ extern _X_EXPORT Bool DGAStealButtonEvent(DeviceIntPtr dev, int Index, int butto
                          int is_down);
 extern _X_EXPORT Bool DGAStealMotionEvent(DeviceIntPtr dev, int Index, int dx, int dy);
 extern _X_EXPORT Bool DGAStealKeyEvent(DeviceIntPtr dev, int Index, int key_code, int is_down);
-extern _X_EXPORT Bool DGAIsDgaEvent (xEvent *e);
 	    
 extern _X_EXPORT Bool DGAOpenFramebuffer(int Index, char **name, unsigned char **mem,
 			int *size, int *offset, int *flags);
commit 2081728b7432e949c274e0dbbabc296fa4db17f9
Author: Ville Syrjala <syrjala at sci.fi>
Date:   Mon Jan 24 01:06:48 2011 +0200

    xfree86/dga: Only send DGA events for master devices
    
    Signed-off-by: Ville Syrjala <syrjala at sci.fi>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/xfree86/common/xf86DGA.c b/hw/xfree86/common/xf86DGA.c
index d3c0577..28fffc1 100644
--- a/hw/xfree86/common/xf86DGA.c
+++ b/hw/xfree86/common/xf86DGA.c
@@ -1210,6 +1210,9 @@ DGAHandleEvent(int screen_num, InternalEvent *ev, DeviceIntPtr device)
     if (!pScreenPriv)
 	return;
 
+    if (!IsMaster(device))
+	return;
+
     switch (event->subtype) {
     case KeyPress:
     case KeyRelease:
commit 9f09b62e594321a8e45a33f4f13559827d660ed3
Author: Ville Syrjala <syrjala at sci.fi>
Date:   Mon Jan 24 01:06:47 2011 +0200

    xfree86/dga: Remove useless ifdefs
    
    Move some variables to the scope where they are used.
    
    Signed-off-by: Ville Syrjala <syrjala at sci.fi>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index 6fdf1eb..74365e1 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -1011,11 +1011,6 @@ xf86PostMotionEventM(DeviceIntPtr	device,
     DeviceEvent *event;
     int flags = 0;
 
-#if XFreeXDGA
-    int index;
-    int dx = 0, dy = 0;
-#endif
-
     if (valuator_mask_num_valuators(mask) > 0)
     {
         if (is_absolute)
@@ -1029,7 +1024,9 @@ xf86PostMotionEventM(DeviceIntPtr	device,
     if (valuator_mask_isset(mask, 0) ||
         valuator_mask_isset(mask, 1))
         if (miPointerGetScreen(device)) {
-            index = miPointerGetScreen(device)->myNum;
+            int index = miPointerGetScreen(device)->myNum;
+            int dx = 0, dy = 0;
+
             if (valuator_mask_isset(mask, 0))
             {
                 dx = valuator_mask_get(mask, 0);
@@ -1160,10 +1157,6 @@ xf86PostButtonEventM(DeviceIntPtr	device,
     int i = 0, nevents = 0;
     int flags = 0;
 
-#if XFreeXDGA
-    int index;
-#endif
-
     if (valuator_mask_num_valuators(mask) > 0)
     {
         if (is_absolute)
@@ -1174,7 +1167,8 @@ xf86PostButtonEventM(DeviceIntPtr	device,
 
 #if XFreeXDGA
     if (miPointerGetScreen(device)) {
-        index = miPointerGetScreen(device)->myNum;
+        int index = miPointerGetScreen(device)->myNum;
+
         if (DGAStealButtonEvent(device, index, button, is_down))
             return;
     }
@@ -1241,13 +1235,13 @@ xf86PostKeyEventM(DeviceIntPtr	device,
     int i = 0, nevents = 0;
 
 #if XFreeXDGA
-    int index;
     DeviceIntPtr pointer;
 
     /* Some pointers send key events, paired device is wrong then. */
     pointer = IsPointerDevice(device) ? device : GetPairedDevice(device);
     if (miPointerGetScreen(pointer)) {
-        index = miPointerGetScreen(pointer)->myNum;
+        int index = miPointerGetScreen(pointer)->myNum;
+
         if (DGAStealKeyEvent(device, index, key_code, is_down))
             return;
     }
commit 5c941c04ca68cdc2b236c524970bc23f91906af4
Author: Ville Syrjala <syrjala at sci.fi>
Date:   Mon Jan 24 01:06:46 2011 +0200

    xfree86/dga: DGAProcessKeyboardEvent() forgot ET_Internal
    
    Signed-off-by: Ville Syrjala <syrjala at sci.fi>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/xfree86/common/xf86DGA.c b/hw/xfree86/common/xf86DGA.c
index 77d1ff8..d3c0577 100644
--- a/hw/xfree86/common/xf86DGA.c
+++ b/hw/xfree86/common/xf86DGA.c
@@ -1032,6 +1032,7 @@ DGAProcessKeyboardEvent (ScreenPtr pScreen, DGAEvent *event, DeviceIntPtr keybd)
     DeviceEvent     ev;
 
     memset(&ev, 0, sizeof(ev));
+    ev.header = ET_Internal;
     ev.length = sizeof(ev);
     ev.detail.key = event->detail;
     ev.type = event->subtype;
commit ce4e0f660beb097e90110c97d039981702f0b0bd
Author: Ville Syrjala <syrjala at sci.fi>
Date:   Mon Jan 24 01:06:45 2011 +0200

    xfree86/dga: Remove DGAMouseX and DGAMouseY
    
    Previously some sort of absolute coordinates were sent out in
    the padding of the DGA2 Motion and Button events. DGAMouseX
    and DGAMouseY were used to keep track of said coordinates.
    libXxf86dga doesn't use that data for anything, and at least
    git history didn't show any past usage either. So let's just
    remove the last remnants of of this mess.
    
    Signed-off-by: Ville Syrjala <syrjala at sci.fi>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/xfree86/common/xf86DGA.c b/hw/xfree86/common/xf86DGA.c
index 3093505..77d1ff8 100644
--- a/hw/xfree86/common/xf86DGA.c
+++ b/hw/xfree86/common/xf86DGA.c
@@ -942,8 +942,6 @@ DGAStealKeyEvent(DeviceIntPtr dev, int index, int key_code, int is_down)
    return TRUE;
 }  
 
-static int  DGAMouseX, DGAMouseY;
-
 Bool
 DGAStealMotionEvent(DeviceIntPtr dev, int index, int dx, int dy)
 {
@@ -958,17 +956,6 @@ DGAStealMotionEvent(DeviceIntPtr dev, int index, int dx, int dy)
    if(!pScreenPriv || !pScreenPriv->grabMouse) /* no direct mode */
         return FALSE;
 
-    DGAMouseX += dx;
-    if (DGAMouseX < 0)
-        DGAMouseX = 0;
-    else if (DGAMouseX > screenInfo.screens[index]->width)
-        DGAMouseX = screenInfo.screens[index]->width;
-    DGAMouseY += dy;
-    if (DGAMouseY < 0)
-        DGAMouseY = 0;
-    else if (DGAMouseY > screenInfo.screens[index]->height)
-        DGAMouseY = screenInfo.screens[index]->height;
-
     memset(&event, 0, sizeof(event));
     event.header = ET_Internal;
     event.type = ET_DGAEvent;
commit ee8faeadb60f51a36edce19e568600dab7c8b357
Author: Ville Syrjala <syrjala at sci.fi>
Date:   Mon Jan 24 01:06:44 2011 +0200

    xfree86/dga: DGA2 events are missing the dx/dy information
    
    Copy dx/dy from the internal event to the DGA2 Motion/Button events.
    Do the same for Key events for the sake of keeping the code consistent.
    
    Signed-off-by: Ville Syrjala <syrjala at sci.fi>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/xfree86/common/xf86DGA.c b/hw/xfree86/common/xf86DGA.c
index 9d0c621..3093505 100644
--- a/hw/xfree86/common/xf86DGA.c
+++ b/hw/xfree86/common/xf86DGA.c
@@ -1064,8 +1064,8 @@ DGAProcessKeyboardEvent (ScreenPtr pScreen, DGAEvent *event, DeviceIntPtr keybd)
         de.u.u.type = *XDGAEventBase + GetCoreType((InternalEvent*)&ev);
         de.u.u.detail = event->detail;
         de.u.event.time = event->time;
-        de.u.event.dx = 0;
-        de.u.event.dy = 0;
+        de.u.event.dx = event->dx;
+        de.u.event.dy = event->dy;
         de.u.event.screen = pScreen->myNum;
         de.u.event.state = ev.corestate;
 
@@ -1120,8 +1120,8 @@ DGAProcessPointerEvent (ScreenPtr pScreen, DGAEvent *event, DeviceIntPtr mouse)
         de.u.u.type = *XDGAEventBase + coreEquiv;
         de.u.u.detail = event->detail;
         de.u.event.time = event->time;
-        de.u.event.dx = 0;
-        de.u.event.dy = 0;
+        de.u.event.dx = event->dx;
+        de.u.event.dy = event->dy;
         de.u.event.screen = pScreen->myNum;
         de.u.event.state = ev.corestate;
 
commit e3fef815cf85cf59256f3edeaa21c1267898b42c
Author: Ville Syrjala <syrjala at sci.fi>
Date:   Mon Jan 24 01:06:43 2011 +0200

    xfree86/dga: Make mieq_install Bool
    
    mieq_installed is used as a boolean, so why not make it such. Also
    it's a static variable, so the the explicit zero initialization can
    be removed.
    
    Signed-off-by: Ville Syrjala <syrjala at sci.fi>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/xfree86/common/xf86DGA.c b/hw/xfree86/common/xf86DGA.c
index c4b2d7d..9d0c621 100644
--- a/hw/xfree86/common/xf86DGA.c
+++ b/hw/xfree86/common/xf86DGA.c
@@ -53,7 +53,7 @@
 
 static DevPrivateKeyRec DGAScreenKeyRec;
 #define DGAScreenKeyRegistered dixPrivateKeyRegistered(&DGAScreenKeyRec)
-static int mieq_installed = 0;
+static Bool mieq_installed;
 
 static Bool DGACloseScreen(int i, ScreenPtr pScreen);
 static void DGADestroyColormap(ColormapPtr pmap);
@@ -252,7 +252,7 @@ DGACloseScreen(int i, ScreenPtr pScreen)
 
    if (mieq_installed) {
        mieqSetHandler(ET_DGAEvent, NULL);
-       mieq_installed = 0;
+       mieq_installed = FALSE;
    }
 
    FreeMarkedVisuals(pScreen);
@@ -449,7 +449,7 @@ xf86SetDGAMode(
 
    if (!mieq_installed) {
       mieqSetHandler(ET_DGAEvent, DGAHandleEvent);
-      mieq_installed = 1;
+      mieq_installed = TRUE;
    }
 
    return Success;
@@ -472,7 +472,7 @@ DGASetInputMode(int index, Bool keyboard, Bool mouse)
 
       if (!mieq_installed) {
           mieqSetHandler(ET_DGAEvent, DGAHandleEvent);
-          mieq_installed = 1;
+          mieq_installed = TRUE;
       }
    }
 }
commit f4cb25c2ed832bf4cfcd4d25198fe5a895430fed
Author: Ville Syrjala <syrjala at sci.fi>
Date:   Mon Jan 24 01:06:42 2011 +0200

    xfree86/dga: Remove the ET_DGAEvent handler only if it was installed
    
    Remove the handler only if it was installed. Also mark it as
    uninstalled, otherwise it wouldn't get reinstalled after a
    server reset.
    
    Signed-off-by: Ville Syrjala <syrjala at sci.fi>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/xfree86/common/xf86DGA.c b/hw/xfree86/common/xf86DGA.c
index 3cded85..c4b2d7d 100644
--- a/hw/xfree86/common/xf86DGA.c
+++ b/hw/xfree86/common/xf86DGA.c
@@ -250,9 +250,10 @@ DGACloseScreen(int i, ScreenPtr pScreen)
 {
    DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
 
-   if (XDGAEventBase) {
+   if (mieq_installed) {
        mieqSetHandler(ET_DGAEvent, NULL);
-    }
+       mieq_installed = 0;
+   }
 
    FreeMarkedVisuals(pScreen);
 
commit e1547a9f1f6d7991219b7711f4cacc2852dbf88c
Author: Ville Syrjala <syrjala at sci.fi>
Date:   Mon Jan 24 01:06:41 2011 +0200

    xfree86/dga: Install the DGA event handler when DGA2 is used
    
    The ET_DGAEvent handler is only installed when a client
    requests relative events via DGA1. Do it also when a client
    requests DGA2 events.
    
    Signed-off-by: Ville Syrjala <syrjala at sci.fi>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/xfree86/common/xf86DGA.c b/hw/xfree86/common/xf86DGA.c
index 1058a46..3cded85 100644
--- a/hw/xfree86/common/xf86DGA.c
+++ b/hw/xfree86/common/xf86DGA.c
@@ -446,6 +446,11 @@ xf86SetDGAMode(
    pScreenPriv->grabMouse = TRUE;
    pScreenPriv->grabKeyboard = TRUE;
 
+   if (!mieq_installed) {
+      mieqSetHandler(ET_DGAEvent, DGAHandleEvent);
+      mieq_installed = 1;
+   }
+
    return Success;
 }
 
commit 7b16e8633d5a95167aac0c19e43fcfe38bd4a6a4
Author: Ville Syrjala <syrjala at sci.fi>
Date:   Mon Jan 24 01:06:40 2011 +0200

    xfree86/input: Restore DGAStealKeyEvent()
    
    DGA key event support was lost in commit
    8da0ff2d51086666d10ca7330d428e8610a4a0e3. Bring it back.
    
    Signed-off-by: Ville Syrjala <syrjala at sci.fi>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index b9006ab..6fdf1eb 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -1240,6 +1240,19 @@ xf86PostKeyEventM(DeviceIntPtr	device,
 {
     int i = 0, nevents = 0;
 
+#if XFreeXDGA
+    int index;
+    DeviceIntPtr pointer;
+
+    /* Some pointers send key events, paired device is wrong then. */
+    pointer = IsPointerDevice(device) ? device : GetPairedDevice(device);
+    if (miPointerGetScreen(pointer)) {
+        index = miPointerGetScreen(pointer)->myNum;
+        if (DGAStealKeyEvent(device, index, key_code, is_down))
+            return;
+    }
+#endif
+
     if (is_absolute) {
         nevents = GetKeyboardValuatorEvents(xf86Events, device,
                                             is_down ? KeyPress : KeyRelease,
commit a2c481821997ae14aa5816895ae36db2ca2e4dec
Author: Ville Syrjala <syrjala at sci.fi>
Date:   Mon Jan 24 01:06:39 2011 +0200

    include: Fix a copy/paste error in a comment
    
    Signed-off-by: Ville Syrjala <syrjala at sci.fi>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/include/eventstr.h b/include/eventstr.h
index 377cceb..673207c 100644
--- a/include/eventstr.h
+++ b/include/eventstr.h
@@ -177,7 +177,7 @@ struct _DGAEvent
     Time time;            /**<  Time in ms */
     int subtype;          /**<  KeyPress, KeyRelease, ButtonPress,
                                 ButtonRelease, MotionNotify */
-    int detail;           /**<  Relative x coordinate */
+    int detail;           /**<  Button number or key code */
     int dx;               /**<  Relative x coordinate */
     int dy;               /**<  Relative y coordinate */
     int screen;           /**<  Screen number this event applies to */
commit 77af0dc5217fc9c446097d6d487c8ddaf00bdd2a
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Mon Jan 24 10:06:34 2011 +1000

    xfree86: bump input minor ABI
    
    The new valuator_mask_free() call requires a minor bump.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/xfree86/common/xf86Module.h b/hw/xfree86/common/xf86Module.h
index 609819b..49a98bd 100644
--- a/hw/xfree86/common/xf86Module.h
+++ b/hw/xfree86/common/xf86Module.h
@@ -83,7 +83,7 @@ typedef enum {
  */
 #define ABI_ANSIC_VERSION	SET_ABI_VERSION(0, 4)
 #define ABI_VIDEODRV_VERSION	SET_ABI_VERSION(9, 0)
-#define ABI_XINPUT_VERSION	SET_ABI_VERSION(12, 1)
+#define ABI_XINPUT_VERSION	SET_ABI_VERSION(12, 2)
 #define ABI_EXTENSION_VERSION	SET_ABI_VERSION(5, 0)
 #define ABI_FONT_VERSION	SET_ABI_VERSION(0, 6)
 
commit 5927e070b45fbe3fea4b394920ffd6f7d036f1ed
Author: Erkki Seppälä <erkki.seppala at vincit.fi>
Date:   Fri Jan 21 15:56:22 2011 +0200

    xkb: Cancel a key's repetition when its autorepeat is disabled.
    
    When XkbChangeEnabledControls is called to disable key repetition of a
    certain key (or keys), currently ongoing repetition of that key was
    not cancelled. It was cancelled if ChangeKeyboardControl was used to
    disable key repetition globally.
    
    Reviewed-by: Rami Ylimäki <rami.ylimaki at vincit.fi>
    Reviewed-by: Dirk Wallenstein <halsmit at t-online.de>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/xkb/xkb.c b/xkb/xkb.c
index bbb1d9d..6fd66c5 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -915,9 +915,14 @@ ProcXkbSetControls(ClientPtr client)
                                        stuff->axtOptsMask);
             }
 
-            if (stuff->changeCtrls & XkbPerKeyRepeatMask)
+            if (stuff->changeCtrls & XkbPerKeyRepeatMask) {
                 memcpy(new.per_key_repeat, stuff->perKeyRepeat,
                        XkbPerKeyBitArraySize);
+                if (xkbi->repeatKey &&
+                    !BitIsOn(new.per_key_repeat, xkbi->repeatKey)) {
+                    AccessXCancelRepeatKey(xkbi, xkbi->repeatKey);
+                }
+            }
 
             old= *ctrl;
             *ctrl= new;


More information about the xorg-commit mailing list