Switch meta_error_trap functions to MetaX11Display

They are X11 specific functions, used for X11 code. They have been
improved per jadahl's suggestion to use gdk_x11_lookup_xdisplay and
gdk_x11_display_error_trap_* functions, instead of current code.

https://bugzilla.gnome.org/show_bug.cgi?id=759538
This commit is contained in:
Armin Krezović
2017-08-26 18:27:50 +02:00
committed by Jonas Ådahl
parent 18779109de
commit dacc041d0c
21 changed files with 185 additions and 170 deletions

View File

@@ -1534,7 +1534,7 @@ request_xserver_input_focus_change (MetaDisplay *display,
if (meta_display_timestamp_too_old (display, &timestamp))
return;
meta_error_trap_push (display);
meta_error_trap_push (display->x11_display);
/* In order for mutter to know that the focus request succeeded, we track
* the serial of the "focus request" we made, but if we take the serial
@@ -1567,7 +1567,7 @@ request_xserver_input_focus_change (MetaDisplay *display,
serial,
TRUE);
meta_error_trap_pop (display);
meta_error_trap_pop (display->x11_display);
display->last_focus_time = timestamp;
@@ -2091,13 +2091,13 @@ meta_display_update_active_window_hint (MetaDisplay *display)
else
data[0] = None;
meta_error_trap_push (display);
meta_error_trap_push (display->x11_display);
XChangeProperty (display->x11_display->xdisplay,
display->x11_display->xroot,
display->x11_display->atom__NET_ACTIVE_WINDOW,
XA_WINDOW,
32, PropModeReplace, (guchar*) data, 1);
meta_error_trap_pop (display);
meta_error_trap_pop (display->x11_display);
}
void

View File

@@ -26,10 +26,10 @@
#include <config.h>
#include <meta/errors.h>
#include "display-private.h"
#include <errno.h>
#include <stdlib.h>
#include <gdk/gdk.h>
#include <gdk/gdkx.h>
#include "x11/meta-x11-display-private.h"
/* In GTK+-3.0, the error trapping code was significantly rewritten. The new code
* has some neat features (like knowing automatically if a sync is needed or not
@@ -44,19 +44,34 @@
*/
void
meta_error_trap_push (MetaDisplay *display)
meta_error_trap_push (MetaX11Display *x11_display)
{
gdk_error_trap_push ();
GdkDisplay *gdk_display;
gdk_display = gdk_x11_lookup_xdisplay (x11_display->xdisplay);
g_assert (gdk_display != NULL);
gdk_x11_display_error_trap_push (gdk_display);
}
void
meta_error_trap_pop (MetaDisplay *display)
meta_error_trap_pop (MetaX11Display *x11_display)
{
gdk_error_trap_pop_ignored ();
GdkDisplay *gdk_display;
gdk_display = gdk_x11_lookup_xdisplay (x11_display->xdisplay);
g_assert (gdk_display != NULL);
gdk_x11_display_error_trap_pop_ignored (gdk_display);
}
int
meta_error_trap_pop_with_return (MetaDisplay *display)
meta_error_trap_pop_with_return (MetaX11Display *x11_display)
{
return gdk_error_trap_pop ();
GdkDisplay *gdk_display;
gdk_display = gdk_x11_lookup_xdisplay (x11_display->xdisplay);
g_assert (gdk_display != NULL);
return gdk_x11_display_error_trap_pop (gdk_display);
}

View File

@@ -87,7 +87,7 @@ meta_window_ensure_frame (MetaWindow *window)
meta_display_register_x_window (window->display, &frame->xwindow, window);
meta_error_trap_push (window->display);
meta_error_trap_push (x11_display);
if (window->mapped)
{
window->mapped = FALSE; /* the reparent will unmap the window,
@@ -107,7 +107,7 @@ meta_window_ensure_frame (MetaWindow *window)
frame->child_x,
frame->child_y);
/* FIXME handle this error */
meta_error_trap_pop (window->display);
meta_error_trap_pop (x11_display);
/* stick frame to the window */
window->frame = frame;
@@ -174,7 +174,7 @@ meta_window_destroy_frame (MetaWindow *window)
/* Unparent the client window; it may be destroyed,
* thus the error trap.
*/
meta_error_trap_push (window->display);
meta_error_trap_push (x11_display);
if (window->mapped)
{
window->mapped = FALSE; /* Keep track of unmapping it, so we
@@ -197,7 +197,7 @@ meta_window_destroy_frame (MetaWindow *window)
*/
window->frame->rect.x + borders.invisible.left,
window->frame->rect.y + borders.invisible.top);
meta_error_trap_pop (window->display);
meta_error_trap_pop (x11_display);
meta_ui_frame_unmanage (frame->ui_frame);

View File

@@ -3065,7 +3065,7 @@ handle_panel (MetaDisplay *display,
"off due to keybinding press\n", event->time);
display->mouse_mode = FALSE;
meta_error_trap_push (display);
meta_error_trap_push (x11_display);
/* Release the grab for the panel before sending the event */
XUngrabKeyboard (x11_display->xdisplay, event->time);
@@ -3076,7 +3076,7 @@ handle_panel (MetaDisplay *display,
StructureNotifyMask,
(XEvent*) &ev);
meta_error_trap_pop (display);
meta_error_trap_pop (x11_display);
}
static void

View File

@@ -582,10 +582,10 @@ take_manager_selection (MetaDisplay *display,
if (should_replace)
{
/* We want to find out when the current selection owner dies */
meta_error_trap_push (display);
meta_error_trap_push (x11_display);
attrs.event_mask = StructureNotifyMask;
XChangeWindowAttributes (x11_display->xdisplay, current_owner, CWEventMask, &attrs);
if (meta_error_trap_pop_with_return (display) != Success)
if (meta_error_trap_pop_with_return (x11_display) != Success)
current_owner = None; /* don't wait for it to die later on */
}
else
@@ -970,13 +970,13 @@ set_number_of_spaces_hint (MetaScreen *screen,
meta_verbose ("Setting _NET_NUMBER_OF_DESKTOPS to %lu\n", data[0]);
meta_error_trap_push (screen->display);
meta_error_trap_push (x11_display);
XChangeProperty (x11_display->xdisplay,
x11_display->xroot,
x11_display->atom__NET_NUMBER_OF_DESKTOPS,
XA_CARDINAL,
32, PropModeReplace, (guchar*) data, 1);
meta_error_trap_pop (screen->display);
meta_error_trap_pop (x11_display);
}
static void
@@ -993,13 +993,13 @@ set_desktop_geometry_hint (MetaScreen *screen)
meta_verbose ("Setting _NET_DESKTOP_GEOMETRY to %lu, %lu\n", data[0], data[1]);
meta_error_trap_push (screen->display);
meta_error_trap_push (x11_display);
XChangeProperty (x11_display->xdisplay,
x11_display->xroot,
x11_display->atom__NET_DESKTOP_GEOMETRY,
XA_CARDINAL,
32, PropModeReplace, (guchar*) data, 2);
meta_error_trap_pop (screen->display);
meta_error_trap_pop (x11_display);
}
static void
@@ -1019,13 +1019,13 @@ set_desktop_viewport_hint (MetaScreen *screen)
meta_verbose ("Setting _NET_DESKTOP_VIEWPORT to 0, 0\n");
meta_error_trap_push (screen->display);
meta_error_trap_push (x11_display);
XChangeProperty (x11_display->xdisplay,
x11_display->xroot,
x11_display->atom__NET_DESKTOP_VIEWPORT,
XA_CARDINAL,
32, PropModeReplace, (guchar*) data, 2);
meta_error_trap_pop (screen->display);
meta_error_trap_pop (x11_display);
}
void
@@ -1785,14 +1785,14 @@ set_workspace_names (MetaScreen *screen)
++i;
}
meta_error_trap_push (screen->display);
meta_error_trap_push (x11_display);
XChangeProperty (x11_display->xdisplay,
x11_display->xroot,
x11_display->atom__NET_DESKTOP_NAMES,
x11_display->atom_UTF8_STRING,
8, PropModeReplace,
(unsigned char *)flattened->str, flattened->len);
meta_error_trap_pop (screen->display);
meta_error_trap_pop (x11_display);
g_string_free (flattened, TRUE);
}
@@ -1860,14 +1860,14 @@ set_work_area_hint (MetaScreen *screen)
tmp += 4;
}
meta_error_trap_push (screen->display);
meta_error_trap_push (x11_display);
XChangeProperty (x11_display->xdisplay,
x11_display->xroot,
x11_display->atom__NET_WORKAREA,
XA_CARDINAL, 32, PropModeReplace,
(guchar*) data, num_workspaces*4);
g_free (data);
meta_error_trap_pop (screen->display);
meta_error_trap_pop (x11_display);
g_signal_emit (screen, screen_signals[WORKAREAS_CHANGED], 0);
}
@@ -2262,13 +2262,13 @@ meta_screen_update_showing_desktop_hint (MetaScreen *screen)
data[0] = screen->active_workspace->showing_desktop ? 1 : 0;
meta_error_trap_push (screen->display);
meta_error_trap_push (x11_display);
XChangeProperty (x11_display->xdisplay,
x11_display->xroot,
x11_display->atom__NET_SHOWING_DESKTOP,
XA_CARDINAL,
32, PropModeReplace, (guchar*) data, 1);
meta_error_trap_pop (screen->display);
meta_error_trap_pop (x11_display);
}
static void
@@ -2626,13 +2626,13 @@ meta_screen_set_active_workspace_hint (MetaScreen *screen)
meta_verbose ("Setting _NET_CURRENT_DESKTOP to %lu\n", data[0]);
meta_error_trap_push (screen->display);
meta_error_trap_push (x11_display);
XChangeProperty (x11_display->xdisplay,
x11_display->xroot,
x11_display->atom__NET_CURRENT_DESKTOP,
XA_CARDINAL,
32, PropModeReplace, (guchar*) data, 1);
meta_error_trap_pop (screen->display);
meta_error_trap_pop (x11_display);
}
static gboolean

