[maemo-commits] [maemo-commits] r17968 - in projects/haf/branches/gtk+/rgba-ng: . gdk

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Thu Apr 2 10:07:44 EEST 2009
Author: herzi
Date: 2009-04-02 10:07:39 +0300 (Thu, 02 Apr 2009)
New Revision: 17968

Modified:
   projects/haf/branches/gtk+/rgba-ng/ChangeLog
   projects/haf/branches/gtk+/rgba-ng/gdk/gdkwindow.c
   projects/haf/branches/gtk+/rgba-ng/gdk/gdkwindow.h
Log:
2009-01-09  Sven Herzberg  <sven at imendio.com>

	Fixes: NB#89864 - RGBA support

	* gdk/gdkwindow.c,
	* gdk/gdkwindow.h: added auto_composite property to GdkWindow; if
	enabled a new code path in gdk_window_end_paint() will be triggered
	that automatically renders compoited windows. Application developers
	will only have to set_composited(TRUE) and set_auto_composite(TRUE) to
	get nice RGBA subwindows



Modified: projects/haf/branches/gtk+/rgba-ng/ChangeLog
===================================================================
--- projects/haf/branches/gtk+/rgba-ng/ChangeLog	2009-04-02 07:07:22 UTC (rev 17967)
+++ projects/haf/branches/gtk+/rgba-ng/ChangeLog	2009-04-02 07:07:39 UTC (rev 17968)
@@ -1,3 +1,14 @@
+2009-01-09  Sven Herzberg  <sven at imendio.com>
+
+	About: NB#89864 - RGBA support
+
+	* gdk/gdkwindow.c,
+	* gdk/gdkwindow.h: added auto_composite property to GdkWindow; if
+	enabled a new code path in gdk_window_end_paint() will be triggered
+	that automatically renders compoited windows. Application developers
+	will only have to set_composited(TRUE) and set_auto_composite(TRUE) to
+	get nice RGBA subwindows
+
 2009-01-14  Sven Herzberg  <sven at imendio.com>
 
 	About: NB#89864 - RGBA support

Modified: projects/haf/branches/gtk+/rgba-ng/gdk/gdkwindow.c
===================================================================
--- projects/haf/branches/gtk+/rgba-ng/gdk/gdkwindow.c	2009-04-02 07:07:22 UTC (rev 17967)
+++ projects/haf/branches/gtk+/rgba-ng/gdk/gdkwindow.c	2009-04-02 07:07:39 UTC (rev 17968)
@@ -1178,6 +1178,10 @@
   GdkWindowObject *composited;
   GdkWindowPaint *paint;
   GdkGC *tmp_gc;
+#ifdef MAEMO_CHANGES
+  cairo_t *cr;
+  GList *subwindow;
+#endif
   GdkRectangle clip_box;
   gint x_offset, y_offset;
 
@@ -1234,7 +1238,31 @@
 			 clip_box.width, clip_box.height);
       reset_redirect_clip (window, tmp_gc, &data);
     }
-  
+
+#ifdef MAEMO_CHANGES
+  cr = gdk_cairo_create (window);
+  for (subwindow = gdk_window_peek_children (window);
+       subwindow;
+       subwindow = subwindow->next)
+    {
+      int x, y, w, h;
+
+      if (!gdk_window_get_auto_composite (subwindow->data))
+        continue;
+
+      gdk_window_get_position (subwindow->data,
+                               &x, &y);
+      gdk_window_get_size (subwindow->data, &w, &h);
+
+      cairo_save (cr);
+      gdk_cairo_set_source_pixmap (cr, subwindow->data, x, y);
+      cairo_rectangle (cr, x, y, w, h);
+      cairo_fill (cr);
+      cairo_restore (cr);
+    }
+  cairo_destroy (cr);
+#endif
+
   /* Reset clip region of the cached GdkGC */
   gdk_gc_set_clip_region (tmp_gc, NULL);
 
@@ -4126,6 +4154,41 @@
   return GDK_WINDOW_IMPL_GET_IFACE (private->impl)->set_static_gravities (window, use_static);
 }
 
+#ifdef MAEMO_CHANGES
+gboolean
+gdk_window_get_auto_composite (GdkWindow *window)
+{
+  GdkWindowObject *private = (GdkWindowObject *)window;
+
+  g_return_val_if_fail (GDK_IS_WINDOW (window), FALSE);
+
+  return private->auto_composite;
+}
+
+void
+gdk_window_set_auto_composite (GdkWindow *window,
+                               gboolean   auto_composite)
+{
+  GdkWindowObject *private = (GdkWindowObject *)window;
+
+  g_return_if_fail (GDK_IS_WINDOW (window));
+
+  auto_composite = auto_composite != FALSE;
+
+  if (private->auto_composite == auto_composite)
+    return;
+
+  if (!private->composited && auto_composite)
+    {
+      g_warning ("gdk_window_set_auto_composite called but "
+                 "window is not composited");
+      return;
+    }
+
+  private->auto_composite = auto_composite;
+}
+#endif
+
 /**
  * gdk_window_set_composited:
  * @window: a #GdkWindow

Modified: projects/haf/branches/gtk+/rgba-ng/gdk/gdkwindow.h
===================================================================
--- projects/haf/branches/gtk+/rgba-ng/gdk/gdkwindow.h	2009-04-02 07:07:22 UTC (rev 17967)
+++ projects/haf/branches/gtk+/rgba-ng/gdk/gdkwindow.h	2009-04-02 07:07:39 UTC (rev 17968)
@@ -297,7 +297,10 @@
   guint accept_focus : 1;
   guint focus_on_map : 1;
   guint shaped : 1;
-  
+#ifdef MAEMO_CHANGES
+  guint auto_composite : 1;
+#endif
+
   GdkEventMask event_mask;
 
   guint update_and_descendants_freeze_count;
@@ -400,6 +403,11 @@
  */
 void gdk_window_set_child_shapes (GdkWindow *window);
 
+#ifdef MAEMO_CHANGES
+void     gdk_window_set_auto_composite (GdkWindow *window,
+                                        gboolean   auto_composite);
+gboolean gdk_window_get_auto_composite (GdkWindow *window);
+#endif
 void gdk_window_set_composited   (GdkWindow *window,
                                   gboolean composited);
 


More information about the maemo-commits mailing list