From 6eea6ddcc3a8dc1ac18e83161de2acfa77a356e8 Mon Sep 17 00:00:00 2001 From: John Lindgren Date: Sun, 23 Jun 2013 21:22:13 +0200 Subject: [PATCH] Optimize gdk_x11_screen_supports_net_wm_hint() Move the call to gdk_x11_atom_to_xatom_for_display() outside of the search loop in gdk_x11_screen_supports_net_wm_hint(). In my test case (running Audacious for about a minute), this reduced the total number of hash table lookups performed from 370,000 to 230,000. https://bugzilla.gnome.org/show_bug.cgi?id=702913 --- gdk/x11/gdkscreen-x11.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gdk/x11/gdkscreen-x11.c b/gdk/x11/gdkscreen-x11.c index 760da2ba4d..804b18ed1a 100644 --- a/gdk/x11/gdkscreen-x11.c +++ b/gdk/x11/gdkscreen-x11.c @@ -1470,6 +1470,7 @@ gdk_x11_screen_supports_net_wm_hint (GdkScreen *screen, GdkX11Screen *x11_screen; NetWmSupportedAtoms *supported_atoms; GdkDisplay *display; + Atom atom; g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE); @@ -1521,13 +1522,12 @@ gdk_x11_screen_supports_net_wm_hint (GdkScreen *screen, if (supported_atoms->atoms == NULL) return FALSE; - i = 0; - while (i < supported_atoms->n_atoms) - { - if (supported_atoms->atoms[i] == gdk_x11_atom_to_xatom_for_display (display, property)) - return TRUE; + atom = gdk_x11_atom_to_xatom_for_display (display, property); - ++i; + for (i = 0; i < supported_atoms->n_atoms; i++) + { + if (supported_atoms->atoms[i] == atom) + return TRUE; } return FALSE;