xserver: Branch 'xorg-server-1.4-apple' - 9 commits
Jeremy Huddleston
jeremyhu at kemper.freedesktop.org
Fri Dec 7 14:14:43 PST 2007
Xext/panoramiXSwap.c | 4 ++++
Xi/exevents.c | 4 ++--
config/hal.c | 5 +++--
hw/kdrive/ephyr/ephyrinit.c | 2 ++
hw/xfree86/dixmods/xkbKillSrv.c | 4 +++-
os/WaitFor.c | 2 +-
os/connection.c | 16 +++++++++++-----
xkb/ddxKillSrv.c | 4 +++-
xkb/xkbActions.c | 19 +++++++++++++++++--
9 files changed, 46 insertions(+), 14 deletions(-)
New commits:
commit 4ae562166460507c0b51dea03ac1b3dc4b731160
Merge: be59012... 9f46891...
Author: Jeremy Huddleston <jeremy at spr-wlan-199.AirBears.Berkeley.EDU>
Date: Fri Dec 7 14:14:32 2007 -0800
Merge branch 'server-1.4-branch' into xorg-server-1.4-apple
commit 9f4689173ef9db080592497dc2212ae79b8d6e02
Author: Daniel Stone <daniel at fooishbar.org>
Date: Thu Dec 6 00:46:32 2007 +0000
KDrive: Xephyr: Fix non-GLX builds
Only set noGlxExtension if we're actually building GLX.
diff --git a/hw/kdrive/ephyr/ephyrinit.c b/hw/kdrive/ephyr/ephyrinit.c
index c33892c..e4ff975 100644
--- a/hw/kdrive/ephyr/ephyrinit.c
+++ b/hw/kdrive/ephyr/ephyrinit.c
@@ -47,7 +47,9 @@ InitCard (char *name)
void
InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
{
+#ifdef GLXEXT
noGlxExtension=TRUE;
+#endif
KdInitOutput (pScreenInfo, argc, argv);
}
commit d37351308b255d5f9bff3438b6767c62974902da
Author: Daniel Stone <daniel at fooishbar.org>
Date: Wed Dec 5 19:37:48 2007 +0000
XKB: Actions: Don't run certain actions on the core keyboard
Don't run VT switches, terminations, or anything, on the core keyboard: only
run actions which affect the keyboard state. If we get an action such as VT
switch, just swallow the event.
(cherry picked from commit 320abd7d1d906807448fa01ad3377daf707f46cc)
diff --git a/hw/xfree86/dixmods/xkbKillSrv.c b/hw/xfree86/dixmods/xkbKillSrv.c
index b3399db..9074fd3 100644
--- a/hw/xfree86/dixmods/xkbKillSrv.c
+++ b/hw/xfree86/dixmods/xkbKillSrv.c
@@ -48,6 +48,8 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
int
XkbDDXTerminateServer(DeviceIntPtr dev,KeyCode key,XkbAction *act)
{
- xf86ProcessActionEvent(ACTION_TERMINATE, NULL);
+ if (dev != inputInfo.keyboard)
+ xf86ProcessActionEvent(ACTION_TERMINATE, NULL);
+
return 0;
}
diff --git a/xkb/ddxKillSrv.c b/xkb/ddxKillSrv.c
index a573ecb..3b5fd53 100644
--- a/xkb/ddxKillSrv.c
+++ b/xkb/ddxKillSrv.c
@@ -41,6 +41,8 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
int
XkbDDXTerminateServer(DeviceIntPtr dev,KeyCode key,XkbAction *act)
{
- GiveUp(1);
+ if (dev != inputInfo.keyboard)
+ GiveUp(1);
+
return 0;
}
diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c
index 8ddbdba..6edac29 100644
--- a/xkb/xkbActions.c
+++ b/xkb/xkbActions.c
@@ -561,6 +561,9 @@ _XkbFilterPointerMove( XkbSrvInfoPtr xkbi,
int x,y;
Bool accel;
+ if (xkbi->device == inputInfo.keyboard)
+ return 0;
+
if (filter->keycode==0) { /* initial press */
filter->keycode = keycode;
filter->active = 1;
@@ -601,6 +604,9 @@ _XkbFilterPointerBtn( XkbSrvInfoPtr xkbi,
unsigned keycode,
XkbAction * pAction)
{
+ if (xkbi->device == inputInfo.keyboard)
+ return 0;
+
if (filter->keycode==0) { /* initial press */
int button= pAction->btn.button;
@@ -980,8 +986,11 @@ _XkbFilterSwitchScreen( XkbSrvInfoPtr xkbi,
unsigned keycode,
XkbAction * pAction)
{
+ DeviceIntPtr dev = xkbi->device;
+ if (dev == inputInfo.keyboard)
+ return 0;
+
if (filter->keycode==0) { /* initial press */
- DeviceIntPtr dev = xkbi->device;
filter->keycode = keycode;
filter->active = 1;
filter->filterOthers = 0;
@@ -1003,8 +1012,11 @@ _XkbFilterXF86Private( XkbSrvInfoPtr xkbi,
unsigned keycode,
XkbAction * pAction)
{
+ DeviceIntPtr dev = xkbi->device;
+ if (dev == inputInfo.keyboard)
+ return 0;
+
if (filter->keycode==0) { /* initial press */
- DeviceIntPtr dev = xkbi->device;
filter->keycode = keycode;
filter->active = 1;
filter->filterOthers = 0;
@@ -1029,6 +1041,9 @@ _XkbFilterDeviceBtn( XkbSrvInfoPtr xkbi,
DeviceIntPtr dev;
int button;
+ if (dev == inputInfo.keyboard)
+ return 0;
+
if (filter->keycode==0) { /* initial press */
dev= _XkbLookupButtonDevice(pAction->devbtn.device,NULL);
if ((!dev)||(!dev->public.on)||(&dev->public==LookupPointerDevice()))
commit 27da1367c9ea143946b8b8d3dbd0f9d44c4a9039
Author: Daniel Stone <daniel at fooishbar.org>
Date: Wed Dec 5 19:36:59 2007 +0000
WaitForSomething: Ignore EAGAIN
If select ever returns EAGAIN, don't bother complaining.
(cherry picked from commit 85dd8efac1bc0715f03c99d261b1c5d0980623e1)
diff --git a/os/WaitFor.c b/os/WaitFor.c
index ec1592c..65f53c5 100644
--- a/os/WaitFor.c
+++ b/os/WaitFor.c
@@ -262,7 +262,7 @@ WaitForSomething(int *pClientsReady)
FatalError("WaitForSomething(): select: errno=%d\n",
selecterr);
}
- else if (selecterr != EINTR)
+ else if (selecterr != EINTR && selecterr != EAGAIN)
{
ErrorF("WaitForSomething(): select: errno=%d\n",
selecterr);
commit 259f86b13b453f3503afd3d523de32b43996d334
Author: Rich Coe <Richard.Coe at med.ge.com>
Date: Wed Dec 5 19:36:37 2007 +0000
OS: Connection: Keep trying select while it gets interrupted (bug #9240)
If we got interrupted (EINTR or EAGAIN) during select, just try again, rather
than shutting clients down on either of these errors.
(cherry picked from commit b7f3618f3933a810778093fd47564a1e3bf3fde6)
diff --git a/os/connection.c b/os/connection.c
index 135dd2c..b944593 100644
--- a/os/connection.c
+++ b/os/connection.c
@@ -1006,7 +1006,9 @@ CheckConnections(void)
curclient = curoff + (i * (sizeof(fd_mask)*8));
FD_ZERO(&tmask);
FD_SET(curclient, &tmask);
- r = Select (curclient + 1, &tmask, NULL, NULL, ¬ime);
+ do {
+ r = Select (curclient + 1, &tmask, NULL, NULL, ¬ime);
+ } while (r < 0 && (errno == EINTR || errno == EAGAIN));
if (r < 0)
if (ConnectionTranslation[curclient] > 0)
CloseDownClient(clients[ConnectionTranslation[curclient]]);
@@ -1020,9 +1022,12 @@ CheckConnections(void)
curclient = XFD_FD(&savedAllClients, i);
FD_ZERO(&tmask);
FD_SET(curclient, &tmask);
- r = Select (curclient + 1, &tmask, NULL, NULL, ¬ime);
- if (r < 0 && GetConnectionTranslation(curclient) > 0)
- CloseDownClient(clients[GetConnectionTranslation(curclient)]);
+ do {
+ r = Select (curclient + 1, &tmask, NULL, NULL, ¬ime);
+ } while (r < 0 && (errno == EINTR || errno == EAGAIN));
+ if (r < 0)
+ if (GetConnectionTranslation(curclient) > 0)
+ CloseDownClient(clients[GetConnectionTranslation(curclient)]);
}
#endif
}
commit 90649e6a39dc6caad8313b25ef869a089f81aba7
Author: Rich Coe <Richard.Coe at med.ge.com>
Date: Wed Dec 5 19:31:07 2007 +0000
OS: Connection: Don't shut down disappeared clients (bug #7876)
If a client disappears in the middle of CheckConnections (presumably
because its appgroup leader disappears), then don't attempt to shut it down
a second time, when it's already vanished.
(cherry picked from commit d8b2cad3771a09860e7be1726f67e684cf7caeec)
diff --git a/os/connection.c b/os/connection.c
index d975f87..135dd2c 100644
--- a/os/connection.c
+++ b/os/connection.c
@@ -1008,7 +1008,8 @@ CheckConnections(void)
FD_SET(curclient, &tmask);
r = Select (curclient + 1, &tmask, NULL, NULL, ¬ime);
if (r < 0)
- CloseDownClient(clients[ConnectionTranslation[curclient]]);
+ if (ConnectionTranslation[curclient] > 0)
+ CloseDownClient(clients[ConnectionTranslation[curclient]]);
mask &= ~((fd_mask)1 << curoff);
}
}
commit 25d26b55e74b50a2fd0632329cb0bdca017fe8e6
Author: Kanru Chen <koster at debian.org.tw>
Date: Mon Dec 3 12:46:45 2007 +0000
Config: HAL: Fix XKB option parsing
Actually combine the XKB options into a string, rather than just repeatedly
writing a comma.
(cherry picked from commit da893908feb2dcf7c22420b3426ab3ac65c7ca99)
diff --git a/config/hal.c b/config/hal.c
index 6bb449d..4427deb 100644
--- a/config/hal.c
+++ b/config/hal.c
@@ -134,10 +134,11 @@ get_prop_string_array(LibHalContext *hal_ctx, const char *udi, const char *prop)
str = ret;
for (i = 0; props[i]; i++) {
- str = strcpy(str, props[i]);
+ strcpy(str, props[i]);
+ str += strlen(props[i]);
*str++ = ',';
}
- *str = '\0';
+ *(str-1) = '\0';
libhal_free_string_array(props);
}
commit b037e4a5abb878ad89e7f27c2b6c23004625f6c3
Author: Peter Harris <peter.harris at hummingbird.com>
Date: Mon Oct 29 18:05:19 2007 -0400
Add missing swaps in panoramiXSwap.c
(cherry picked from commit cb67a10b7f6f564e0345de19316934361ea28720)
diff --git a/Xext/panoramiXSwap.c b/Xext/panoramiXSwap.c
index da445ff..0487471 100644
--- a/Xext/panoramiXSwap.c
+++ b/Xext/panoramiXSwap.c
@@ -70,6 +70,7 @@ SProcPanoramiXGetState(ClientPtr client)
swaps (&stuff->length, n);
REQUEST_SIZE_MATCH(xPanoramiXGetStateReq);
+ swapl (&stuff->window, n);
return ProcPanoramiXGetState(client);
}
@@ -81,6 +82,7 @@ SProcPanoramiXGetScreenCount(ClientPtr client)
swaps (&stuff->length, n);
REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq);
+ swapl (&stuff->window, n);
return ProcPanoramiXGetScreenCount(client);
}
@@ -92,6 +94,8 @@ SProcPanoramiXGetScreenSize(ClientPtr client)
swaps (&stuff->length, n);
REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq);
+ swapl (&stuff->window, n);
+ swapl (&stuff->screen, n);
return ProcPanoramiXGetScreenSize(client);
}
commit 3e0993fcf38e47dd42c27a2dcb5dde7d23222ca8
Author: Daniel Stone <daniel at fooishbar.org>
Date: Fri Nov 30 20:35:26 2007 +0200
ProcessOtherEvent: Don't do double translation of button events
We already deal with the button mapping in GetPointerEvents, so don't
do the remapping again in ProcessOtherEvent.
(cherry picked from commit 7ff002fe3e229330216d7f2ff16cdabe63014bcd)
diff --git a/Xi/exevents.c b/Xi/exevents.c
index 377311e..7cf0c50 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -244,7 +244,7 @@ ProcessOtherEvent(xEventPtr xE, DeviceIntPtr other, int count)
other->valuator->motionHintWindow = NullWindow;
b->buttonsDown++;
b->motionMask = DeviceButtonMotionMask;
- xE->u.u.detail = b->map[key];
+ xE->u.u.detail = key;
if (xE->u.u.detail == 0)
return;
if (xE->u.u.detail <= 5)
@@ -266,7 +266,7 @@ ProcessOtherEvent(xEventPtr xE, DeviceIntPtr other, int count)
other->valuator->motionHintWindow = NullWindow;
if (b->buttonsDown >= 1 && !--b->buttonsDown)
b->motionMask = 0;
- xE->u.u.detail = b->map[key];
+ xE->u.u.detail = key;
if (xE->u.u.detail == 0)
return;
if (xE->u.u.detail <= 5)
More information about the xorg-commit
mailing list