View File

@@ -990,7 +990,7 @@ meta_stack_tracker_lower_below (MetaStackTracker *tracker,
{
serial = XNextRequest (x11_display->xdisplay);
meta_error_trap_push (tracker->screen->display);
meta_error_trap_push (x11_display);
changes.stack_mode = changes.sibling ? Below : Above;
@@ -999,7 +999,7 @@ meta_stack_tracker_lower_below (MetaStackTracker *tracker,
(changes.sibling ? CWSibling : 0) | CWStackMode,
&changes);
meta_error_trap_pop (tracker->screen->display);
meta_error_trap_pop (x11_display);
}
}
@@ -1025,7 +1025,7 @@ meta_stack_tracker_raise_above (MetaStackTracker *tracker,
{
serial = XNextRequest (x11_display->xdisplay);
meta_error_trap_push (tracker->screen->display);
meta_error_trap_push (x11_display);
changes.stack_mode = changes.sibling ? Above : Below;
@@ -1034,7 +1034,7 @@ meta_stack_tracker_raise_above (MetaStackTracker *tracker,
(changes.sibling ? CWSibling : 0) | CWStackMode,
&changes);
meta_error_trap_pop (tracker->screen->display);
meta_error_trap_pop (x11_display);
}
}

View File

@@ -590,7 +590,7 @@ sn_error_trap_push (SnDisplay *sn_display,
MetaDisplay *display;
display = meta_display_for_x_display (xdisplay);
if (display != NULL)
meta_error_trap_push (display);
meta_error_trap_push (display->x11_display);
}
static void
@@ -600,7 +600,7 @@ sn_error_trap_pop (SnDisplay *sn_display,
MetaDisplay *display;
display = meta_display_for_x_display (xdisplay);
if (display != NULL)
meta_error_trap_pop (display);
meta_error_trap_pop (display->x11_display);
}
static void

