diff options
author | Peter Hutterer <peter.hutterer@redhat.com> | 2008-11-11 22:50:35 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@redhat.com> | 2008-11-13 17:06:32 +1000 |
commit | f5841e96487234df5ead5f5c0fb3c587c418cb46 (patch) | |
tree | 25db831b61d0f8bbdfc46cb2d410063e2c561a5d /include | |
parent | 26f701704b4e536cd91bd8a9f7d2194793471998 (diff) |
dix: don't store enter/leave and focus semaphores in a devPrivate.
We need them for each window, every time a window is allocated. Storing them
in a devPrivate is the wrong thing to do.
This also removes the unused ENTER_LEAVE_SEMAPHORE_ISSET macro.
Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/input.h | 17 | ||||
-rw-r--r-- | include/windowstr.h | 18 |
2 files changed, 9 insertions, 26 deletions
diff --git a/include/input.h b/include/input.h index 0d348ec38..a41affd21 100644 --- a/include/input.h +++ b/include/input.h @@ -92,18 +92,10 @@ SOFTWARE. /* Used for enter/leave and focus in/out semaphores */ #define SEMAPHORE_FIELD_SET(win, dev, field) \ -{ \ - FocusSemaphoresPtr sem; \ - sem = (FocusSemaphoresPtr)dixLookupPrivate(&win->devPrivates, FocusPrivatesKey); \ - sem->field[dev->id/8] |= (1 << (dev->id % 8)); \ -} + (win)->field[(dev)->id/8] |= (1 << ((dev)->id % 8)); \ #define SEMAPHORE_FIELD_UNSET(win, dev, field) \ -{ \ - FocusSemaphoresPtr sem; \ - sem = (FocusSemaphoresPtr)dixLookupPrivate(&win->devPrivates, FocusPrivatesKey); \ - sem->field[dev->id/8] &= ~(1 << (dev->id % 8)); \ -} + (win)->field[(dev)->id/8] &= ~(1 << ((dev)->id % 8)); #define ENTER_LEAVE_SEMAPHORE_SET(win, dev) \ SEMAPHORE_FIELD_SET(win, dev, enterleave); @@ -111,9 +103,6 @@ SOFTWARE. #define ENTER_LEAVE_SEMAPHORE_UNSET(win, dev) \ SEMAPHORE_FIELD_UNSET(win, dev, enterleave); -#define ENTER_LEAVE_SEMAPHORE_ISSET(win, dev) \ - ((FocusSemaphoresPtr)dixLookupPrivate(&win->devPrivates, FocusPrivatesKey))->enterleave[dev->id/8] & (1 << (dev->id % 8)) - #define FOCUS_SEMAPHORE_SET(win, dev) \ SEMAPHORE_FIELD_SET(win, dev, focusinout); @@ -121,7 +110,7 @@ SOFTWARE. SEMAPHORE_FIELD_UNSET(win, dev, focusinout); #define FOCUS_SEMAPHORE_ISSET(win, dev) \ - ((FocusSemaphoresPtr)dixLookupPrivate(&win->devPrivates, FocusPrivatesKey))->focusinout[dev->id/8] & (1 << (dev->id % 8)) + (win)->focusinout[(dev)->id/8] & (1 << ((dev)->id % 8)) typedef unsigned long Leds; typedef struct _OtherClients *OtherClientsPtr; diff --git a/include/windowstr.h b/include/windowstr.h index 3beb01c80..159ee3629 100644 --- a/include/windowstr.h +++ b/include/windowstr.h @@ -188,6 +188,12 @@ typedef struct _Window { #ifdef ROOTLESS unsigned rootlessUnhittable:1; /* doesn't hit-test */ #endif + /* Used to maintain semantics of core protocol for Enter/LeaveNotifies and + * FocusIn/Out events for multiple pointers/keyboards. Each device ID + * corresponds to one bit. If set, the device is in the window/has focus. + */ + char enterleave[(MAXDEVICES + 7)/8]; + char focusinout[(MAXDEVICES + 7)/8]; } WindowRec; /* @@ -244,17 +250,5 @@ typedef struct _ScreenSaverStuff { extern int screenIsSaved; extern ScreenSaverStuffRec savedScreenInfo[MAXSCREENS]; -extern DevPrivateKey FocusPrivatesKey; - -/* Used to maintain semantics of core protocol for Enter/LeaveNotifies and - * FocusIn/Out events for multiple pointers/keyboards. - * - * Each device ID corresponds to one bit. If set, the device is in the - * window/has focus. - */ -typedef struct _FocusSemaphores { - char enterleave[(MAXDEVICES + 7)/8]; - char focusinout[(MAXDEVICES + 7)/8]; -} FocusSemaphoresRec, *FocusSemaphoresPtr; #endif /* WINDOWSTRUCT_H */ |