From 3af9de08abc406b56077205167390b78df9aacb8 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Sun, 12 Jun 2011 21:35:22 +0200 Subject: [PATCH] Use meta_core_select_events() for input events --- src/compositor/compositor.c | 18 +++--------------- src/core/screen.c | 25 ++++++++++++++----------- src/core/window.c | 5 ++++- 3 files changed, 21 insertions(+), 27 deletions(-) diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c index 26b81f7ae..261ece209 100644 --- a/src/compositor/compositor.c +++ b/src/compositor/compositor.c @@ -18,6 +18,7 @@ #include "meta-background-actor.h" #include "window-private.h" /* to check window->hidden */ #include "display-private.h" /* for meta_display_lookup_x_window() */ +#include "core.h" /* for meta_core_select_events() */ #include "input-events.h" #include #include @@ -179,7 +180,6 @@ get_output_window (MetaScreen *screen) MetaDisplay *display = meta_screen_get_display (screen); Display *xdisplay = meta_display_get_xdisplay (display); Window output, xroot; - XWindowAttributes attr; long event_mask; xroot = meta_screen_get_xroot (screen); @@ -193,13 +193,7 @@ get_output_window (MetaScreen *screen) KeyPressMask | KeyReleaseMask; output = XCompositeGetOverlayWindow (xdisplay, xroot); - - if (XGetWindowAttributes (xdisplay, output, &attr)) - { - event_mask |= attr.your_event_mask; - } - - XSelectInput (xdisplay, output, event_mask); + meta_core_select_events (xdisplay, output, event_mask, TRUE); return output; } @@ -474,7 +468,6 @@ meta_compositor_manage_screen (MetaCompositor *compositor, Window xroot = meta_screen_get_xroot (screen); Window xwin; gint width, height; - XWindowAttributes attr; long event_mask; guint n_retries; guint max_retries; @@ -549,12 +542,7 @@ meta_compositor_manage_screen (MetaCompositor *compositor, KeyPressMask | KeyReleaseMask | StructureNotifyMask; - if (XGetWindowAttributes (xdisplay, xwin, &attr)) - { - event_mask |= attr.your_event_mask; - } - - XSelectInput (xdisplay, xwin, event_mask); + meta_core_select_events (xdisplay, xwin, event_mask, TRUE); info->window_group = meta_window_group_new (screen); info->background_actor = meta_background_actor_new (screen); diff --git a/src/core/screen.c b/src/core/screen.c index 4f73b9de2..abf5dc62a 100644 --- a/src/core/screen.c +++ b/src/core/screen.c @@ -37,6 +37,7 @@ #include "workspace-private.h" #include "keybindings-private.h" #include "stack.h" +#include "core.h" #include "xprops.h" #include #include "mutter-marshal.h" @@ -632,7 +633,6 @@ meta_screen_new (MetaDisplay *display, MetaScreen *screen; Window xroot; Display *xdisplay; - XWindowAttributes attr; Window new_wm_sn_owner; Window current_wm_sn_owner; gboolean replace_current_wm; @@ -747,15 +747,15 @@ meta_screen_new (MetaDisplay *display, /* We need to or with the existing event mask since * gtk+ may be interested in other events. */ - XGetWindowAttributes (xdisplay, xroot, &attr); - XSelectInput (xdisplay, - xroot, - SubstructureRedirectMask | SubstructureNotifyMask | - ColormapChangeMask | PropertyChangeMask | - LeaveWindowMask | EnterWindowMask | - KeyPressMask | KeyReleaseMask | - FocusChangeMask | StructureNotifyMask | - ExposureMask | attr.your_event_mask); + meta_core_select_events (xdisplay, xroot, + (SubstructureRedirectMask | SubstructureNotifyMask | + ColormapChangeMask | PropertyChangeMask | + LeaveWindowMask | EnterWindowMask | + KeyPressMask | KeyReleaseMask | + FocusChangeMask | StructureNotifyMask | + ExposureMask), + TRUE); + if (meta_error_trap_pop_with_return (display) != Success) { meta_warning (_("Screen %d on display \"%s\" already has a window manager\n"), @@ -941,7 +941,10 @@ meta_screen_free (MetaScreen *screen, meta_stack_tracker_free (screen->stack_tracker); meta_error_trap_push_with_return (screen->display); - XSelectInput (screen->display->xdisplay, screen->xroot, 0); + meta_core_select_events (screen->display->xdisplay, + screen->xroot, NoEventMask, + FALSE); + if (meta_error_trap_pop_with_return (screen->display) != Success) meta_warning (_("Could not release screen %d on display \"%s\"\n"), screen->number, screen->display->name); diff --git a/src/core/window.c b/src/core/window.c index a2a98be19..32a23789f 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -45,6 +45,7 @@ #include "constraints.h" #include "input-events.h" #include "mutter-enum-types.h" +#include "core.h" #include #include /* For display->resource_mask */ @@ -781,7 +782,9 @@ meta_window_new_with_attrs (MetaDisplay *display, * the event mask, not replace it. For windows from other clients, * attrs->your_event_mask will be empty at this point. */ - XSelectInput (display->xdisplay, xwindow, attrs->your_event_mask | event_mask); + meta_core_select_events (display->xdisplay, xwindow, + attrs->your_event_mask | event_mask, + TRUE); has_shape = FALSE; #ifdef HAVE_SHAPE