mirror of https://github.com/encounter/SDL.git
x11: make sure SDL_GetGlobalMouseState notices mouse warping through SDL APIs.
This commit is contained in:
parent
0782f9be51
commit
c9e73c3e00
|
@ -308,23 +308,27 @@ X11_ShowCursor(SDL_Cursor * cursor)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
WarpMouseInternal(Window xwindow, const int x, const int y)
|
||||
{
|
||||
SDL_VideoData *videodata = (SDL_VideoData *) SDL_GetVideoDevice()->driverdata;
|
||||
Display *display = videodata->display;
|
||||
X11_XWarpPointer(display, None, xwindow, 0, 0, 0, 0, x, y);
|
||||
X11_XSync(display, False);
|
||||
videodata->global_mouse_changed = SDL_TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
X11_WarpMouse(SDL_Window * window, int x, int y)
|
||||
{
|
||||
SDL_WindowData *data = (SDL_WindowData *) window->driverdata;
|
||||
Display *display = data->videodata->display;
|
||||
|
||||
X11_XWarpPointer(display, None, data->xwindow, 0, 0, 0, 0, x, y);
|
||||
X11_XSync(display, False);
|
||||
WarpMouseInternal(data->xwindow, x, y);
|
||||
}
|
||||
|
||||
static int
|
||||
X11_WarpMouseGlobal(int x, int y)
|
||||
{
|
||||
Display *display = GetDisplay();
|
||||
|
||||
X11_XWarpPointer(display, None, DefaultRootWindow(display), 0, 0, 0, 0, x, y);
|
||||
X11_XSync(display, False);
|
||||
WarpMouseInternal(DefaultRootWindow(GetDisplay()), x, y);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue