[gtk+] testcairo: Connect to draw signal



commit 9c980372d27f79423f2c07c7a3203ec0db5c1749
Author: Benjamin Otte <otte redhat com>
Date:   Wed Sep 8 22:12:51 2010 +0200

    testcairo: Connect to draw signal

 tests/testcairo.c |   36 ++++++++----------------------------
 1 files changed, 8 insertions(+), 28 deletions(-)
---
diff --git a/tests/testcairo.c b/tests/testcairo.c
index dc3a27c..f66d2d6 100644
--- a/tests/testcairo.c
+++ b/tests/testcairo.c
@@ -115,15 +115,17 @@ draw_3circles (cairo_t *cr,
   cairo_fill (cr);
 }
 
-static void
-draw (cairo_t *cr,
-      int      width,
-      int      height)
+static gboolean
+on_draw (GtkWidget *widget,
+         cairo_t   *cr)
 {
   cairo_surface_t *overlay, *punch, *circles;
   cairo_t *overlay_cr, *punch_cr, *circles_cr;
+  int width, height;
 
   /* Fill the background */
+  width = gtk_widget_get_allocated_width (widget);
+  height = gtk_widget_get_allocated_height (widget);
   double radius = 0.5 * (width < height ? width : height) - 10;
   double xc = width / 2.;
   double yc = height / 2.;
@@ -131,20 +133,14 @@ draw (cairo_t *cr,
   overlay = cairo_surface_create_similar (cairo_get_target (cr),
 					  CAIRO_CONTENT_COLOR_ALPHA,
 					  width, height);
-  if (overlay == NULL)
-    return;
 
   punch = cairo_surface_create_similar (cairo_get_target (cr),
 					CAIRO_CONTENT_ALPHA,
 					width, height);
-  if (punch == NULL)
-    return;
 
   circles = cairo_surface_create_similar (cairo_get_target (cr),
 					  CAIRO_CONTENT_COLOR_ALPHA,
 					  width, height);
-  if (circles == NULL)
-    return;
     
   fill_checks (cr, 0, 0, width, height);
 
@@ -188,22 +184,6 @@ draw (cairo_t *cr,
   cairo_surface_destroy (overlay);
   cairo_surface_destroy (punch);
   cairo_surface_destroy (circles);
-}
-
-static gboolean
-on_expose_event (GtkWidget      *widget,
-		 GdkEventExpose *event,
-		 gpointer        data)
-{
-  GtkAllocation allocation;
-  cairo_t *cr;
-
-  cr = gdk_cairo_create (gtk_widget_get_window (widget));
-
-  gtk_widget_get_allocation (widget, &allocation);
-  draw (cr, allocation.width, allocation.height);
-
-  cairo_destroy (cr);
 
   return FALSE;
 }
@@ -223,8 +203,8 @@ main (int argc, char **argv)
   darea = gtk_drawing_area_new ();
   gtk_container_add (GTK_CONTAINER (window), darea);
 
-  g_signal_connect (darea, "expose-event",
-		    G_CALLBACK (on_expose_event), NULL);
+  g_signal_connect (darea, "draw",
+		    G_CALLBACK (on_draw), NULL);
   g_signal_connect (window, "destroy-event",
 		    G_CALLBACK (gtk_main_quit), NULL);
 



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