diff options
Diffstat (limited to 'xorg-server')
-rw-r--r-- | xorg-server/hw/kdrive/ephyr/ephyr.c | 9 | ||||
-rw-r--r-- | xorg-server/hw/kdrive/ephyr/hostx.c | 4 | ||||
-rw-r--r-- | xorg-server/hw/kdrive/src/kdrive.c | 3 | ||||
-rw-r--r-- | xorg-server/hw/kdrive/src/kdrive.h | 1 | ||||
-rw-r--r-- | xorg-server/hw/kdrive/src/kinput.c | 10 | ||||
-rw-r--r-- | xorg-server/hw/xfree86/modes/xf86Crtc.c | 3 | ||||
-rw-r--r-- | xorg-server/include/input.h | 12 | ||||
-rw-r--r-- | xorg-server/mi/mieq.c | 2 | ||||
-rw-r--r-- | xorg-server/test/Makefile.am | 4 |
9 files changed, 31 insertions, 17 deletions
diff --git a/xorg-server/hw/kdrive/ephyr/ephyr.c b/xorg-server/hw/kdrive/ephyr/ephyr.c index 91e949d79..ef4b3210c 100644 --- a/xorg-server/hw/kdrive/ephyr/ephyr.c +++ b/xorg-server/hw/kdrive/ephyr/ephyr.c @@ -959,7 +959,14 @@ ephyrProcessMouseMotion(xcb_generic_event_t *xev) } EPHYR_LOG("final (x,y):(%d,%d)\n", x, y); #endif - KdEnqueuePointerEvent(ephyrMouse, mouseState, x, y, 0); + + /* convert coords into desktop-wide coordinates. + * fill_pointer_events will convert that back to + * per-screen coordinates where needed */ + x += screen->pScreen->x; + y += screen->pScreen->y; + + KdEnqueuePointerEvent(ephyrMouse, mouseState | KD_POINTER_DESKTOP, x, y, 0); } } diff --git a/xorg-server/hw/kdrive/ephyr/hostx.c b/xorg-server/hw/kdrive/ephyr/hostx.c index ee9ae455c..3e01a4770 100644 --- a/xorg-server/hw/kdrive/ephyr/hostx.c +++ b/xorg-server/hw/kdrive/ephyr/hostx.c @@ -304,8 +304,8 @@ hostx_init(void) | XCB_EVENT_MASK_STRUCTURE_NOTIFY; EPHYR_DBG("mark"); - - if ((HostX.conn = xcb_connect(NULL, &HostX.screen)) == NULL) { + HostX.conn = xcb_connect(NULL, &HostX.screen); + if (xcb_connection_has_error(HostX.conn)) { fprintf(stderr, "\nXephyr cannot open host display. Is DISPLAY set?\n"); exit(1); } diff --git a/xorg-server/hw/kdrive/src/kdrive.c b/xorg-server/hw/kdrive/src/kdrive.c index f8949bec3..382968420 100644 --- a/xorg-server/hw/kdrive/src/kdrive.c +++ b/xorg-server/hw/kdrive/src/kdrive.c @@ -328,7 +328,8 @@ KdParseScreen(KdScreenInfo * screen, const char *arg) screen->height = pixels; screen->height_mm = mm; } - if (delim != 'x' && delim != '@' && delim != 'X' && delim != 'Y') + if (delim != 'x' && delim != '@' && delim != 'X' && delim != 'Y' && + (delim != '\0' || i == 0)) return; } diff --git a/xorg-server/hw/kdrive/src/kdrive.h b/xorg-server/hw/kdrive/src/kdrive.h index d5d0799df..296d611ed 100644 --- a/xorg-server/hw/kdrive/src/kdrive.h +++ b/xorg-server/hw/kdrive/src/kdrive.h @@ -506,6 +506,7 @@ KdEnqueueKeyboardEvent(KdKeyboardInfo * ki, unsigned char scan_code, #define KD_BUTTON_4 0x08 #define KD_BUTTON_5 0x10 #define KD_BUTTON_8 0x80 +#define KD_POINTER_DESKTOP 0x40000000 #define KD_MOUSE_DELTA 0x80000000 void diff --git a/xorg-server/hw/kdrive/src/kinput.c b/xorg-server/hw/kdrive/src/kinput.c index d845830cc..a9a9fa583 100644 --- a/xorg-server/hw/kdrive/src/kinput.c +++ b/xorg-server/hw/kdrive/src/kinput.c @@ -1895,6 +1895,8 @@ KdEnqueuePointerEvent(KdPointerInfo * pi, unsigned long flags, int rx, int ry, } else { dixflags = POINTER_ABSOLUTE; + if (flags & KD_POINTER_DESKTOP) + dixflags |= POINTER_DESKTOP; if (x != pi->dixdev->last.valuators[0] || y != pi->dixdev->last.valuators[1]) _KdEnqueuePointerEvent(pi, MotionNotify, x, y, z, 0, dixflags, @@ -2028,25 +2030,25 @@ KdCursorOffScreen(ScreenPtr *ppScreen, int *x, int *y) dx = KdScreenOrigin(pNewScreen)->x - KdScreenOrigin(pScreen)->x; dy = KdScreenOrigin(pNewScreen)->y - KdScreenOrigin(pScreen)->y; if (*x < 0) { - if (dx <= 0 && -dx < best_x) { + if (dx < 0 && -dx < best_x) { best_x = -dx; n_best_x = n; } } else if (*x >= pScreen->width) { - if (dx >= 0 && dx < best_x) { + if (dx > 0 && dx < best_x) { best_x = dx; n_best_x = n; } } if (*y < 0) { - if (dy <= 0 && -dy < best_y) { + if (dy < 0 && -dy < best_y) { best_y = -dy; n_best_y = n; } } else if (*y >= pScreen->height) { - if (dy >= 0 && dy < best_y) { + if (dy > 0 && dy < best_y) { best_y = dy; n_best_y = n; } diff --git a/xorg-server/hw/xfree86/modes/xf86Crtc.c b/xorg-server/hw/xfree86/modes/xf86Crtc.c index 2a02c8507..a441fd16a 100644 --- a/xorg-server/hw/xfree86/modes/xf86Crtc.c +++ b/xorg-server/hw/xfree86/modes/xf86Crtc.c @@ -1863,6 +1863,9 @@ SetCompatOutput(xf86CrtcConfigPtr config) DisplayModePtr maxmode = NULL, testmode, mode; int o, compat = -1, count, mincount = 0; + if (config->num_output == 0) + return NULL; + /* Look for one that's definitely connected */ for (o = 0; o < config->num_output; o++) { test = config->output[o]; diff --git a/xorg-server/include/input.h b/xorg-server/include/input.h index 350dabad4..2d5e531ef 100644 --- a/xorg-server/include/input.h +++ b/xorg-server/include/input.h @@ -244,12 +244,12 @@ typedef struct _InputAttributes { #define KEY_POSTED 2 #define BUTTON_POSTED 2 -extern void set_key_down(DeviceIntPtr pDev, int key_code, int type); -extern void set_key_up(DeviceIntPtr pDev, int key_code, int type); -extern int key_is_down(DeviceIntPtr pDev, int key_code, int type); -extern void set_button_down(DeviceIntPtr pDev, int button, int type); -extern void set_button_up(DeviceIntPtr pDev, int button, int type); -extern int button_is_down(DeviceIntPtr pDev, int button, int type); +extern _X_EXPORT void set_key_down(DeviceIntPtr pDev, int key_code, int type); +extern _X_EXPORT void set_key_up(DeviceIntPtr pDev, int key_code, int type); +extern _X_EXPORT int key_is_down(DeviceIntPtr pDev, int key_code, int type); +extern _X_EXPORT void set_button_down(DeviceIntPtr pDev, int button, int type); +extern _X_EXPORT void set_button_up(DeviceIntPtr pDev, int button, int type); +extern _X_EXPORT int button_is_down(DeviceIntPtr pDev, int button, int type); extern void InitCoreDevices(void); extern void InitXTestDevices(void); diff --git a/xorg-server/mi/mieq.c b/xorg-server/mi/mieq.c index d7d73deb6..4c0748054 100644 --- a/xorg-server/mi/mieq.c +++ b/xorg-server/mi/mieq.c @@ -60,7 +60,7 @@ in this Software without prior written authorization from The Open Group. #endif /* Maximum size should be initial size multiplied by a power of 2 */ -#define QUEUE_INITIAL_SIZE 256 +#define QUEUE_INITIAL_SIZE 512 #define QUEUE_RESERVED_SIZE 64 #define QUEUE_MAXIMUM_SIZE 4096 #define QUEUE_DROP_BACKTRACE_FREQUENCY 100 diff --git a/xorg-server/test/Makefile.am b/xorg-server/test/Makefile.am index e59c412ee..2852bb3e0 100644 --- a/xorg-server/test/Makefile.am +++ b/xorg-server/test/Makefile.am @@ -1,11 +1,11 @@ if ENABLE_UNIT_TESTS SUBDIRS= . -noinst_PROGRAMS = list string touch +noinst_PROGRAMS = list string if XORG # Tests that require at least some DDX functions in order to fully link # For now, requires xf86 ddx, could be adjusted to use another SUBDIRS += xi2 -noinst_PROGRAMS += xkb input xtest misc fixes xfree86 hashtabletest os signal-logging +noinst_PROGRAMS += xkb input xtest misc fixes xfree86 hashtabletest os signal-logging touch endif check_LTLIBRARIES = libxservertest.la |