diff options
Diffstat (limited to 'xorg-server/dix/getevents.c')
-rw-r--r-- | xorg-server/dix/getevents.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/xorg-server/dix/getevents.c b/xorg-server/dix/getevents.c index bc7ffa63b..5e6963fe4 100644 --- a/xorg-server/dix/getevents.c +++ b/xorg-server/dix/getevents.c @@ -70,6 +70,17 @@ #include "listdev.h" /* for sizing up DeviceClassesChangedEvent */ #include "probes.h" +#ifdef _MSC_VER +#include <math.h> + +double roundd(double f) +{ + return ((f<0.0) ? ceil(f-.5) : floor (f+.5)); +} +#define lroundf(val) ((int)roundf(val)) +#define lround(val) ((int)roundd(val)) +#endif + /* Number of motion history events to store. */ #define MOTION_HISTORY_SIZE 256 @@ -1096,7 +1107,7 @@ GetKeyboardEvents(InternalEvent *events, DeviceIntPtr pDev, int type, #endif /* refuse events from disabled devices */ - if (!pDev->enabled) + if (!pDev || !pDev->enabled) return 0; if (!events || !pDev->key || !pDev->focus || !pDev->kbdfeed || @@ -1201,7 +1212,12 @@ FreeEventList(InternalEvent *list, int num_events) static void transform(struct pixman_f_transform *m, double *x, double *y) { - struct pixman_f_vector p = {.v = {*x, *y, 1} }; + struct pixman_f_vector p; + + p.v[0] = *x; + p.v[1] = *y; + p.v[2] = 1; + pixman_f_transform_point(m, &p); *x = p.v[0]; |