[maemo-commits] [maemo-commits] r19080 - in projects/haf/trunk/gtk+: . gdk

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Thu Aug 6 15:43:13 EEST 2009
Author: herzi
Date: 2009-08-06 15:42:59 +0300 (Thu, 06 Aug 2009)
New Revision: 19080

Modified:
   projects/haf/trunk/gtk+/ChangeLog
   projects/haf/trunk/gtk+/gdk/gdkwindow.c
Log:
2009-08-06  Sven Herzberg  <herzi at lanedo.com>

	Fixes: NB#129361 - [AF checked] compositing issues with rgba
	sapwood/gtk+

	* gdk/gdkwindow.c (gdk_window_new), (gdk_window_end_paint): provide
	the information that the compositor needs


Modified: projects/haf/trunk/gtk+/ChangeLog
===================================================================
--- projects/haf/trunk/gtk+/ChangeLog	2009-08-06 12:42:31 UTC (rev 19079)
+++ projects/haf/trunk/gtk+/ChangeLog	2009-08-06 12:42:59 UTC (rev 19080)
@@ -1,5 +1,13 @@
 2009-08-06  Sven Herzberg  <herzi at lanedo.com>
 
+	Fixes: NB#129361 - [AF checked] compositing issues with rgba
+	sapwood/gtk+
+
+	* gdk/gdkwindow.c (gdk_window_new), (gdk_window_end_paint): provide
+	the information that the compositor needs
+
+2009-08-06  Sven Herzberg  <herzi at lanedo.com>
+
 	Fixes: NB#89864 - [AF Checked] RGBA support
 
 	* gtk/gtktreeview.c (gtk_tree_view_realize),

Modified: projects/haf/trunk/gtk+/gdk/gdkwindow.c
===================================================================
--- projects/haf/trunk/gtk+/gdk/gdkwindow.c	2009-08-06 12:42:31 UTC (rev 19079)
+++ projects/haf/trunk/gtk+/gdk/gdkwindow.c	2009-08-06 12:42:59 UTC (rev 19080)
@@ -35,6 +35,11 @@
 #include "gdkscreen.h"
 #include "gdkalias.h"
 
+#ifdef MAEMO_CHANGES
+#include <X11/Xatom.h>
+#include "x11/gdkx.h"
+#endif
+
 #define USE_BACKING_STORE	/* Appears to work on Win32, too, now. */
 
 typedef struct _GdkWindowPaint GdkWindowPaint;
@@ -391,6 +396,25 @@
       gdk_window_set_composited (window, TRUE);
       gdk_window_set_auto_composite (window, TRUE);
     }
+
+  /* set a flag to tell the window manager that we don't intend to use the
+   * alpha value; we use RGBA windows because we want to avoid BadMatch errors
+   * but as XFillRectangle() (called by the GtkWindow's expose handler) doesn't
+   * set the alpha value to 1.0 (instead it keeps it on 0.0), we have to tell
+   * the window manager, that we are not really invisible */
+  if (attributes->window_type == GDK_WINDOW_TOPLEVEL)
+    {
+      Atom  property = XInternAtom (GDK_WINDOW_XDISPLAY (window), "_MAEMO_IGNORE_ALPHA", True);
+      guint32 data = 1;
+      XChangeProperty (GDK_WINDOW_XDISPLAY (window),
+                       GDK_WINDOW_XID (window),
+                       property,
+                       XA_CARDINAL,
+                       32,
+                       PropModeReplace,
+                       (guchar*) &data,
+                       1);
+    }
 #endif
 
   return window;
@@ -1211,7 +1235,9 @@
 {
 #ifdef USE_BACKING_STORE
   GdkWindowObject *private = (GdkWindowObject *)window;
+#ifndef MAEMO_CHANGES
   GdkWindowObject *composited;
+#endif
   GdkWindowPaint *paint;
   GdkGC *tmp_gc;
 #ifdef MAEMO_CHANGES

More information about the maemo-commits mailing list