[gtk+] Optimize gdk_x11_screen_supports_net_wm_hint()



commit 6eea6ddcc3a8dc1ac18e83161de2acfa77a356e8
Author: John Lindgren <john lindgren aol com>
Date:   Sun Jun 23 21:22:13 2013 +0200

    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 |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)
---
diff --git a/gdk/x11/gdkscreen-x11.c b/gdk/x11/gdkscreen-x11.c
index 760da2b..804b18e 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)
+  atom = gdk_x11_atom_to_xatom_for_display (display, property);
+
+  for (i = 0; i < supported_atoms->n_atoms; i++)
     {
-      if (supported_atoms->atoms[i] == gdk_x11_atom_to_xatom_for_display (display, property))
+      if (supported_atoms->atoms[i] == atom)
         return TRUE;
-
-      ++i;
     }
 
   return FALSE;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]