[libwnck] core: Add Screen argument to _wnck_read_icons()



commit 5021fc4cb25cc55b58421a707b3daa67efc122d8
Author: Vincent Untz <vuntz gnome org>
Date:   Wed Jan 19 23:37:28 2011 +0100

    core: Add Screen argument to _wnck_read_icons()

 libwnck/application.c |    3 ++-
 libwnck/window.c      |    3 ++-
 libwnck/xutils.c      |   35 ++++++++++++++++++++++++-----------
 libwnck/xutils.h      |    3 ++-
 4 files changed, 30 insertions(+), 14 deletions(-)
---
diff --git a/libwnck/application.c b/libwnck/application.c
index c39bc1a..4b1c343 100644
--- a/libwnck/application.c
+++ b/libwnck/application.c
@@ -347,7 +347,8 @@ get_icons (WnckApplication *app)
   icon = NULL;
   mini_icon = NULL;
 
-  if (_wnck_read_icons (app->priv->xwindow,
+  if (_wnck_read_icons (WNCK_SCREEN_XSCREEN (app->priv->screen),
+                        app->priv->xwindow,
                         app->priv->icon_cache,
                         &icon,
                         DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT,
diff --git a/libwnck/window.c b/libwnck/window.c
index 69a6ceb..a147c89 100644
--- a/libwnck/window.c
+++ b/libwnck/window.c
@@ -2068,7 +2068,8 @@ get_icons (WnckWindow *window)
   icon = NULL;
   mini_icon = NULL;
 
-  if (_wnck_read_icons (window->priv->xwindow,
+  if (_wnck_read_icons (WNCK_SCREEN_XSCREEN (window->priv->screen),
+                        window->priv->xwindow,
                         window->priv->icon_cache,
                         &icon,
                         DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT,
diff --git a/libwnck/xutils.c b/libwnck/xutils.c
index 9054484..8c35dab 100644
--- a/libwnck/xutils.c
+++ b/libwnck/xutils.c
@@ -1550,7 +1550,8 @@ argbdata_to_pixdata (gulong *argb_data, int len, guchar **pixdata)
 }
 
 static gboolean
-read_rgb_icon (Window         xwindow,
+read_rgb_icon (Screen        *screen,
+               Window         xwindow,
                int            ideal_width,
                int            ideal_height,
                int            ideal_mini_width,
@@ -1562,6 +1563,7 @@ read_rgb_icon (Window         xwindow,
                int           *mini_height,
                guchar       **mini_pixdata)
 {
+  Display *display;
   Atom type;
   int format;
   gulong nitems;
@@ -1573,10 +1575,12 @@ read_rgb_icon (Window         xwindow,
   gulong *best_mini;
   int mini_w, mini_h;
 
+  display = DisplayOfScreen (screen);
+
   _wnck_error_trap_push ();
   type = None;
   data = NULL;
-  result = XGetWindowProperty (_wnck_get_default_display (),
+  result = XGetWindowProperty (display,
 			       xwindow,
 			       _wnck_atom_get ("_NET_WM_ICON"),
 			       0, G_MAXLONG,
@@ -1691,7 +1695,8 @@ _wnck_gdk_pixbuf_get_from_pixmap (Pixmap xpixmap)
 }
 
 static gboolean
-try_pixmap_and_mask (Pixmap      src_pixmap,
+try_pixmap_and_mask (Screen     *screen,
+                     Pixmap      src_pixmap,
                      Pixmap      src_mask,
                      GdkPixbuf **iconp,
                      int         ideal_width,
@@ -1789,10 +1794,12 @@ try_pixmap_and_mask (Pixmap      src_pixmap,
 }
 
 static void
-get_kwm_win_icon (Window  xwindow,
+get_kwm_win_icon (Screen *screen,
+                  Window  xwindow,
                   Pixmap *pixmap,
                   Pixmap *mask)
 {
+  Display *display;
   Atom type;
   int format;
   gulong nitems;
@@ -1800,12 +1807,14 @@ get_kwm_win_icon (Window  xwindow,
   Pixmap *icons;
   int err, result;
 
+  display = DisplayOfScreen (screen);
+
   *pixmap = None;
   *mask = None;
 
   _wnck_error_trap_push ();
   icons = NULL;
-  result = XGetWindowProperty (_wnck_get_default_display (), xwindow,
+  result = XGetWindowProperty (display, xwindow,
 			       _wnck_atom_get ("KWM_WIN_ICON"),
 			       0, G_MAXLONG,
 			       False,
@@ -2043,7 +2052,8 @@ scaled_from_pixdata (guchar *pixdata,
 }
 
 gboolean
-_wnck_read_icons (Window         xwindow,
+_wnck_read_icons (Screen        *screen,
+                  Window         xwindow,
                   WnckIconCache *icon_cache,
                   GdkPixbuf    **iconp,
                   int            ideal_width,
@@ -2052,6 +2062,7 @@ _wnck_read_icons (Window         xwindow,
                   int            ideal_mini_width,
                   int            ideal_mini_height)
 {
+  Display *display;
   guchar *pixdata;
   int w, h;
   guchar *mini_pixdata;
@@ -2064,6 +2075,8 @@ _wnck_read_icons (Window         xwindow,
 
   g_return_val_if_fail (icon_cache != NULL, FALSE);
 
+  display = DisplayOfScreen (screen);
+
   *iconp = NULL;
   *mini_iconp = NULL;
 
@@ -2098,7 +2111,7 @@ _wnck_read_icons (Window         xwindow,
     {
       icon_cache->net_wm_icon_dirty = FALSE;
 
-      if (read_rgb_icon (xwindow,
+      if (read_rgb_icon (screen, xwindow,
                          ideal_width, ideal_height,
                          ideal_mini_width, ideal_mini_height,
                          &w, &h, &pixdata,
@@ -2122,7 +2135,7 @@ _wnck_read_icons (Window         xwindow,
       icon_cache->wm_hints_dirty = FALSE;
 
       _wnck_error_trap_push ();
-      hints = XGetWMHints (_wnck_get_default_display (), xwindow);
+      hints = XGetWMHints (display, xwindow);
       _wnck_error_trap_pop ();
       pixmap = None;
       mask = None;
@@ -2145,7 +2158,7 @@ _wnck_read_icons (Window         xwindow,
            mask != icon_cache->prev_mask) &&
           pixmap != None)
         {
-          if (try_pixmap_and_mask (pixmap, mask,
+          if (try_pixmap_and_mask (screen, pixmap, mask,
                                    iconp, ideal_width, ideal_height,
                                    mini_iconp, ideal_mini_width, ideal_mini_height))
             {
@@ -2165,13 +2178,13 @@ _wnck_read_icons (Window         xwindow,
     {
       icon_cache->kwm_win_icon_dirty = FALSE;
 
-      get_kwm_win_icon (xwindow, &pixmap, &mask);
+      get_kwm_win_icon (screen, xwindow, &pixmap, &mask);
 
       if ((pixmap != icon_cache->prev_pixmap ||
            mask != icon_cache->prev_mask) &&
           pixmap != None)
         {
-          if (try_pixmap_and_mask (pixmap, mask,
+          if (try_pixmap_and_mask (screen, pixmap, mask,
                                    iconp, ideal_width, ideal_height,
                                    mini_iconp, ideal_mini_width, ideal_mini_height))
             {
diff --git a/libwnck/xutils.h b/libwnck/xutils.h
index e19f028..502ecf3 100644
--- a/libwnck/xutils.h
+++ b/libwnck/xutils.h
@@ -169,7 +169,8 @@ void           _wnck_icon_cache_set_want_fallback    (WnckIconCache *icon_cache,
                                                       gboolean       setting);
 gboolean       _wnck_icon_cache_get_is_fallback      (WnckIconCache *icon_cache);
 
-gboolean _wnck_read_icons         (Window          xwindow,
+gboolean _wnck_read_icons         (Screen         *screen,
+                                   Window          xwindow,
                                    WnckIconCache  *icon_cache,
                                    GdkPixbuf     **iconp,
                                    int             ideal_width,



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