diff options
author | marha <marha@users.sourceforge.net> | 2011-11-04 09:28:39 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2011-11-04 09:28:39 +0100 |
commit | 23e2767dc3e6b8891d4b55b711c70c6bc85a6f85 (patch) | |
tree | 04c538697c3afbd401afb1bb614460b16be28844 /xorg-server/dix/devices.c | |
parent | 125500b44d0253d7fd7a59905ab730151d4f66e2 (diff) | |
parent | 02f377d5e2dd18537d0807ad63675a0970b5a37d (diff) | |
download | vcxsrv-23e2767dc3e6b8891d4b55b711c70c6bc85a6f85.tar.gz vcxsrv-23e2767dc3e6b8891d4b55b711c70c6bc85a6f85.tar.bz2 vcxsrv-23e2767dc3e6b8891d4b55b711c70c6bc85a6f85.zip |
Merge remote-tracking branch 'origin/released'
Conflicts:
mesalib/src/mesa/drivers/dri/swrast/swrast_priv.h
xorg-server/hw/xwin/InitOutput.c
xorg-server/hw/xwin/ddraw.h
xorg-server/hw/xwin/winclipboardwndproc.c
xorg-server/hw/xwin/winglobals.c
xorg-server/hw/xwin/winmonitors.c
xorg-server/hw/xwin/winprocarg.c
xorg-server/hw/xwin/winwin32rootlesswndproc.c
xorg-server/include/scrnintstr.h
xorg-server/xkb/ddxList.c
xorg-server/xkb/ddxLoad.c
Diffstat (limited to 'xorg-server/dix/devices.c')
-rw-r--r-- | xorg-server/dix/devices.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/xorg-server/dix/devices.c b/xorg-server/dix/devices.c index c8ae230cd..d8ba82faa 100644 --- a/xorg-server/dix/devices.c +++ b/xorg-server/dix/devices.c @@ -616,6 +616,7 @@ CorePointerProc(DeviceIntPtr pDev, int what) int i = 0; Atom btn_labels[NBUTTONS] = {0}; Atom axes_labels[NAXES] = {0}; + ScreenPtr scr = screenInfo.screens[0]; switch (what) { case DEVICE_INIT: @@ -642,10 +643,11 @@ CorePointerProc(DeviceIntPtr pDev, int what) pDev->name); return BadAlloc; /* IPDS only fails on allocs */ } - pDev->valuator->axisVal[0] = screenInfo.screens[0]->width / 2; - pDev->last.valuators[0] = pDev->valuator->axisVal[0]; - pDev->valuator->axisVal[1] = screenInfo.screens[0]->height / 2; - pDev->last.valuators[1] = pDev->valuator->axisVal[1]; + /* axisVal is per-screen, last.valuators is desktop-wide */ + pDev->valuator->axisVal[0] = scr->width / 2; + pDev->last.valuators[0] = pDev->valuator->axisVal[0] + scr->x; + pDev->valuator->axisVal[1] = scr->height / 2; + pDev->last.valuators[1] = pDev->valuator->axisVal[1] + scr->y; break; case DEVICE_CLOSE: @@ -989,6 +991,8 @@ CloseDownDevices(void) { DeviceIntPtr dev; + OsBlockSignals(); + /* Float all SDs before closing them. Note that at this point resources * (e.g. cursors) have been freed already, so we can't just call * AttachDevice(NULL, dev, NULL). Instead, we have to forcibly set master @@ -1015,6 +1019,8 @@ CloseDownDevices(void) inputInfo.keyboard = NULL; inputInfo.pointer = NULL; XkbDeleteRulesDflts(); + + OsReleaseSignals(); } /** |