xserver: Branch 'master' - 8 commits

Peter Hutterer whot at kemper.freedesktop.org
Mon Feb 2 14:52:12 PST 2009


 Xext/saver.c       |   10 +++++-----
 Xext/shape.c       |   16 ++++++++--------
 Xi/exevents.c      |   16 ++++++++++------
 Xi/extinit.c       |    1 -
 Xi/xiproperty.c    |   30 ++++++++++--------------------
 Xi/xiproperty.h    |    2 --
 include/input.h    |   15 ---------------
 include/inputstr.h |    2 ++
 render/render.c    |   10 +++++-----
 9 files changed, 40 insertions(+), 62 deletions(-)

New commits:
commit 6bf6a4c47e94780bf0eef47702f21a505c336556
Author: Simon Thum <simon.thum at gmx.de>
Date:   Fri Jan 23 12:06:16 2009 +0100

    Xi: create well-known atoms on demand, rather than preinit them
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/Xi/extinit.c b/Xi/extinit.c
index 62ec958..a7a21ec 100644
--- a/Xi/extinit.c
+++ b/Xi/extinit.c
@@ -1143,7 +1143,6 @@ XInputExtensionInit(void)
 	IEventBase = extEntry->eventBase;
 	AllExtensionVersions[IReqCode - 128] = thisversion;
 	MakeDeviceTypeAtoms();
-	XIInitKnownProperties();
 	RT_INPUTCLIENT = CreateNewResourceType((DeleteType) InputClientGone);
 	RegisterResourceName(RT_INPUTCLIENT, "INPUTCLIENT");
 	FixExtensionEvents(extEntry);
diff --git a/Xi/xiproperty.c b/Xi/xiproperty.c
index 3bc2818..f42adb8 100644
--- a/Xi/xiproperty.c
+++ b/Xi/xiproperty.c
@@ -97,7 +97,7 @@ static struct dev_properties
 static long XIPropHandlerID = 1;
 
 /**
- * Return the type assigned to the specified atom or 0 if the atom isn't known
+ * Return the atom assigned to the specified string or 0 if the atom isn't known
  * to the DIX.
  */
 Atom
@@ -106,8 +106,16 @@ XIGetKnownProperty(char *name)
     int i;
     for (i = 0; i < (sizeof(dev_properties)/sizeof(struct dev_properties)); i++)
     {
-        if (strcmp(name, dev_properties[i].name) == 0)
+        if (strcmp(name, dev_properties[i].name) == 0){
+            if (dev_properties[i].type == None){
+		dev_properties[i].type =
+			    MakeAtom(dev_properties[i].name,
+			             strlen(dev_properties[i].name),
+			             TRUE);
+            }
+
             return dev_properties[i].type;
+        }
     }
 
     return 0;
@@ -232,24 +240,6 @@ XIPropToFloat(XIPropertyValuePtr val, int *nelem_return, float **buf_return)
     return Success;
 }
 
-/**
- * Init those properties that are allocated by the server and most likely used
- * by the DIX or the DDX.
- */
-void
-XIInitKnownProperties(void)
-{
-    int i;
-    for (i = 0; i < (sizeof(dev_properties)/sizeof(struct dev_properties)); i++)
-    {
-        dev_properties[i].type =
-            MakeAtom(dev_properties[i].name,
-                     strlen(dev_properties[i].name),
-                     TRUE);
-    }
-}
-
-
 /* Registers a new property handler on the given device and returns a unique
  * identifier for this handler. This identifier is required to unregister the
  * property handler again.
diff --git a/Xi/xiproperty.h b/Xi/xiproperty.h
index 12026e9..bf562b1 100644
--- a/Xi/xiproperty.h
+++ b/Xi/xiproperty.h
@@ -43,6 +43,4 @@ void SRepXListDeviceProperties(ClientPtr client, int size,
 void SRepXGetDeviceProperty(ClientPtr client, int size,
                             xGetDevicePropertyReply *rep);
 
-void XIInitKnownProperties(void);
-
 #endif /* XIPROPERTY_C */
commit 32adf8d34fb7db9b78859241f2670349b75c3f7e
Author: Peter Hutterer <peter.hutterer at redhat.com>
Date:   Wed Jan 28 20:52:45 2009 +1000

    Xi: If the MD doesn't have a key/kbdfeed class, init the keyboard.
    
    This fixes crashes on mouse/keyboard combos where the mouse is both a keyboard
    and a mouse. Upon copying the SD's key info into the VCP, the NULL xkbInfo of
    the VCP would crash the server.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/Xi/exevents.c b/Xi/exevents.c
