[gtk+/wip/simple-draw3] GtkPixelCache: Allow NULL for invalidate region



commit 7442ca3f632068ac8b80619cc6ed80f9bbced525
Author: Alexander Larsson <alexl redhat com>
Date:   Thu May 2 11:07:09 2013 +0200

    GtkPixelCache: Allow NULL for invalidate region

 gtk/gtkpixelcache.c |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtkpixelcache.c b/gtk/gtkpixelcache.c
index 517fb33..cc56311 100644
--- a/gtk/gtkpixelcache.c
+++ b/gtk/gtkpixelcache.c
@@ -71,10 +71,23 @@ _gtk_pixel_cache_invalidate (GtkPixelCache *cache,
                             cairo_region_t *region)
 {
   cairo_rectangle_int_t r;
+  cairo_region_t *free_region = NULL;
 
-  if (cache->surface == NULL || cairo_region_is_empty (region))
+  if (cache->surface == NULL ||
+      (region != NULL && cairo_region_is_empty (region)))
     return;
 
+  if (region == NULL)
+    {
+      r.x = cache->surface_x;
+      r.y = cache->surface_y;
+      r.width = cache->surface_w;
+      r.height = cache->surface_h;
+
+      free_region = region =
+       cairo_region_create_rectangle (&r);
+    }
+
   if (cache->surface_dirty == NULL)
     {
       cache->surface_dirty = cairo_region_copy (region);
@@ -93,10 +106,14 @@ _gtk_pixel_cache_invalidate (GtkPixelCache *cache,
                              cache->surface_y);
     }
 
+  if (free_region)
+    cairo_region_destroy (free_region);
+
   r.x = 0;
   r.y = 0;
   r.width = cache->surface_w;
   r.height = cache->surface_h;
+
   cairo_region_intersect_rectangle (cache->surface_dirty, &r);
 }
 


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