View File

@@ -761,7 +761,7 @@ sync_client_window_mapped (MetaWindow *window)
window->mapped = should_be_mapped;
meta_error_trap_push (window->display);
meta_error_trap_push (window->display->x11_display);
if (should_be_mapped)
{
XMapWindow (window->display->x11_display->xdisplay, window->xwindow);
@@ -771,7 +771,7 @@ sync_client_window_mapped (MetaWindow *window)
XUnmapWindow (window->display->x11_display->xdisplay, window->xwindow);
window->unmaps_pending ++;
}
meta_error_trap_pop (window->display);
meta_error_trap_pop (window->display->x11_display);
}
static gboolean
@@ -6772,7 +6772,7 @@ warp_grab_pointer (MetaWindow *window,
*x = CLAMP (*x, 0, window->screen->rect.width-1);
*y = CLAMP (*y, 0, window->screen->rect.height-1);
meta_error_trap_push (display);
meta_error_trap_push (display->x11_display);
meta_topic (META_DEBUG_WINDOW_OPS,
"Warping pointer to %d,%d with window at %d,%d\n",
@@ -6794,7 +6794,7 @@ warp_grab_pointer (MetaWindow *window,
meta_backend_warp_pointer (backend, *x, *y);
}
if (meta_error_trap_pop_with_return (display) != Success)
if (meta_error_trap_pop_with_return (display->x11_display) != Success)
{
meta_verbose ("Failed to warp pointer for window %s\n",
window->desc);
@@ -8057,14 +8057,14 @@ window_has_pointer_x11 (MetaWindow *window)
XIModifierState mods;
XIGroupState group;
meta_error_trap_push (display);
meta_error_trap_push (display->x11_display);
XIQueryPointer (display->x11_display->xdisplay,
META_VIRTUAL_CORE_POINTER_ID,
display->x11_display->xroot,
&root, &child,
&root_x, &root_y, &x, &y,
&buttons, &mods, &group);
meta_error_trap_pop (display);
meta_error_trap_pop (display->x11_display);
free (buttons.mask);
return meta_display_lookup_x_window (display, child) == window;