@@ -709,6 +709,7 @@ ephyrPreserve(KdCardInfo * card)
Bool
ephyrEnable(ScreenPtr pScreen)
{
+ SetNotifyFd(hostx_get_fd(), ephyrXcbNotify, X_NOTIFY_READ, NULL);
return TRUE;
}
@@ -721,6 +722,7 @@ ephyrDPMS(ScreenPtr pScreen, int mode)
void
ephyrDisable(ScreenPtr pScreen)
{
+ RemoveNotifyFd(hostx_get_fd());
}
void
@@ -1257,7 +1259,6 @@ static Status
MouseEnable(KdPointerInfo * pi)
{
((EphyrPointerPrivate *) pi->driverPrivate)->enabled = TRUE;
- SetNotifyFd(hostx_get_fd(), ephyrXcbNotify, X_NOTIFY_READ, NULL);
return Success;
}
@@ -1265,7 +1266,6 @@ static void
MouseDisable(KdPointerInfo * pi)
{
((EphyrPointerPrivate *) pi->driverPrivate)->enabled = FALSE;
- RemoveNotifyFd(hostx_get_fd());
return;
}
@@ -431,16 +431,17 @@ hostx_init(void)
xcb_screen_t *xscreen;
xcb_rectangle_t rect = { 0, 0, 1, 1 };
- attrs[0] =
- XCB_EVENT_MASK_BUTTON_PRESS
- | XCB_EVENT_MASK_BUTTON_RELEASE
- | XCB_EVENT_MASK_POINTER_MOTION
- | XCB_EVENT_MASK_KEY_PRESS
- | XCB_EVENT_MASK_KEY_RELEASE
- | XCB_EVENT_MASK_EXPOSURE
- | XCB_EVENT_MASK_STRUCTURE_NOTIFY;
+ attrs[0] = XCB_EVENT_MASK_EXPOSURE
+ | XCB_EVENT_MASK_STRUCTURE_NOTIFY;
attr_mask |= XCB_CW_EVENT_MASK;
+ if (!SeatId)
+ attrs[0] |= XCB_EVENT_MASK_BUTTON_PRESS
+ | XCB_EVENT_MASK_BUTTON_RELEASE
+ | XCB_EVENT_MASK_POINTER_MOTION
+ | XCB_EVENT_MASK_KEY_PRESS
+ | XCB_EVENT_MASK_KEY_RELEASE;
+
EPHYR_DBG("mark");
#ifdef GLAMOR
if (ephyr_glamor)
When Xephyr is launched in multi-seat mode (i.e. with command-line option "-seat seatXXXX"), ephyr virtual keyboard/mouse driver is not loaded. Without this patch, Xephyr won't listen to any events in multi-seat mode, including XCB_EXPOSE and XCB_CONFIGURE_NOTIFY, which may be needed even for this mode. v2: Don't register XCB input events when creating a new Xephyr window, if -seat option is passed. v3: Assume function hostx_create_window() was removed by previous patch. Signed-off-by: Laércio de Sousa <laerciosousa@sme-mogidascruzes.sp.gov.br> --- hw/kdrive/ephyr/ephyr.c | 4 ++-- hw/kdrive/ephyr/hostx.c | 17 +++++++++-------- 2 files changed, 11 insertions(+), 10 deletions(-)