libegg r861 - in trunk: . libegg/toolpalette



Author: hasselmm
Date: Fri Mar 28 10:27:58 2008
New Revision: 861
URL: http://svn.gnome.org/viewvc/libegg?rev=861&view=rev

Log:
Avoid those strange rendering artifacts when expanding groups.

* libegg/toolpalette/eggtoolitemgroup.c:
  Move gtk_widget_queue_resize_no_redraw() invokation and call
  gdk_window_process_updates() in egg_tool_item_group_animation_cb().
* libegg/toolpalette/eggtoolpalette.c: Just an empty line.


Modified:
   trunk/ChangeLog
   trunk/libegg/toolpalette/eggtoolitemgroup.c
   trunk/libegg/toolpalette/eggtoolpalette.c

Modified: trunk/libegg/toolpalette/eggtoolitemgroup.c
==============================================================================
--- trunk/libegg/toolpalette/eggtoolitemgroup.c	(original)
+++ trunk/libegg/toolpalette/eggtoolitemgroup.c	Fri Mar 28 10:27:58 2008
@@ -743,6 +743,9 @@
   EggToolItemGroup *group = EGG_TOOL_ITEM_GROUP (data);
   gint64 timestamp = egg_tool_item_group_get_animation_timestamp (group);
 
+  /* enque this early to reduce number of expose events */
+  gtk_widget_queue_resize_no_redraw (GTK_WIDGET (group));
+
   if (GTK_WIDGET_REALIZED (group->priv->header))
     {
       GtkWidget *alignment = egg_tool_item_group_get_alignment (group);
@@ -794,7 +797,13 @@
   if (timestamp >= ANIMATION_DURATION)
     group->priv->animation_timeout = NULL;
 
-  gtk_widget_queue_resize_no_redraw (GTK_WIDGET (group));
+  /* Ensure that all composited windows and child windows are repainted, before
+   * the parent widget gets its expose-event. This is needed to avoid heavy
+   * rendering artifacts. GTK+ should take care about this issue by itself I
+   * guess, but currently it doesn't. Also I don't understand the parameters
+   * of this issue well enough yet, to file a bug report.
+   */
+  gdk_window_process_updates (GTK_WIDGET (group)->window, TRUE);
 
   return (group->priv->animation_timeout != NULL);
 }

Modified: trunk/libegg/toolpalette/eggtoolpalette.c
==============================================================================
--- trunk/libegg/toolpalette/eggtoolpalette.c	(original)
+++ trunk/libegg/toolpalette/eggtoolpalette.c	Fri Mar 28 10:27:58 2008
@@ -372,6 +372,7 @@
     }
 
   cairo_pop_group_to_source (cr);
+
   cairo_paint (cr);
   cairo_destroy (cr);
 



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