From dacc041d0c0ddefa99085158dcbdeb13949b3cd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20Krezovi=C4=87?= Date: Sat, 26 Aug 2017 18:27:50 +0200 Subject: [PATCH] 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 --- src/backends/x11/meta-input-settings-x11.c | 16 ++-- src/compositor/compositor.c | 8 +- src/compositor/meta-surface-actor-x11.c | 20 ++--- src/compositor/meta-window-actor.c | 8 +- src/core/display.c | 8 +- src/core/errors.c | 31 +++++-- src/core/frame.c | 8 +- src/core/keybindings.c | 4 +- src/core/screen.c | 32 +++---- src/core/stack-tracker.c | 8 +- src/core/startup-notification.c | 4 +- src/core/window.c | 12 +-- src/meta/errors.h | 8 +- src/wayland/meta-window-wayland.c | 8 +- src/wayland/meta-xwayland-selection.c | 4 +- src/x11/events.c | 44 ++++----- src/x11/iconcache.c | 12 +-- src/x11/meta-x11-display.c | 4 +- src/x11/window-props.c | 4 +- src/x11/window-x11.c | 100 ++++++++++----------- src/x11/xprops.c | 12 +-- 21 files changed, 185 insertions(+), 170 deletions(-) diff --git a/src/backends/x11/meta-input-settings-x11.c b/src/backends/x11/meta-input-settings-x11.c index 9687fb36f..0042c2042 100644 --- a/src/backends/x11/meta-input-settings-x11.c +++ b/src/backends/x11/meta-input-settings-x11.c @@ -63,9 +63,9 @@ device_free_xdevice (gpointer user_data) Display *xdisplay = meta_backend_x11_get_xdisplay (META_BACKEND_X11 (backend)); XDevice *xdev = user_data; - meta_error_trap_push (display); + meta_error_trap_push (display->x11_display); XCloseDevice (xdisplay, xdev); - meta_error_trap_pop (display); + meta_error_trap_pop (display->x11_display); } static XDevice * @@ -81,9 +81,9 @@ device_ensure_xdevice (ClutterInputDevice *device) if (xdev) return xdev; - meta_error_trap_push (display); + meta_error_trap_push (display->x11_display); xdev = XOpenDevice (xdisplay, device_id); - meta_error_trap_pop (display); + meta_error_trap_pop (display->x11_display); if (xdev) { @@ -586,7 +586,7 @@ meta_input_settings_x11_set_tablet_mapping (MetaInputSettings *settings, return; /* Grab the puke bucket! */ - meta_error_trap_push (display); + meta_error_trap_push (display->x11_display); xdev = device_ensure_xdevice (device); if (xdev) { @@ -595,7 +595,7 @@ meta_input_settings_x11_set_tablet_mapping (MetaInputSettings *settings, Absolute : Relative); } - if (meta_error_trap_pop_with_return (display)) + if (meta_error_trap_pop_with_return (display->x11_display)) { g_warning ("Could not set tablet mapping for %s", clutter_input_device_get_device_name (device)); @@ -782,7 +782,7 @@ meta_input_settings_x11_set_stylus_button_map (MetaInputSettings *setti return; /* Grab the puke bucket! */ - meta_error_trap_push (display); + meta_error_trap_push (display->x11_display); xdev = device_ensure_xdevice (device); if (xdev) { @@ -800,7 +800,7 @@ meta_input_settings_x11_set_stylus_button_map (MetaInputSettings *setti XSetDeviceButtonMapping (xdisplay, xdev, map, G_N_ELEMENTS (map)); } - if (meta_error_trap_pop_with_return (display)) + if (meta_error_trap_pop_with_return (display->x11_display)) { g_warning ("Could not set stylus button map for %s", clutter_input_device_get_device_name (device)); diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c index 6f7fd65af..fde89c58c 100644 --- a/src/compositor/compositor.c +++ b/src/compositor/compositor.c @@ -470,11 +470,11 @@ redirect_windows (MetaScreen *screen) */ while (TRUE) { - meta_error_trap_push (display); + meta_error_trap_push (x11_display); XCompositeRedirectSubwindows (xdisplay, xroot, CompositeRedirectManual); XSync (xdisplay, FALSE); - if (!meta_error_trap_pop_with_return (display)) + if (!meta_error_trap_pop_with_return (x11_display)) break; if (n_retries == max_retries) @@ -662,12 +662,12 @@ meta_compositor_add_window (MetaCompositor *compositor, { MetaDisplay *display = compositor->display; - meta_error_trap_push (display); + meta_error_trap_push (display->x11_display); meta_window_actor_new (window); sync_actor_stacking (compositor); - meta_error_trap_pop (display); + meta_error_trap_pop (display->x11_display); } void diff --git a/src/compositor/meta-surface-actor-x11.c b/src/compositor/meta-surface-actor-x11.c index e521c9aee..b4ef019bb 100644 --- a/src/compositor/meta-surface-actor-x11.c +++ b/src/compositor/meta-surface-actor-x11.c @@ -74,10 +74,10 @@ free_damage (MetaSurfaceActorX11 *self) if (priv->damage == None) return; - meta_error_trap_push (display); + meta_error_trap_push (display->x11_display); XDamageDestroy (xdisplay, priv->damage); priv->damage = None; - meta_error_trap_pop (display); + meta_error_trap_pop (display->x11_display); } static void @@ -98,10 +98,10 @@ detach_pixmap (MetaSurfaceActorX11 *self) meta_shaped_texture_set_texture (stex, NULL); cogl_flush (); - meta_error_trap_push (display); + meta_error_trap_push (display->x11_display); XFreePixmap (xdisplay, priv->pixmap); priv->pixmap = None; - meta_error_trap_pop (display); + meta_error_trap_pop (display->x11_display); g_clear_pointer (&priv->texture, cogl_object_unref); } @@ -152,10 +152,10 @@ update_pixmap (MetaSurfaceActorX11 *self) Pixmap new_pixmap; Window xwindow = meta_window_x11_get_toplevel_xwindow (priv->window); - meta_error_trap_push (display); + meta_error_trap_push (display->x11_display); new_pixmap = XCompositeNameWindowPixmap (xdisplay, xwindow); - if (meta_error_trap_pop_with_return (display) != Success) + if (meta_error_trap_pop_with_return (display->x11_display) != Success) { /* Probably a BadMatch if the window isn't viewable; we could * GrabServer/GetWindowAttributes/NameWindowPixmap/UngrabServer/Sync @@ -228,9 +228,9 @@ meta_surface_actor_x11_pre_paint (MetaSurfaceActor *actor) if (priv->received_damage) { - meta_error_trap_push (display); + meta_error_trap_push (display->x11_display); XDamageSubtract (xdisplay, priv->damage, None, None); - meta_error_trap_pop (display); + meta_error_trap_pop (display->x11_display); priv->received_damage = FALSE; } @@ -315,7 +315,7 @@ sync_unredirected (MetaSurfaceActorX11 *self) Display *xdisplay = meta_x11_display_get_xdisplay (display->x11_display); Window xwindow = meta_window_x11_get_toplevel_xwindow (priv->window); - meta_error_trap_push (display); + meta_error_trap_push (display->x11_display); if (priv->unredirected) { @@ -327,7 +327,7 @@ sync_unredirected (MetaSurfaceActorX11 *self) XCompositeRedirectWindow (xdisplay, xwindow, CompositeRedirectManual); } - meta_error_trap_pop (display); + meta_error_trap_pop (display->x11_display); } static void diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c index c4b8fe1ef..fdbc4a3aa 100644 --- a/src/compositor/meta-window-actor.c +++ b/src/compositor/meta-window-actor.c @@ -1990,10 +1990,10 @@ do_send_frame_drawn (MetaWindowActor *self, FrameData *frame) ev.data.l[2] = frame->frame_drawn_time & G_GUINT64_CONSTANT(0xffffffff); ev.data.l[3] = frame->frame_drawn_time >> 32; - meta_error_trap_push (display); + meta_error_trap_push (display->x11_display); XSendEvent (xdisplay, ev.window, False, 0, (XEvent*) &ev); XFlush (xdisplay); - meta_error_trap_pop (display); + meta_error_trap_pop (display->x11_display); } void @@ -2067,10 +2067,10 @@ do_send_frame_timings (MetaWindowActor *self, ev.data.l[3] = refresh_interval; ev.data.l[4] = 1000 * META_SYNC_DELAY; - meta_error_trap_push (display); + meta_error_trap_push (display->x11_display); XSendEvent (xdisplay, ev.window, False, 0, (XEvent*) &ev); XFlush (xdisplay); - meta_error_trap_pop (display); + meta_error_trap_pop (display->x11_display); } static void diff --git a/src/core/display.c b/src/core/display.c index 1bf044233..a2ef315e3 100644 --- a/src/core/display.c +++ b/src/core/display.c @@ -1534,7 +1534,7 @@ request_xserver_input_focus_change (MetaDisplay *display, if (meta_display_timestamp_too_old (display, ×tamp)) 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 diff --git a/src/core/errors.c b/src/core/errors.c index 0b3e5cc54..61085607e 100644 --- a/src/core/errors.c +++ b/src/core/errors.c @@ -26,10 +26,10 @@ #include #include -#include "display-private.h" #include #include -#include +#include +#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); } diff --git a/src/core/frame.c b/src/core/frame.c index 22183d67b..ab8686b2d 100644 --- a/src/core/frame.c +++ b/src/core/frame.c @@ -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); diff --git a/src/core/keybindings.c b/src/core/keybindings.c index 437b08ebe..a7c18eb47 100644 --- a/src/core/keybindings.c +++ b/src/core/keybindings.c @@ -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 diff --git a/src/core/screen.c b/src/core/screen.c index dc6d39a76..8f29b6548 100644 --- a/src/core/screen.c +++ b/src/core/screen.c @@ -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 diff --git a/src/core/stack-tracker.c b/src/core/stack-tracker.c index 5b5d79545..9971d1045 100644 --- a/src/core/stack-tracker.c +++ b/src/core/stack-tracker.c @@ -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); } } diff --git a/src/core/startup-notification.c b/src/core/startup-notification.c index c3e887598..4c386bba0 100644 --- a/src/core/startup-notification.c +++ b/src/core/startup-notification.c @@ -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 diff --git a/src/core/window.c b/src/core/window.c index 8b0046506..7a46971eb 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -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; diff --git a/src/meta/errors.h b/src/meta/errors.h index b9ee9b3b7..7c08febc4 100644 --- a/src/meta/errors.h +++ b/src/meta/errors.h @@ -25,13 +25,13 @@ #include #include -#include +#include -void meta_error_trap_push (MetaDisplay *display); -void meta_error_trap_pop (MetaDisplay *display); +void meta_error_trap_push (MetaX11Display *x11_display); +void meta_error_trap_pop (MetaX11Display *x11_display); /* returns X error code, or 0 for no error */ -int meta_error_trap_pop_with_return (MetaDisplay *display); +int meta_error_trap_pop_with_return (MetaX11Display *x11_display); #endif diff --git a/src/wayland/meta-window-wayland.c b/src/wayland/meta-window-wayland.c index 705bc4981..3e82d3f78 100644 --- a/src/wayland/meta-window-wayland.c +++ b/src/wayland/meta-window-wayland.c @@ -615,9 +615,9 @@ meta_window_wayland_new (MetaDisplay *display, * X requests (passing a window xid of None) until we thoroughly audit all * the code to make sure it knows about non X based clients... */ - meta_error_trap_push (display); /* Push a trap over all of window - * creation, to reduce XSync() calls - */ + meta_error_trap_push (display->x11_display); /* Push a trap over all of window + * creation, to reduce XSync() calls + */ window = _meta_window_shared_new (display, scr, @@ -629,7 +629,7 @@ meta_window_wayland_new (MetaDisplay *display, &attrs); window->can_ping = TRUE; - meta_error_trap_pop (display); /* pop the XSync()-reducing trap */ + meta_error_trap_pop (display->x11_display); /* pop the XSync()-reducing trap */ return window; } diff --git a/src/wayland/meta-xwayland-selection.c b/src/wayland/meta-xwayland-selection.c index be09898cc..5158ffb43 100644 --- a/src/wayland/meta-xwayland-selection.c +++ b/src/wayland/meta-xwayland-selection.c @@ -654,10 +654,10 @@ wayland_selection_data_free (WaylandSelectionData *data) /* Do *not* change the event mask on the root window, bugger! */ if (!data->window && data->request_event.requestor != x11_display->xroot) { - meta_error_trap_push (display); + meta_error_trap_push (x11_display); XSelectInput (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), data->request_event.requestor, NoEventMask); - meta_error_trap_pop (display); + meta_error_trap_pop (x11_display); } g_cancellable_cancel (data->cancellable); diff --git a/src/x11/events.c b/src/x11/events.c index 6789409ba..11cebeade 100644 --- a/src/x11/events.c +++ b/src/x11/events.c @@ -535,10 +535,10 @@ meta_spew_core_event (MetaDisplay *display, name = "PropertyNotify"; - meta_error_trap_push (display); + meta_error_trap_push (display->x11_display); str = XGetAtomName (display->x11_display->xdisplay, event->xproperty.atom); - meta_error_trap_pop (display); + meta_error_trap_pop (display->x11_display); if (event->xproperty.state == PropertyNewValue) state = "PropertyNewValue"; @@ -569,10 +569,10 @@ meta_spew_core_event (MetaDisplay *display, { char *str; name = "ClientMessage"; - meta_error_trap_push (display); + meta_error_trap_push (display->x11_display); str = XGetAtomName (display->x11_display->xdisplay, event->xclient.message_type); - meta_error_trap_pop (display); + meta_error_trap_pop (display->x11_display); extra = g_strdup_printf ("type: %s format: %d\n", str ? str : "(unknown atom)", event->xclient.format); @@ -972,12 +972,12 @@ process_request_frame_extents (MetaDisplay *display, "to top = %lu, left = %lu, bottom = %lu, right = %lu\n", xwindow, data[0], data[1], data[2], data[3]); - meta_error_trap_push (display); + meta_error_trap_push (display->x11_display); XChangeProperty (display->x11_display->xdisplay, xwindow, display->x11_display->atom__NET_FRAME_EXTENTS, XA_CARDINAL, 32, PropModeReplace, (guchar*) data, 4); - meta_error_trap_pop (display); + meta_error_trap_pop (display->x11_display); meta_XFree (hints); } @@ -1000,7 +1000,7 @@ convert_property (MetaDisplay *display, conversion_targets[2] = x11_display->atom_TIMESTAMP; conversion_targets[3] = x11_display->atom_VERSION; - meta_error_trap_push (display); + meta_error_trap_push (x11_display); if (target == x11_display->atom_TARGETS) XChangeProperty (x11_display->xdisplay, w, property, XA_ATOM, 32, PropModeReplace, @@ -1015,11 +1015,11 @@ convert_property (MetaDisplay *display, (unsigned char *)icccm_version, 2); else { - meta_error_trap_pop_with_return (display); + meta_error_trap_pop_with_return (x11_display); return FALSE; } - if (meta_error_trap_pop_with_return (display) != Success) + if (meta_error_trap_pop_with_return (x11_display) != Success) return FALSE; /* Be sure the PropertyNotify has arrived so we @@ -1046,10 +1046,10 @@ process_selection_request (MetaDisplay *display, { char *str; - meta_error_trap_push (display); + meta_error_trap_push (x11_display); str = XGetAtomName (x11_display->xdisplay, event->xselectionrequest.selection); - meta_error_trap_pop (display); + meta_error_trap_pop (x11_display); meta_verbose ("Selection request with selection %s window 0x%lx not a WM_Sn selection we recognize\n", str ? str : "(bad atom)", event->xselectionrequest.owner); @@ -1076,18 +1076,18 @@ process_selection_request (MetaDisplay *display, unsigned long num, rest; unsigned char *data; - meta_error_trap_push (display); + meta_error_trap_push (x11_display); if (XGetWindowProperty (x11_display->xdisplay, event->xselectionrequest.requestor, event->xselectionrequest.property, 0, 256, False, x11_display->atom_ATOM_PAIR, &type, &format, &num, &rest, &data) != Success) { - meta_error_trap_pop_with_return (display); + meta_error_trap_pop_with_return (x11_display); return; } - if (meta_error_trap_pop_with_return (display) == Success) + if (meta_error_trap_pop_with_return (x11_display) == Success) { /* FIXME: to be 100% correct, should deal with rest > 0, * but since we have 4 possible targets, we will hardly ever @@ -1104,13 +1104,13 @@ process_selection_request (MetaDisplay *display, i += 2; } - meta_error_trap_push (display); + meta_error_trap_push (x11_display); XChangeProperty (x11_display->xdisplay, event->xselectionrequest.requestor, event->xselectionrequest.property, x11_display->atom_ATOM_PAIR, 32, PropModeReplace, data, num); - meta_error_trap_pop (display); + meta_error_trap_pop (x11_display); meta_XFree (data); } } @@ -1145,10 +1145,10 @@ process_selection_clear (MetaDisplay *display, { char *str; - meta_error_trap_push (display); + meta_error_trap_push (display->x11_display); str = XGetAtomName (display->x11_display->xdisplay, event->xselectionclear.selection); - meta_error_trap_pop (display); + meta_error_trap_pop (display->x11_display); meta_verbose ("Selection clear with selection %s window 0x%lx not a WM_Sn selection we recognize\n", str ? str : "(bad atom)", event->xselectionclear.window); @@ -1310,9 +1310,9 @@ handle_other_xevent (MetaDisplay *display, { meta_warning ("Unexpected destruction of frame 0x%lx, not sure if this should silently fail or be considered a bug\n", window->frame->xwindow); - meta_error_trap_push (display); + meta_error_trap_push (x11_display); meta_window_destroy_frame (window->frame->window); - meta_error_trap_pop (display); + meta_error_trap_pop (x11_display); } else { @@ -1449,10 +1449,10 @@ handle_other_xevent (MetaDisplay *display, meta_verbose ("Configuring withdrawn window to %d,%d %dx%d border %d (some values may not be in mask)\n", xwc.x, xwc.y, xwc.width, xwc.height, xwc.border_width); - meta_error_trap_push (display); + meta_error_trap_push (x11_display); XConfigureWindow (x11_display->xdisplay, event->xconfigurerequest.window, xwcm, &xwc); - meta_error_trap_pop (display); + meta_error_trap_pop (x11_display); } else { diff --git a/src/x11/iconcache.c b/src/x11/iconcache.c index 7bca0d5fd..636a2d1e7 100644 --- a/src/x11/iconcache.c +++ b/src/x11/iconcache.c @@ -210,7 +210,7 @@ read_rgb_icon (MetaDisplay *display, int mini_w, mini_h; gulong *data_as_long; - meta_error_trap_push (display); + meta_error_trap_push (display->x11_display); type = None; data = NULL; result = XGetWindowProperty (display->x11_display->xdisplay, @@ -219,7 +219,7 @@ read_rgb_icon (MetaDisplay *display, 0, G_MAXLONG, False, XA_CARDINAL, &type, &format, &nitems, &bytes_after, &data); - err = meta_error_trap_pop_with_return (display); + err = meta_error_trap_pop_with_return (display->x11_display); if (err != Success || result != Success) @@ -340,7 +340,7 @@ try_pixmap_and_mask (MetaDisplay *display, if (src_pixmap == None) return FALSE; - meta_error_trap_push (display); + meta_error_trap_push (display->x11_display); get_pixmap_geometry (display, src_pixmap, &w, &h, &d); icon = surface_from_pixmap (xdisplay, src_pixmap, w, h); @@ -353,7 +353,7 @@ try_pixmap_and_mask (MetaDisplay *display, mask = surface_from_pixmap (xdisplay, src_mask, w, h); } - meta_error_trap_pop (display); + meta_error_trap_pop (display->x11_display); if (icon && mask) { @@ -404,7 +404,7 @@ get_kwm_win_icon (MetaDisplay *display, *pixmap = None; *mask = None; - meta_error_trap_push (display); + meta_error_trap_push (display->x11_display); icons = NULL; result = XGetWindowProperty (display->x11_display->xdisplay, xwindow, display->x11_display->atom__KWM_WIN_ICON, @@ -415,7 +415,7 @@ get_kwm_win_icon (MetaDisplay *display, &bytes_after, &data); icons = (Pixmap *)data; - err = meta_error_trap_pop_with_return (display); + err = meta_error_trap_pop_with_return (display->x11_display); if (err != Success || result != Success) return; diff --git a/src/x11/meta-x11-display.c b/src/x11/meta-x11-display.c index 6239aa095..82f53745e 100644 --- a/src/x11/meta-x11-display.c +++ b/src/x11/meta-x11-display.c @@ -58,9 +58,9 @@ meta_x11_display_dispose (GObject *object) if (x11_display->xroot != None) { - meta_error_trap_push (x11_display->display); + meta_error_trap_push (x11_display); XSelectInput (x11_display->xdisplay, x11_display->xroot, 0); - if (meta_error_trap_pop_with_return (x11_display->display) != Success) + if (meta_error_trap_pop_with_return (x11_display) != Success) meta_warning ("Could not release screen %d on display \"%s\"\n", meta_ui_get_screen_number (), x11_display->name); diff --git a/src/x11/window-props.c b/src/x11/window-props.c index fe75bf5a8..8a8f37863 100644 --- a/src/x11/window-props.c +++ b/src/x11/window-props.c @@ -573,11 +573,11 @@ set_title_text (MetaWindow *window, /* Bug 330671 -- Don't forget to clear _NET_WM_VISIBLE_(ICON_)NAME */ if (!modified && previous_was_modified) { - meta_error_trap_push (window->display); + meta_error_trap_push (window->display->x11_display); XDeleteProperty (window->display->x11_display->xdisplay, window->xwindow, atom); - meta_error_trap_pop (window->display); + meta_error_trap_pop (window->display->x11_display); } return modified; diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c index 1f62e0d5b..0341279ae 100644 --- a/src/x11/window-x11.c +++ b/src/x11/window-x11.c @@ -93,10 +93,10 @@ send_icccm_message (MetaWindow *window, ev.data.l[0] = atom; ev.data.l[1] = timestamp; - meta_error_trap_push (window->display); + meta_error_trap_push (x11_display); XSendEvent (x11_display->xdisplay, window->xwindow, False, 0, (XEvent*) &ev); - meta_error_trap_pop (window->display); + meta_error_trap_pop (x11_display); } static Window @@ -250,11 +250,11 @@ send_configure_notify (MetaWindow *window) event.xconfigure.x, event.xconfigure.y, event.xconfigure.width, event.xconfigure.height); - meta_error_trap_push (window->display); + meta_error_trap_push (x11_display); XSendEvent (x11_display->xdisplay, window->xwindow, False, StructureNotifyMask, &event); - meta_error_trap_pop (window->display); + meta_error_trap_pop (x11_display); } static void @@ -577,7 +577,7 @@ meta_window_x11_unmanage (MetaWindow *window) MetaWindowX11 *window_x11 = META_WINDOW_X11 (window); MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11); - meta_error_trap_push (window->display); + meta_error_trap_push (x11_display); meta_window_x11_destroy_sync_request_alarm (window); @@ -657,7 +657,7 @@ meta_window_x11_unmanage (MetaWindow *window) meta_display_ungrab_window_buttons (window->display, window->xwindow); meta_display_ungrab_focus_window_button (window->display, window); - meta_error_trap_pop (window->display); + meta_error_trap_pop (x11_display); if (window->frame) { @@ -686,7 +686,7 @@ meta_window_x11_delete (MetaWindow *window, { MetaX11Display *x11_display = window->display->x11_display; - meta_error_trap_push (window->display); + meta_error_trap_push (x11_display); if (window->delete_window) { meta_topic (META_DEBUG_WINDOW_OPS, @@ -701,7 +701,7 @@ meta_window_x11_delete (MetaWindow *window, window->desc); XKillClient (x11_display->xdisplay, window->xwindow); } - meta_error_trap_pop (window->display); + meta_error_trap_pop (x11_display); } static void @@ -713,9 +713,9 @@ meta_window_x11_kill (MetaWindow *window) "Disconnecting %s with XKillClient()\n", window->desc); - meta_error_trap_push (window->display); + meta_error_trap_push (x11_display); XKillClient (x11_display->xdisplay, window->xwindow); - meta_error_trap_pop (window->display); + meta_error_trap_pop (x11_display); } static void @@ -900,12 +900,12 @@ update_net_frame_extents (MetaWindow *window) "to left = %lu, right = %lu, top = %lu, bottom = %lu\n", window->xwindow, data[0], data[1], data[2], data[3]); - meta_error_trap_push (window->display); + meta_error_trap_push (x11_display); XChangeProperty (x11_display->xdisplay, window->xwindow, x11_display->atom__NET_FRAME_EXTENTS, XA_CARDINAL, 32, PropModeReplace, (guchar*) data, 4); - meta_error_trap_pop (window->display); + meta_error_trap_pop (x11_display); } static void @@ -927,13 +927,13 @@ update_gtk_edge_constraints (MetaWindow *window) meta_verbose ("Setting _GTK_EDGE_CONSTRAINTS to %lu\n", data[0]); - meta_error_trap_push (window->display); + meta_error_trap_push (x11_display); XChangeProperty (x11_display->xdisplay, window->xwindow, x11_display->atom__GTK_EDGE_CONSTRAINTS, XA_CARDINAL, 32, PropModeReplace, (guchar*) data, 1); - meta_error_trap_pop (window->display); + meta_error_trap_pop (x11_display); } static gboolean @@ -1048,12 +1048,12 @@ meta_window_x11_current_workspace_changed (MetaWindow *window) meta_verbose ("Setting _NET_WM_DESKTOP of %s to %lu\n", window->desc, data[0]); - meta_error_trap_push (window->display); + meta_error_trap_push (x11_display); XChangeProperty (x11_display->xdisplay, window->xwindow, x11_display->atom__NET_WM_DESKTOP, XA_CARDINAL, 32, PropModeReplace, (guchar*) data, 1); - meta_error_trap_pop (window->display); + meta_error_trap_pop (x11_display); } static void @@ -1255,7 +1255,7 @@ meta_window_x11_move_resize_internal (MetaWindow *window, if (mask != 0) { - meta_error_trap_push (window->display); + meta_error_trap_push (window->display->x11_display); if (window == window->display->grab_window && meta_grab_op_is_resizing (window->display->grab_op) && @@ -1272,7 +1272,7 @@ meta_window_x11_move_resize_internal (MetaWindow *window, mask, &values); - meta_error_trap_pop (window->display); + meta_error_trap_pop (window->display->x11_display); } if (!configure_frame_first && window->frame) @@ -1676,12 +1676,12 @@ meta_window_x11_set_net_wm_state (MetaWindow *window) meta_verbose ("Setting _NET_WM_STATE with %d atoms\n", i); - meta_error_trap_push (window->display); + meta_error_trap_push (x11_display); XChangeProperty (x11_display->xdisplay, window->xwindow, x11_display->atom__NET_WM_STATE, XA_ATOM, 32, PropModeReplace, (guchar*) data, i); - meta_error_trap_pop (window->display); + meta_error_trap_pop (x11_display); if (window->fullscreen) { @@ -1701,22 +1701,22 @@ meta_window_x11_set_net_wm_state (MetaWindow *window) window->fullscreen_monitors.right); meta_verbose ("Setting _NET_WM_FULLSCREEN_MONITORS\n"); - meta_error_trap_push (window->display); + meta_error_trap_push (x11_display); XChangeProperty (x11_display->xdisplay, window->xwindow, x11_display->atom__NET_WM_FULLSCREEN_MONITORS, XA_CARDINAL, 32, PropModeReplace, (guchar*) data, 4); - meta_error_trap_pop (window->display); + meta_error_trap_pop (x11_display); } else { meta_verbose ("Clearing _NET_WM_FULLSCREEN_MONITORS\n"); - meta_error_trap_push (window->display); + meta_error_trap_push (x11_display); XDeleteProperty (x11_display->xdisplay, window->xwindow, x11_display->atom__NET_WM_FULLSCREEN_MONITORS); - meta_error_trap_pop (window->display); + meta_error_trap_pop (x11_display); } } @@ -1804,13 +1804,13 @@ meta_window_x11_update_input_region (MetaWindow *window) XRectangle *rects = NULL; int n_rects = -1, ordering; - meta_error_trap_push (window->display); + meta_error_trap_push (x11_display); rects = XShapeGetRectangles (x11_display->xdisplay, window->xwindow, ShapeInput, &n_rects, &ordering); - meta_error_trap_pop (window->display); + meta_error_trap_pop (x11_display); /* XXX: The X Shape specification is quite unfortunately specified. * @@ -1911,7 +1911,7 @@ meta_window_x11_update_shape_region (MetaWindow *window) unsigned w_bounding, h_bounding, w_clip, h_clip; int bounding_shaped, clip_shaped; - meta_error_trap_push (window->display); + meta_error_trap_push (x11_display); XShapeQueryExtents (x11_display->xdisplay, window->xwindow, &bounding_shaped, &x_bounding, &y_bounding, &w_bounding, &h_bounding, @@ -1926,7 +1926,7 @@ meta_window_x11_update_shape_region (MetaWindow *window) &n_rects, &ordering); } - meta_error_trap_pop (window->display); + meta_error_trap_pop (x11_display); if (rects) { @@ -2437,14 +2437,14 @@ meta_window_x11_client_message (MetaWindow *window, char *str1; char *str2; - meta_error_trap_push (display); + meta_error_trap_push (x11_display); str1 = XGetAtomName (x11_display->xdisplay, first); - if (meta_error_trap_pop_with_return (display) != Success) + if (meta_error_trap_pop_with_return (x11_display) != Success) str1 = NULL; - meta_error_trap_push (display); + meta_error_trap_push (x11_display); str2 = XGetAtomName (x11_display->xdisplay, second); - if (meta_error_trap_pop_with_return (display) != Success) + if (meta_error_trap_pop_with_return (x11_display) != Success) str2 = NULL; meta_verbose ("Request to change _NET_WM_STATE action %lu atom1: %s atom2: %s\n", @@ -2859,12 +2859,12 @@ set_wm_state_on_xwindow (MetaDisplay *display, data[0] = state; data[1] = None; - meta_error_trap_push (display); + meta_error_trap_push (display->x11_display); XChangeProperty (display->x11_display->xdisplay, xwindow, display->x11_display->atom_WM_STATE, display->x11_display->atom_WM_STATE, 32, PropModeReplace, (guchar*) data, 2); - meta_error_trap_pop (display); + meta_error_trap_pop (display->x11_display); } void @@ -2917,7 +2917,7 @@ maybe_filter_xwindow (MetaDisplay *display, filtered = TRUE; - meta_error_trap_push (display); + meta_error_trap_push (display->x11_display); success = XGetClassHint (display->x11_display->xdisplay, xwindow, &class_hint); @@ -2962,7 +2962,7 @@ maybe_filter_xwindow (MetaDisplay *display, XUnmapWindow (display->x11_display->xdisplay, xwindow); } - meta_error_trap_pop (display); + meta_error_trap_pop (display->x11_display); return filtered; } @@ -3045,9 +3045,9 @@ meta_window_x11_new (MetaDisplay *display, return NULL; } - meta_error_trap_push (display); /* Push a trap over all of window - * creation, to reduce XSync() calls - */ + meta_error_trap_push (x11_display); /* Push a trap over all of window + * creation, to reduce XSync() calls + */ /* * This function executes without any server grabs held. This means that * the window could have already gone away, or could go away at any point, @@ -3116,7 +3116,7 @@ meta_window_x11_new (MetaDisplay *display, */ XAddToSaveSet (x11_display->xdisplay, xwindow); - meta_error_trap_push (display); + meta_error_trap_push (x11_display); event_mask = PropertyChangeMask; if (attrs.override_redirect) @@ -3160,7 +3160,7 @@ meta_window_x11_new (MetaDisplay *display, &set_attrs); } - if (meta_error_trap_pop_with_return (display) != Success) + if (meta_error_trap_pop_with_return (x11_display) != Success) { meta_verbose ("Window 0x%lx disappeared just as we tried to manage it\n", xwindow); @@ -3188,11 +3188,11 @@ meta_window_x11_new (MetaDisplay *display, meta_display_grab_focus_window_button (window->display, window); } - meta_error_trap_pop (display); /* pop the XSync()-reducing trap */ + meta_error_trap_pop (x11_display); /* pop the XSync()-reducing trap */ return window; error: - meta_error_trap_pop (display); + meta_error_trap_pop (x11_display); return NULL; } @@ -3246,10 +3246,10 @@ meta_window_x11_recalc_window_type (MetaWindow *window) */ type = META_WINDOW_NORMAL; - meta_error_trap_push (window->display); + meta_error_trap_push (x11_display); atom_name = XGetAtomName (x11_display->xdisplay, priv->type_atom); - meta_error_trap_pop (window->display); + meta_error_trap_pop (x11_display); meta_warning ("Unrecognized type atom [%s] set for %s \n", atom_name ? atom_name : "unknown", @@ -3412,12 +3412,12 @@ meta_window_x11_set_allowed_actions_hint (MetaWindow *window) meta_verbose ("Setting _NET_WM_ALLOWED_ACTIONS with %d atoms\n", i); - meta_error_trap_push (window->display); + meta_error_trap_push (x11_display); XChangeProperty (x11_display->xdisplay, window->xwindow, x11_display->atom__NET_WM_ALLOWED_ACTIONS, XA_ATOM, 32, PropModeReplace, (guchar*) data, i); - meta_error_trap_pop (window->display); + meta_error_trap_pop (x11_display); #undef MAX_N_ACTIONS } @@ -3432,7 +3432,7 @@ meta_window_x11_create_sync_request_alarm (MetaWindow *window) window->sync_request_alarm != None) return; - meta_error_trap_push (window->display); + meta_error_trap_push (x11_display); /* In the new (extended style), the counter value is initialized by * the client before mapping the window. In the old style, we're @@ -3444,7 +3444,7 @@ meta_window_x11_create_sync_request_alarm (MetaWindow *window) window->sync_request_counter, &init)) { - meta_error_trap_pop_with_return (window->display); + meta_error_trap_pop_with_return (x11_display); window->sync_request_counter = None; return; } @@ -3483,7 +3483,7 @@ meta_window_x11_create_sync_request_alarm (MetaWindow *window) XSyncCAEvents, &values); - if (meta_error_trap_pop_with_return (window->display) == Success) + if (meta_error_trap_pop_with_return (x11_display) == Success) meta_display_register_sync_alarm (window->display, &window->sync_request_alarm, window); else { diff --git a/src/x11/xprops.c b/src/x11/xprops.c index 816838d49..47bded438 100644 --- a/src/x11/xprops.c +++ b/src/x11/xprops.c @@ -126,11 +126,11 @@ validate_or_free_results (GetPropertyResults *results, (!must_have_items || results->n_items > 0)) return TRUE; - meta_error_trap_push (results->display); + meta_error_trap_push (x11_display); type_name = XGetAtomName (x11_display->xdisplay, results->type); expected_name = XGetAtomName (x11_display->xdisplay, expected_type); prop_name = XGetAtomName (x11_display->xdisplay, results->xatom); - meta_error_trap_pop (results->display); + meta_error_trap_pop (x11_display); w = meta_display_lookup_x_window (results->display, results->xwindow); @@ -464,9 +464,9 @@ utf8_list_from_results (GetPropertyResults *results, { char *name; - meta_error_trap_push (results->display); + meta_error_trap_push (results->display->x11_display); name = XGetAtomName (results->display->x11_display->xdisplay, results->xatom); - meta_error_trap_pop (results->display); + meta_error_trap_pop (results->display->x11_display); meta_warning ("Property %s on window 0x%lx contained invalid UTF-8 for item %d in the list\n", name, results->xwindow, i); meta_XFree (name); @@ -520,12 +520,12 @@ meta_prop_set_utf8_string_hint (MetaDisplay *display, { MetaX11Display *x11_display = display->x11_display; - meta_error_trap_push (display); + meta_error_trap_push (x11_display); XChangeProperty (x11_display->xdisplay, xwindow, atom, x11_display->atom_UTF8_STRING, 8, PropModeReplace, (guchar*) val, strlen (val)); - meta_error_trap_pop (display); + meta_error_trap_pop (x11_display); } static gboolean