[maemo-commits] [maemo-commits] r18895 - in projects/haf/trunk/sapwood: . server

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Mon Jul 20 16:55:44 EEST 2009
Author: herzi
Date: 2009-07-20 16:55:43 +0300 (Mon, 20 Jul 2009)
New Revision: 18895

Modified:
   projects/haf/trunk/sapwood/ChangeLog
   projects/haf/trunk/sapwood/server/sapwood-server.c
Log:
2009-01-09  Sven Herzberg  <sven at imendio.com>

	Be able to choose the depth of the pixmap by providing a colormap
	(through a GdkWindow)

	* server/sapwood-server.c (extract_pixmap_single): create a single
	GdkWindow to be able to let it provide the colormap and default depth
	for the 32 bit pixmaps later



Modified: projects/haf/trunk/sapwood/ChangeLog
===================================================================
--- projects/haf/trunk/sapwood/ChangeLog	2009-07-20 13:55:13 UTC (rev 18894)
+++ projects/haf/trunk/sapwood/ChangeLog	2009-07-20 13:55:43 UTC (rev 18895)
@@ -1,3 +1,12 @@
+2009-01-09  Sven Herzberg  <sven at imendio.com>
+
+	Be able to choose the depth of the pixmap by providing a colormap
+	(through a GdkWindow)
+
+	* server/sapwood-server.c (extract_pixmap_single): create a single
+	GdkWindow to be able to let it provide the colormap and default depth
+	for the 32 bit pixmaps later
+
 2009-06-19  Sven Herzberg  <herzi at lanedo.com>
 
 	NB#117873 - Dim insensitive icons with transparency instead of

Modified: projects/haf/trunk/sapwood/server/sapwood-server.c
===================================================================
--- projects/haf/trunk/sapwood/server/sapwood-server.c	2009-07-20 13:55:13 UTC (rev 18894)
+++ projects/haf/trunk/sapwood/server/sapwood-server.c	2009-07-20 13:55:43 UTC (rev 18895)
@@ -82,12 +82,37 @@
 		       int width, int height,
 		       PixbufOpenResponse *rep)
 {
+  static GdkWindow* rgba_window = NULL;
   GdkPixmap    *pixmap;
   gboolean      need_mask;
   cairo_t      *cr;
 
-  pixmap = gdk_pixmap_new (NULL, width, height, server_depth);
+  if (G_UNLIKELY (!rgba_window)) {
+        GdkWindowAttr attrs = {
+                NULL,                        /* gchar *title */
+                0,                           /* gint event_mask */
+                0, 0,                        /* gint x, y */
+                1,                           /* gint width */
+                1,                           /* gint height */
+                GDK_INPUT_OUTPUT,            /* GdkWindowClass wclass */
+                NULL,                        /* GdkVisual *visual */
+                NULL,                        /* GdkColormap *colormap */
+                GDK_WINDOW_TOPLEVEL,         /* GdkWindowType window_type */
+                NULL,                        /* GdkCursor *cursor */
+                NULL,                        /* gchar *wmclass_name */
+                NULL,                        /* gchar *wmclass_class */
+                TRUE,                        /* gboolean override_redirect */
+                GDK_WINDOW_TYPE_HINT_NORMAL, /* GdkWindowTypeHint type_hint */
+        };
+        GdkScreen* screen = gdk_screen_get_default ();
+        attrs.visual = gdk_screen_get_rgb_visual (screen);
+        attrs.colormap = gdk_screen_get_rgb_colormap (screen);
+        rgba_window = gdk_window_new (gdk_screen_get_root_window (screen), &attrs,
+                                 GDK_WA_VISUAL | GDK_WA_COLORMAP);
+  }
 
+  pixmap = gdk_pixmap_new (rgba_window, width, height, -1);
+
   cr = gdk_cairo_create (pixmap);
 
   cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);

More information about the maemo-commits mailing list