diff options
author | Benjamin Otte <otte@redhat.com> | 2013-02-18 16:59:06 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2013-02-19 14:33:39 +0100 |
commit | 13eeb6ca33c1fb7e4d80b3e4b560a521741b5a1f (patch) | |
tree | a46b8b80d1bbce31954592646bf85b1335243a4c | |
parent | b2043511eedbba93336c4b46c74a31e24f9d6452 (diff) | |
download | gtk+-13eeb6ca33c1fb7e4d80b3e4b560a521741b5a1f.tar.gz |
x11: Introduce _gdk_x11_get_xatom_for_display_printf()
and use it instead of caching the atom in the GdkScreenX11.
-rw-r--r-- | gdk/x11/gdkprivate-x11.h | 4 | ||||
-rw-r--r-- | gdk/x11/gdkproperty-x11.c | 20 | ||||
-rw-r--r-- | gdk/x11/gdkscreen-x11.c | 25 | ||||
-rw-r--r-- | gdk/x11/gdkscreen-x11.h | 1 |
4 files changed, 33 insertions, 17 deletions
diff --git a/gdk/x11/gdkprivate-x11.h b/gdk/x11/gdkprivate-x11.h index 9d127dc97e..0701616aeb 100644 --- a/gdk/x11/gdkprivate-x11.h +++ b/gdk/x11/gdkprivate-x11.h @@ -297,6 +297,10 @@ void _gdk_x11_precache_atoms (GdkDisplay *display, const gchar * const *atom_names, gint n_atoms); +Atom _gdk_x11_get_xatom_for_display_printf (GdkDisplay *display, + const gchar *format, + ...) G_GNUC_PRINTF (2, 3); + GdkFilterReturn _gdk_x11_dnd_filter (GdkXEvent *xev, GdkEvent *event, diff --git a/gdk/x11/gdkproperty-x11.c b/gdk/x11/gdkproperty-x11.c index 3d843d2b49..2318a2e468 100644 --- a/gdk/x11/gdkproperty-x11.c +++ b/gdk/x11/gdkproperty-x11.c @@ -461,6 +461,26 @@ gdk_x11_get_xatom_by_name_for_display (GdkDisplay *display, gdk_atom_intern (atom_name, FALSE)); } +Atom +_gdk_x11_get_xatom_for_display_printf (GdkDisplay *display, + const gchar *format, + ...) +{ + va_list args; + char *atom_name; + Atom atom; + + va_start (args, format); + atom_name = g_strdup_vprintf (format, args); + va_end (args); + + atom = gdk_x11_get_xatom_by_name_for_display (display, atom_name); + + g_free (atom_name); + + return atom; +} + /** * gdk_x11_get_xatom_by_name: * @atom_name: a string diff --git a/gdk/x11/gdkscreen-x11.c b/gdk/x11/gdkscreen-x11.c index ac0b84319a..1c260423d4 100644 --- a/gdk/x11/gdkscreen-x11.c +++ b/gdk/x11/gdkscreen-x11.c @@ -434,27 +434,23 @@ gdk_x11_screen_get_screen_number (GdkScreen *screen) return GDK_X11_SCREEN (screen)->screen_num; } +static Atom +get_cm_atom (GdkX11Screen *x11_screen) +{ + return _gdk_x11_get_xatom_for_display_printf (x11_screen->display, "_NET_WM_CM_S%d", x11_screen->screen_num); +} + static gboolean check_is_composited (GdkDisplay *display, GdkX11Screen *x11_screen) { - Atom xselection = gdk_x11_atom_to_xatom_for_display (display, x11_screen->cm_selection_atom); Window xwindow; - xwindow = XGetSelectionOwner (GDK_DISPLAY_XDISPLAY (display), xselection); + xwindow = XGetSelectionOwner (GDK_DISPLAY_XDISPLAY (display), get_cm_atom (x11_screen)); return xwindow != None; } -static GdkAtom -make_cm_atom (int screen_number) -{ - gchar *name = g_strdup_printf ("_NET_WM_CM_S%d", screen_number); - GdkAtom atom = gdk_atom_intern (name, FALSE); - g_free (name); - return atom; -} - static void init_monitor_geometry (GdkX11Monitor *monitor, int x, int y, int width, int height) @@ -1076,9 +1072,8 @@ _gdk_x11_screen_setup (GdkScreen *screen) { GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); - x11_screen->cm_selection_atom = make_cm_atom (x11_screen->screen_num); gdk_display_request_selection_notification (x11_screen->display, - x11_screen->cm_selection_atom); + gdk_x11_xatom_to_atom_for_display (x11_screen->display, get_cm_atom (x11_screen))); x11_screen->is_composited = check_is_composited (x11_screen->display, x11_screen); } @@ -1194,10 +1189,8 @@ _gdk_x11_screen_process_owner_change (GdkScreen *screen, #ifdef HAVE_XFIXES XFixesSelectionNotifyEvent *selection_event = (XFixesSelectionNotifyEvent *)event; GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); - Atom xcm_selection_atom = gdk_x11_atom_to_xatom_for_display (x11_screen->display, - x11_screen->cm_selection_atom); - if (selection_event->selection == xcm_selection_atom) + if (selection_event->selection == get_cm_atom (x11_screen)) { gboolean composited = selection_event->owner != None; diff --git a/gdk/x11/gdkscreen-x11.h b/gdk/x11/gdkscreen-x11.h index ffee2cf66b..1dea30040b 100644 --- a/gdk/x11/gdkscreen-x11.h +++ b/gdk/x11/gdkscreen-x11.h @@ -56,7 +56,6 @@ struct _GdkX11Screen gint xft_dpi; /* Window manager */ - GdkAtom cm_selection_atom; long last_wmspec_check_time; Window wmspec_check_window; char *window_manager_name; |