mirror of
https://github.com/brl/mutter.git
synced 2024-11-22 16:10:41 -05:00
window: Trap X11 warp pointer errors on MetaBackendX11
Only the X11 backend cares about trapping X11 errors when warping pointers, and there is no reason for it to be done by MetaWindow. Move the push()/pop() calls to MetaBackendX11, and simplify warp_grab_pointer() by removing the boolean return value that is not being used anywhere. https://gitlab.gnome.org/GNOME/mutter/merge_requests/372
This commit is contained in:
parent
ed7fc825e1
commit
4504a313f7
@ -52,6 +52,7 @@
|
|||||||
#include "compositor/compositor-private.h"
|
#include "compositor/compositor-private.h"
|
||||||
#include "core/display-private.h"
|
#include "core/display-private.h"
|
||||||
#include "meta/meta-cursor-tracker.h"
|
#include "meta/meta-cursor-tracker.h"
|
||||||
|
#include "meta/meta-x11-errors.h"
|
||||||
#include "meta/util.h"
|
#include "meta/util.h"
|
||||||
|
|
||||||
struct _MetaBackendX11Private
|
struct _MetaBackendX11Private
|
||||||
@ -598,6 +599,10 @@ meta_backend_x11_warp_pointer (MetaBackend *backend,
|
|||||||
{
|
{
|
||||||
MetaBackendX11 *x11 = META_BACKEND_X11 (backend);
|
MetaBackendX11 *x11 = META_BACKEND_X11 (backend);
|
||||||
MetaBackendX11Private *priv = meta_backend_x11_get_instance_private (x11);
|
MetaBackendX11Private *priv = meta_backend_x11_get_instance_private (x11);
|
||||||
|
MetaDisplay *display = meta_get_display ();
|
||||||
|
|
||||||
|
if (display)
|
||||||
|
meta_x11_error_trap_push (display->x11_display);
|
||||||
|
|
||||||
XIWarpPointer (priv->xdisplay,
|
XIWarpPointer (priv->xdisplay,
|
||||||
META_VIRTUAL_CORE_POINTER_ID,
|
META_VIRTUAL_CORE_POINTER_ID,
|
||||||
@ -605,6 +610,10 @@ meta_backend_x11_warp_pointer (MetaBackend *backend,
|
|||||||
meta_backend_x11_get_xwindow (x11),
|
meta_backend_x11_get_xwindow (x11),
|
||||||
0, 0, 0, 0,
|
0, 0, 0, 0,
|
||||||
x, y);
|
x, y);
|
||||||
|
|
||||||
|
if (display &&
|
||||||
|
meta_x11_error_trap_pop_with_return (display->x11_display) != Success)
|
||||||
|
meta_verbose ("Failed to warp pointer\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static MetaLogicalMonitor *
|
static MetaLogicalMonitor *
|
||||||
|
@ -82,7 +82,6 @@
|
|||||||
#include "meta/group.h"
|
#include "meta/group.h"
|
||||||
#include "meta/meta-cursor-tracker.h"
|
#include "meta/meta-cursor-tracker.h"
|
||||||
#include "meta/meta-enum-types.h"
|
#include "meta/meta-enum-types.h"
|
||||||
#include "meta/meta-x11-errors.h"
|
|
||||||
#include "meta/prefs.h"
|
#include "meta/prefs.h"
|
||||||
#include "ui/ui.h"
|
#include "ui/ui.h"
|
||||||
#include "x11/meta-x11-display-private.h"
|
#include "x11/meta-x11-display-private.h"
|
||||||
@ -6811,7 +6810,7 @@ meta_window_is_ancestor_of_transient (MetaWindow *window,
|
|||||||
/* Warp pointer to location appropriate for grab,
|
/* Warp pointer to location appropriate for grab,
|
||||||
* return root coordinates where pointer ended up.
|
* return root coordinates where pointer ended up.
|
||||||
*/
|
*/
|
||||||
static gboolean
|
static void
|
||||||
warp_grab_pointer (MetaWindow *window,
|
warp_grab_pointer (MetaWindow *window,
|
||||||
MetaGrabOp grab_op,
|
MetaGrabOp grab_op,
|
||||||
int *x,
|
int *x,
|
||||||
@ -6852,8 +6851,6 @@ warp_grab_pointer (MetaWindow *window,
|
|||||||
*x = CLAMP (*x, 0, display_rect.width - 1);
|
*x = CLAMP (*x, 0, display_rect.width - 1);
|
||||||
*y = CLAMP (*y, 0, display_rect.height - 1);
|
*y = CLAMP (*y, 0, display_rect.height - 1);
|
||||||
|
|
||||||
meta_x11_error_trap_push (display->x11_display);
|
|
||||||
|
|
||||||
meta_topic (META_DEBUG_WINDOW_OPS,
|
meta_topic (META_DEBUG_WINDOW_OPS,
|
||||||
"Warping pointer to %d,%d with window at %d,%d\n",
|
"Warping pointer to %d,%d with window at %d,%d\n",
|
||||||
*x, *y, rect.x, rect.y);
|
*x, *y, rect.x, rect.y);
|
||||||
@ -6869,19 +6866,8 @@ warp_grab_pointer (MetaWindow *window,
|
|||||||
meta_window_get_frame_rect (window,
|
meta_window_get_frame_rect (window,
|
||||||
&display->grab_anchor_window_pos);
|
&display->grab_anchor_window_pos);
|
||||||
|
|
||||||
{
|
|
||||||
MetaBackend *backend = meta_get_backend ();
|
|
||||||
meta_backend_warp_pointer (backend, *x, *y);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (meta_x11_error_trap_pop_with_return (display->x11_display) != Success)
|
meta_backend_warp_pointer (meta_get_backend (), *x, *y);
|
||||||
{
|
|
||||||
meta_verbose ("Failed to warp pointer for window %s\n",
|
|
||||||
window->desc);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
Reference in New Issue
Block a user