aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/xkb/xkbActions.c
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2010-07-02 14:40:53 +0000
committermarha <marha@users.sourceforge.net>2010-07-02 14:40:53 +0000
commitbb10a5eb99178daa575d5365c8588d891e9988be (patch)
tree8116bb4cbcf79d17b3ae6f4946cd547d14b979ed /xorg-server/xkb/xkbActions.c
parent1faa0f175bda9074b5f45e5e005d9a80721e3c24 (diff)
parent63a788caa35b080bde1307fc6d5715dec091fe38 (diff)
downloadvcxsrv-bb10a5eb99178daa575d5365c8588d891e9988be.tar.gz
vcxsrv-bb10a5eb99178daa575d5365c8588d891e9988be.tar.bz2
vcxsrv-bb10a5eb99178daa575d5365c8588d891e9988be.zip
svn merge ^/branches/released .
Diffstat (limited to 'xorg-server/xkb/xkbActions.c')
-rw-r--r--xorg-server/xkb/xkbActions.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/xorg-server/xkb/xkbActions.c b/xorg-server/xkb/xkbActions.c
index d631b3286..294a2db9a 100644
--- a/xorg-server/xkb/xkbActions.c
+++ b/xorg-server/xkb/xkbActions.c
@@ -41,11 +41,12 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "xkb.h"
#include <ctype.h>
#include "mi.h"
+#include "mipointer.h"
#define EXTENSION_EVENT_BASE 64
DevPrivateKeyRec xkbDevicePrivateKeyRec;
-static void XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button);
+void XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button);
static void XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y);
void
@@ -500,9 +501,6 @@ _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;
@@ -1340,13 +1338,17 @@ XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y)
EventListPtr events;
int nevents, i;
DeviceIntPtr ptr;
+ ScreenPtr pScreen;
+ Bool saveWait;
int gpe_flags = 0;
int Point[]={x, y};
- if (!dev->u.master)
+ if (IsMaster(dev))
+ ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER));
+ else if (!dev->u.master)
ptr = dev;
else
- ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER));
+ return;
if (flags & XkbSA_MoveAbsoluteX || flags & XkbSA_MoveAbsoluteY)
gpe_flags = POINTER_ABSOLUTE;
@@ -1355,9 +1357,12 @@ XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y)
events = InitEventList(GetMaximumEventsNum());
OsBlockSignals();
+ pScreen = miPointerGetScreen(ptr);
+ saveWait = miPointerSetWaitForUpdate(pScreen, FALSE);
nevents = GetPointerEvents(events, ptr,
MotionNotify, 0,
gpe_flags, 0, 2, Point);
+ miPointerSetWaitForUpdate(pScreen, saveWait);
OsReleaseSignals();
for (i = 0; i < nevents; i++)
@@ -1366,7 +1371,7 @@ XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y)
FreeEventList(events, GetMaximumEventsNum());
}
-static void
+void
XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button)
{
EventListPtr events;