index 2a161f0..34e9e73 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -237,7 +237,14 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to)
         {
             classes = dixLookupPrivate(&to->devPrivates,
                                        UnusedClassesPrivateKey);
+
             to->kbdfeed = classes->kbdfeed;
+            if (!to->kbdfeed)
+            {
+                XkbRMLVOSet rmlvo;
+                XkbGetRulesDflts(&rmlvo);
+                InitKeyboardDeviceStruct(to, &rmlvo, NULL, NULL);
+            }
         }
 
         k = &to->kbdfeed;
@@ -481,9 +488,9 @@ DeepCopyDeviceClasses(DeviceIntPtr from, DeviceIntPtr to)
             to->key = classes->key;
             if (!to->key)
             {
-                to->key = xcalloc(1, sizeof(KeyClassRec));
-                if (!to->key)
-                    FatalError("[Xi] no memory for class shift.\n");
+                XkbRMLVOSet rmlvo;
+                XkbGetRulesDflts(&rmlvo);
+                InitKeyboardDeviceStruct(to, &rmlvo, NULL, NULL);
             } else
                 classes->key = NULL;
         }
commit caade11b8465a743b2ecc890a4d180277e9ca716
Author: Peter Hutterer <peter.hutterer at redhat.com>
Date:   Wed Jan 28 20:44:47 2009 +1000

    Xi: remove now obsolete oldXkbInfo.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at redhat.com>

