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