intel-virtual-output: Do not hide the cursor on the local/source display

Whilst we want to take over and hide the cursor on the remote displays,
on the source we need to not interfere with the host.

Reported-by: Jethro Beekman <freedesktop-bugs@jbeekman.nl>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71439
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2013-11-10 10:34:06 +00:00
parent b3b02a879b
commit 7b0771180d
1 changed files with 8 additions and 4 deletions

View File

@ -1136,6 +1136,8 @@ static void display_flush_cursor(struct display *display)
y = display->cursor_y++ & 31;
}
DBG(("%s setting cursor position (%d, %d), visible? %d\n",
DisplayString(c->dst.dpy), x, y, display->cursor_visible));
XWarpPointer(display->dpy, None, display->root, 0, 0, 0, 0, x, y);
cursor = None;
@ -1680,6 +1682,7 @@ static int clone_init_depth(struct clone *clone)
static int add_display(struct context *ctx, Display *dpy)
{
struct display *display;
int first_display = ctx->ndisplay == 0;
if (is_power_of_2(ctx->ndisplay)) {
struct display *new_display;
@ -1719,10 +1722,11 @@ static int add_display(struct context *ctx, Display *dpy)
if (XineramaQueryExtension(dpy, &display->xinerama_event, &display->xinerama_error))
display->xinerama_active = XineramaIsActive(dpy);
display->invisible_cursor = display_load_invisible_cursor(display);
display->cursor = None;
display_cursor_move(display, 0, 0, 0);
/* first display (source) is slightly special */
if (!first_display) {
display->invisible_cursor = display_load_invisible_cursor(display);
display_cursor_move(display, 0, 0, 0);
}
return ConnectionNumber(dpy);
}