diff --git a/Xi/exevents.c b/Xi/exevents.c
index bf9d167..2a161f0 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -474,7 +474,6 @@ DeepCopyDeviceClasses(DeviceIntPtr from, DeviceIntPtr to)
 
     if (from->key)
     {
-        struct _XkbSrvInfo  *oldXkbInfo;
         if (!to->key)
         {
             classes = dixLookupPrivate(&to->devPrivates,
@@ -489,8 +488,6 @@ DeepCopyDeviceClasses(DeviceIntPtr from, DeviceIntPtr to)
                 classes->key = NULL;
         }
 
-        oldXkbInfo      = to->key->xkbInfo;
-        to->key->xkbInfo        = oldXkbInfo;
         CopyKeyClass(from, to);
     } else if (to->key && !from->key)
     {
commit 5e0967f5fc2e0fcf2a55128eb03931cf6f5709e9
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Fri Dec 12 10:49:53 2008 +1000

    dix: add SetBit(arr, bit) and ClearBit(arr, bit) to include/inputstr.h
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/include/inputstr.h b/include/inputstr.h
index 2ee4f9b..2b6de02 100644
--- a/include/inputstr.h
+++ b/include/inputstr.h
@@ -57,6 +57,8 @@ SOFTWARE.
 #include "privates.h"
 
 #define BitIsOn(ptr, bit) (((BYTE *) (ptr))[(bit)>>3] & (1 << ((bit) & 7)))
+#define SetBit(ptr, bit)  (((BYTE *) (ptr))[(bit)>>3] |= (1 << ((bit) & 7)))
+#define ClearBit(ptr, bit) (((BYTE *)(ptr))[(bit)>>3] &= ~(1 << ((bit) & 7)))
 
 #define SameClient(obj,client) \
 	(CLIENT_BITS((obj)->resource) == (client)->clientAsMask)
commit faeb18eb7eb20f15528f9c8004d843146ebc2a50
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Tue Jan 27 15:40:31 2009 +1000

    Xext: rename shape's EventType to ShapeEventType to avoid name clashing.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/Xext/shape.c b/Xext/shape.c
index 8827a02..fbf8f8c 100644
--- a/Xext/shape.c
+++ b/Xext/shape.c
@@ -95,7 +95,7 @@ static DISPATCH_PROC(SProcShapeSelectInput);
 #endif
 
 static int ShapeEventBase = 0;
-static RESTYPE ClientType, EventType; /* resource types for event masks */
+static RESTYPE ClientType, ShapeEventType; /* resource types for event masks */
 
 /*
  * each window has a list of clients requesting
@@ -128,8 +128,8 @@ ShapeExtensionInit(void)
     ExtensionEntry *extEntry;
 
     ClientType = CreateNewResourceType(ShapeFreeClient);
-    EventType = CreateNewResourceType(ShapeFreeEvents);
-    if (ClientType && EventType &&
+    ShapeEventType = CreateNewResourceType(ShapeFreeEvents);
+    if (ClientType && ShapeEventType &&
 	(extEntry = AddExtension(SHAPENAME, ShapeNumberEvents, 0,
 				 ProcShapeDispatch, SProcShapeDispatch,
 				 NULL, StandardMinorOpcode)))
@@ -741,7 +741,7 @@ ShapeFreeClient (pointer data, XID id)
 
     pShapeEvent = (ShapeEventPtr) data;
     pWin = pShapeEvent->window;
-    pHead = (ShapeEventPtr *) LookupIDByType(pWin->drawable.id, EventType);
+    pHead = (ShapeEventPtr *) LookupIDByType(pWin->drawable.id, ShapeEventType);
     if (pHead) {
 	pPrev = 0;
 	for (pCur = *pHead; pCur && pCur != pShapeEvent; pCur=pCur->next)
@@ -788,7 +788,7 @@ ProcShapeSelectInput (ClientPtr client)
     if (rc != Success)
 	return rc;
     pHead = (ShapeEventPtr *)SecurityLookupIDByType(client,
-			pWin->drawable.id, EventType, DixWriteAccess);
+			pWin->drawable.id, ShapeEventType, DixWriteAccess);
     switch (stuff->enable) {
     case xTrue:
 	if (pHead) {
@@ -828,7 +828,7 @@ ProcShapeSelectInput (ClientPtr client)
     	{
 	    pHead = xalloc (sizeof (ShapeEventPtr));
 	    if (!pHead ||
-	    	!AddResource (pWin->drawable.id, EventType, (pointer)pHead))
+		!AddResource (pWin->drawable.id, ShapeEventType, (pointer)pHead))
 	    {
 	    	FreeResource (clientResource, RT_NONE);
 	    	return BadAlloc;
@@ -878,7 +878,7 @@ SendShapeNotify (WindowPtr pWin, int which)
     RegionPtr		region;
     BYTE		shaped;
 
-    pHead = (ShapeEventPtr *) LookupIDByType(pWin->drawable.id, EventType);
+    pHead = (ShapeEventPtr *) LookupIDByType(pWin->drawable.id, ShapeEventType);
     if (!pHead)
 	return;
     switch (which) {
@@ -957,7 +957,7 @@ ProcShapeInputSelected (ClientPtr client)
     if (rc != Success)
 	return rc;
     pHead = (ShapeEventPtr *) SecurityLookupIDByType(client,
-			pWin->drawable.id, EventType, DixReadAccess);
+			pWin->drawable.id, ShapeEventType, DixReadAccess);
     enabled = xFalse;
     if (pHead) {
     	for (pShapeEvent = *pHead;
commit cfd3443fe81685e91a53063dee58e24a5684dc29
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed Jan 28 13:34:10 2009 +1000

    Xext: rename saver's EventType to SaverEventType.
    
    Avoid namespace clashing with the internal events.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/Xext/saver.c b/Xext/saver.c
index 3aaec34..cd67749 100644
--- a/Xext/saver.c
+++ b/Xext/saver.c
@@ -142,7 +142,7 @@ static int ScreenSaverFreeSuspend(
  * entry from the per-screen queue.
  */
 
-static RESTYPE EventType;   /* resource type for event masks */
+static RESTYPE SaverEventType;   /* resource type for event masks */
 
 typedef struct _ScreenSaverEvent *ScreenSaverEventPtr;
 
@@ -253,7 +253,7 @@ ScreenSaverExtensionInit(INITARGS)
     ScreenPtr	    pScreen;
 
     AttrType = CreateNewResourceType(ScreenSaverFreeAttr);
-    EventType = CreateNewResourceType(ScreenSaverFreeEvents);
+    SaverEventType = CreateNewResourceType(ScreenSaverFreeEvents);
     SuspendType = CreateNewResourceType(ScreenSaverFreeSuspend);
 
     for (i = 0; i < screenInfo.numScreens; i++)
@@ -261,7 +261,7 @@ ScreenSaverExtensionInit(INITARGS)
 	pScreen = screenInfo.screens[i];
 	SetScreenPrivate (pScreen, NULL);
     }
-    if (AttrType && EventType && SuspendType &&
+    if (AttrType && SaverEventType && SuspendType &&
 	(extEntry = AddExtension(ScreenSaverName, ScreenSaverNumberEvents, 0,
 				 ProcScreenSaverDispatch, SProcScreenSaverDispatch,
 				 NULL, StandardMinorOpcode)))
@@ -339,7 +339,7 @@ setEventMask (ScreenPtr pScreen, ClientPtr client, unsigned long mask)
 	    break;
     if (mask == 0)
     {
-	FreeResource (pEv->resource, EventType);
+	FreeResource (pEv->resource, SaverEventType);
 	*pPrev = pEv->next;
 	xfree (pEv);
 	CheckScreenPrivate (pScreen);
@@ -359,7 +359,7 @@ setEventMask (ScreenPtr pScreen, ClientPtr client, unsigned long mask)
     	    pEv->client = client;
     	    pEv->screen = pScreen;
     	    pEv->resource = FakeClientID (client->index);
-	    if (!AddResource (pEv->resource, EventType, (pointer) pEv))
+	    if (!AddResource (pEv->resource, SaverEventType, (pointer) pEv))
 		return FALSE;
     	}
 	pEv->mask = mask;
commit 8460425740c72e58bcb897557f033e2836251160
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed Dec 10 12:31:59 2008 +0000

    render: rename SetBit to RenderSetBit.
    
    Avoiding namespace collision with the SetBit macro soon to be used in the
    input code.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/render/render.c b/render/render.c
index b6e9567..658b170 100644
--- a/render/render.c
+++ b/render/render.c
@@ -1505,7 +1505,7 @@ ProcRenderFillRectangles (ClientPtr client)
 }
 
 static void
-SetBit (unsigned char *line, int x, int bit)
+RenderSetBit (unsigned char *line, int x, int bit)
 {
     unsigned char   mask;
     
@@ -1676,8 +1676,8 @@ ProcRenderCreateCursor (ClientPtr client)
 	    {
 		CARD32	a = ((p >> 24));
 
-		SetBit (mskline, x, a != 0);
-		SetBit (srcline, x, a != 0 && p == twocolor[0]);
+		RenderSetBit (mskline, x, a != 0);
+		RenderSetBit (srcline, x, a != 0 && p == twocolor[0]);
 	    }
 	    else
 	    {
@@ -1685,9 +1685,9 @@ ProcRenderCreateCursor (ClientPtr client)
 		CARD32	i = ((CvtR8G8B8toY15(p) >> 7) * DITHER_SIZE + 127) / 255;
 		CARD32	d = orderedDither[y&(DITHER_DIM-1)][x&(DITHER_DIM-1)];
 		/* Set mask from dithered alpha value */
-		SetBit(mskline, x, a > d);
+		RenderSetBit(mskline, x, a > d);
 		/* Set src from dithered intensity value */
-		SetBit(srcline, x, a > d && i <= d);
+		RenderSetBit(srcline, x, a > d && i <= d);
 	    }
 	}
 	srcline += stride;
commit 940a7aeebc9b042b0208ee475ef162c485ac2274
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Tue Jan 27 15:52:49 2009 +1000

    include: remove now-unused sempahore macros.
    
    Obsolete with the new enter/leave model.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/include/input.h b/include/input.h
index bf826b0..3b7a173 100644
--- a/include/input.h
+++ b/include/input.h
@@ -95,21 +95,6 @@ SOFTWARE.
 #define RevertToFollowKeyboard	3
 #endif
 
-/* Used for enter/leave and focus in/out semaphores */
-#define SEMAPHORE_FIELD_SET(win, dev, field) \
-    (win)->field[(dev)->id/8] |= (1 << ((dev)->id % 8)); \
-
-#define SEMAPHORE_FIELD_UNSET(win, dev, field) \
-    (win)->field[(dev)->id/8] &= ~(1 << ((dev)->id % 8));
-
-#define FOCUS_SEMAPHORE_SET(win, dev) \
-        SEMAPHORE_FIELD_SET(win, dev, focusinout);
-
-#define FOCUS_SEMAPHORE_UNSET(win, dev) \
-        SEMAPHORE_FIELD_UNSET(win, dev, focusinout);
-
-#define FOCUS_SEMAPHORE_ISSET(win, dev) \
-        (win)->focusinout[(dev)->id/8] & (1 << ((dev)->id % 8))
 
 typedef unsigned long Leds;
 typedef struct _OtherClients *OtherClientsPtr;


More information about the xorg-commit mailing list