gegl r2697 - in trunk: . gegl/buffer



Author: ok
Date: Tue Nov  4 01:06:57 2008
New Revision: 2697
URL: http://svn.gnome.org/viewvc/gegl?rev=2697&view=rev

Log:
Only send pyramid void messages for tile storages where the zoom
handler has seen a tile with z!=0.
* gegl/buffer/gegl-tile-handler-zoom.c: (get_tile):
* gegl/buffer/gegl-tile-storage.c: (gegl_tile_storage_constructor):
* gegl/buffer/gegl-tile-storage.h:
* gegl/buffer/gegl-tile.c: (gegl_tile_void_pyramid):


Modified:
   trunk/ChangeLog
   trunk/gegl/buffer/gegl-tile-handler-zoom.c
   trunk/gegl/buffer/gegl-tile-storage.c
   trunk/gegl/buffer/gegl-tile-storage.h
   trunk/gegl/buffer/gegl-tile.c

Modified: trunk/gegl/buffer/gegl-tile-handler-zoom.c
==============================================================================
--- trunk/gegl/buffer/gegl-tile-handler-zoom.c	(original)
+++ trunk/gegl/buffer/gegl-tile-handler-zoom.c	Tue Nov  4 01:06:57 2008
@@ -35,6 +35,7 @@
 
 #include <babl/babl.h>
 #include "gegl-tile-backend.h"
+#include "gegl-tile-storage.h"
 
 void gegl_tile_handler_cache_insert (GeglTileHandlerCache *cache,
                                      GeglTile             *tile,
@@ -223,6 +224,7 @@
     {
       return NULL;
     }
+  zoom->tile_storage->seen_zoom = TRUE;
 
   g_assert (zoom->backend);
   g_object_get (zoom->backend, "tile-width", &tile_width,

Modified: trunk/gegl/buffer/gegl-tile-storage.c
==============================================================================
--- trunk/gegl/buffer/gegl-tile-storage.c	(original)
+++ trunk/gegl/buffer/gegl-tile-storage.c	Tue Nov  4 01:06:57 2008
@@ -274,6 +274,7 @@
                                               tile_storage_idle,
                                               tile_storage,
                                               NULL);
+  tile_storage->seen_zoom = FALSE;
 
   return object;
 }

Modified: trunk/gegl/buffer/gegl-tile-storage.h
==============================================================================
--- trunk/gegl/buffer/gegl-tile-storage.h	(original)
+++ trunk/gegl/buffer/gegl-tile-storage.h	Tue Nov  4 01:06:57 2008
@@ -40,6 +40,8 @@
   gint         width;
   gint         height;
   gchar       *path;
+  gboolean     seen_zoom; /* if the storage has seen any tiles that are
+                             not at level 0 */
 
   guint        idle_swapper;
 };

Modified: trunk/gegl/buffer/gegl-tile.c
==============================================================================
--- trunk/gegl/buffer/gegl-tile.c	(original)
+++ trunk/gegl/buffer/gegl-tile.c	Tue Nov  4 01:06:57 2008
@@ -32,6 +32,7 @@
 #include "gegl-buffer-private.h"
 #include "gegl-tile.h"
 #include "gegl-tile-source.h"
+#include "gegl-tile-storage.h"
 
 
 G_DEFINE_TYPE (GeglTile, gegl_tile, G_TYPE_OBJECT)
@@ -293,6 +294,7 @@
 gegl_tile_void_pyramid (GeglTile *tile)
 {
   if (tile->tile_storage && 
+      tile->tile_storage->seen_zoom &&
       tile->z == 0) /* we only accepting voiding the base level */
     {
       _gegl_tile_void_pyramid (GEGL_TILE_SOURCE (tile->tile_storage), 



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