[libchamplain] Remove the unnecessary ChamplainRenderCallbackData structure



commit 3f11ecec77e826e177886580845415dcabfb8d3e
Author: JiÅ?í Techet <techet gmail com>
Date:   Wed Feb 2 22:10:48 2011 +0100

    Remove the unnecessary ChamplainRenderCallbackData structure

 champlain/champlain-error-tile-renderer.c      |   13 +++----
 champlain/champlain-file-cache.c               |    6 ++-
 champlain/champlain-file-tile-source.c         |   10 +++--
 champlain/champlain-image-renderer.c           |   47 ++++++++++--------------
 champlain/champlain-marshal.list               |    1 +
 champlain/champlain-memory-cache.c             |    6 ++-
 champlain/champlain-memphis-renderer.c         |   27 ++++++--------
 champlain/champlain-network-bbox-tile-source.c |   10 +++--
 champlain/champlain-network-tile-source.c      |   10 +++--
 champlain/champlain-null-tile-source.c         |   10 +++--
 champlain/champlain-renderer.h                 |    1 -
 champlain/champlain-tile.c                     |    7 ++--
 champlain/champlain-tile.h                     |   16 --------
 13 files changed, 73 insertions(+), 91 deletions(-)
---
diff --git a/champlain/champlain-error-tile-renderer.c b/champlain/champlain-error-tile-renderer.c
index 3764e49..daa4129 100644
--- a/champlain/champlain-error-tile-renderer.c
+++ b/champlain/champlain-error-tile-renderer.c
@@ -193,17 +193,14 @@ render (ChamplainRenderer *renderer, ChamplainTile *tile)
   ChamplainErrorTileRenderer *error_renderer = CHAMPLAIN_ERROR_TILE_RENDERER (renderer);
   ChamplainErrorTileRendererPrivate *priv = error_renderer->priv;
   ClutterActor *clone;
-  guint size;
-  ChamplainRenderCallbackData callback_data;
-
-  callback_data.data = NULL;
-  callback_data.size = 0;
-  callback_data.error = FALSE;
+  gpointer data = NULL;
+  guint size = 0;
+  gboolean error = FALSE;
 
   if (champlain_tile_get_state (tile) == CHAMPLAIN_STATE_LOADED)
     {
       /* cache is just validating tile - don't generate error tile in this case - instead use what we have */
-      g_signal_emit_by_name (tile, "render-complete", &callback_data);
+      g_signal_emit_by_name (tile, "render-complete", data, size, error);
       return;
     }
 
@@ -250,7 +247,7 @@ render (ChamplainRenderer *renderer, ChamplainTile *tile)
   clone = clutter_texture_new ();
   clutter_texture_set_cogl_texture (CLUTTER_TEXTURE (clone), priv->error_tex);
   champlain_tile_set_content (tile, clone);
-  g_signal_emit_by_name (tile, "render-complete", &callback_data);
+  g_signal_emit_by_name (tile, "render-complete", data, size, error);
 }
 
 
diff --git a/champlain/champlain-file-cache.c b/champlain/champlain-file-cache.c
index f9223f0..06e25bf 100644
--- a/champlain/champlain-file-cache.c
+++ b/champlain/champlain-file-cache.c
@@ -514,7 +514,9 @@ typedef struct
 
 static void
 tile_rendered_cb (ChamplainTile *tile,
-    ChamplainRenderCallbackData *data,
+    gpointer data,
+    guint size,
+    gboolean error,
     FileLoadedData *user_data)
 {
   ChamplainMapSource *map_source = user_data->map_source;
@@ -533,7 +535,7 @@ tile_rendered_cb (ChamplainTile *tile,
   file_cache = CHAMPLAIN_FILE_CACHE (map_source);
   priv = file_cache->priv;
 
-  if (data->error)
+  if (error)
     {
       DEBUG ("Tile rendering failed");
       goto load_next;
diff --git a/champlain/champlain-file-tile-source.c b/champlain/champlain-file-tile-source.c
index 5c40d33..a832199 100644
--- a/champlain/champlain-file-tile-source.c
+++ b/champlain/champlain-file-tile-source.c
@@ -151,7 +151,9 @@ champlain_file_tile_source_load_map_data (ChamplainFileTileSource *self,
 
 static void
 tile_rendered_cb (ChamplainTile *tile,
-    ChamplainRenderCallbackData *data,
+    gpointer data,
+    guint size,
+    gboolean error,
     ChamplainMapSource *map_source)
 {
   ChamplainMapSource *next_source;
@@ -160,13 +162,13 @@ tile_rendered_cb (ChamplainTile *tile,
 
   next_source = champlain_map_source_get_next_source (map_source);
 
-  if (!data->error)
+  if (!error)
     {
       ChamplainTileSource *tile_source = CHAMPLAIN_TILE_SOURCE (map_source);
       ChamplainTileCache *tile_cache = champlain_tile_source_get_cache (tile_source);
 
-      if (tile_cache && data->data)
-        champlain_tile_cache_store_tile (tile_cache, tile, data->data, data->size);
+      if (tile_cache && data)
+        champlain_tile_cache_store_tile (tile_cache, tile, data, size);
 
       champlain_tile_set_fade_in (tile, TRUE);
       champlain_tile_set_state (tile, CHAMPLAIN_STATE_DONE);
diff --git a/champlain/champlain-image-renderer.c b/champlain/champlain-image-renderer.c
index 389abe1..6548f7b 100644
--- a/champlain/champlain-image-renderer.c
+++ b/champlain/champlain-image-renderer.c
@@ -124,37 +124,35 @@ static void
 render (ChamplainRenderer *renderer, ChamplainTile *tile)
 {
   ChamplainImageRendererPrivate *priv = GET_PRIVATE (renderer);
-  ChamplainRenderCallbackData callback_data;
+  gboolean error = TRUE;
   GdkPixbufLoader *loader = NULL;
-  GError *error = NULL;
+  GError *gerror = NULL;
   ClutterActor *actor = NULL;
   GdkPixbuf *pixbuf;
 
-  callback_data.error = FALSE;
-
   if (!priv->data || priv->size == 0)
-    goto error;
+    goto finish;
     
   loader = gdk_pixbuf_loader_new ();
   if (!gdk_pixbuf_loader_write (loader,
           (const guchar *) priv->data,
           priv->size,
-          &error))
+          &gerror))
     {
-      if (error)
+      if (gerror)
         {
-          g_warning ("Unable to load the pixbuf: %s", error->message);
-          g_error_free (error);
+          g_warning ("Unable to load the pixbuf: %s", gerror->message);
+          g_error_free (gerror);
         }
-      goto error;
+      goto finish;
     }
 
-  gdk_pixbuf_loader_close (loader, &error);
-  if (error)
+  gdk_pixbuf_loader_close (loader, &gerror);
+  if (gerror)
     {
-      g_warning ("Unable to close the pixbuf loader: %s", error->message);
-      g_error_free (error);
-      goto error;
+      g_warning ("Unable to close the pixbuf loader: %s", gerror->message);
+      g_error_free (gerror);
+      goto finish;
     }
 
   /* Load the image into clutter */
@@ -168,32 +166,27 @@ render (ChamplainRenderer *renderer, ChamplainTile *tile)
           gdk_pixbuf_get_rowstride (pixbuf),
           gdk_pixbuf_get_bits_per_sample (pixbuf) *
           gdk_pixbuf_get_n_channels (pixbuf) / 8,
-          0, &error))
+          0, &gerror))
     {
-      if (error)
+      if (gerror)
         {
-          g_warning ("Unable to transfer to clutter: %s", error->message);
-          g_error_free (error);
+          g_warning ("Unable to transfer to clutter: %s", gerror->message);
+          g_error_free (gerror);
         }
 
       g_object_unref (actor);
       actor = NULL;
-      goto error;
+      goto finish;
     }
 
-  goto finish;
-
-error:
-  callback_data.error = TRUE;
+  error = FALSE;
 
 finish:
-  callback_data.data = priv->data;
-  callback_data.size = priv->size;
 
   if (actor)
     champlain_tile_set_content (tile, actor);
 
-  g_signal_emit_by_name (tile, "render-complete", &callback_data);
+  g_signal_emit_by_name (tile, "render-complete", priv->data, priv->size, error);
 
   if (loader)
     g_object_unref (loader);
diff --git a/champlain/champlain-marshal.list b/champlain/champlain-marshal.list
index b9b8548..871e828 100644
--- a/champlain/champlain-marshal.list
+++ b/champlain/champlain-marshal.list
@@ -1 +1,2 @@
 VOID:DOUBLE,DOUBLE
+VOID:POINTER,UINT,BOOLEAN
diff --git a/champlain/champlain-memory-cache.c b/champlain/champlain-memory-cache.c
index ebc8106..11da11b 100644
--- a/champlain/champlain-memory-cache.c
+++ b/champlain/champlain-memory-cache.c
@@ -292,7 +292,9 @@ delete_queue_member (QueueMember *member, gpointer user_data)
 
 static void
 tile_rendered_cb (ChamplainTile *tile,
-    ChamplainRenderCallbackData *data,
+    gpointer data,
+    guint size,
+    gboolean error,
     ChamplainMapSource *map_source)
 {
   ChamplainMapSource *next_source;
@@ -301,7 +303,7 @@ tile_rendered_cb (ChamplainTile *tile,
 
   next_source = champlain_map_source_get_next_source (map_source);
 
-  if (!data->error)
+  if (!error)
     {
       if (CHAMPLAIN_IS_TILE_CACHE (next_source))
         champlain_tile_cache_on_tile_filled (CHAMPLAIN_TILE_CACHE (next_source), tile);
diff --git a/champlain/champlain-memphis-renderer.c b/champlain/champlain-memphis-renderer.c
index 18e3a7a..99f80bf 100644
--- a/champlain/champlain-memphis-renderer.c
+++ b/champlain/champlain-memphis-renderer.c
@@ -302,11 +302,12 @@ tile_loaded_cb (gpointer worker_data)
   ChamplainTile *tile = data->tile;
   cairo_surface_t *cst = data->cst;
   ChamplainRenderer *renderer = CHAMPLAIN_RENDERER (data->renderer);
-  ChamplainRenderCallbackData callback_data;
+  gpointer ret_data = NULL;
+  guint ret_size = 0;
+  gboolean ret_error = TRUE;
   cairo_t *cr_clutter;
   ClutterActor *actor;
   guint size = data->size;
-  GError *error = NULL;
   GdkPixbuf *pixbuf = NULL;
   gchar *buffer = NULL;
   gsize buffer_size;
@@ -316,11 +317,11 @@ tile_loaded_cb (gpointer worker_data)
   if (!tile)
     {
       DEBUG ("Tile destroyed while loading");
-      goto error;
+      goto finish;
     }
 
   if (!cst)
-    goto error;
+    goto finish;
 
   /* draw the clutter texture */
   actor = clutter_cairo_texture_new (size, size);
@@ -339,24 +340,18 @@ tile_loaded_cb (gpointer worker_data)
       GDK_COLORSPACE_RGB, TRUE, 8, size, size,
       cairo_image_surface_get_stride (cst), NULL, NULL);
 
-  if (!gdk_pixbuf_save_to_buffer (pixbuf, &buffer, &buffer_size, "png", &error, NULL))
-    goto error;
+  if (!gdk_pixbuf_save_to_buffer (pixbuf, &buffer, &buffer_size, "png", NULL, NULL))
+    goto finish;
 
   champlain_tile_set_content (tile, actor);
 
-  callback_data.error = FALSE;
-  callback_data.data = buffer;
-  callback_data.size = buffer_size;
-  goto finish;
-
-error:
-  callback_data.error = TRUE;
-  callback_data.data = NULL;
-  callback_data.size = 0;
+  ret_data = buffer;
+  ret_size = buffer_size;
+  ret_error = FALSE;
 
 finish:
   if (tile)
-    g_signal_emit_by_name (tile, "render-complete", &callback_data);
+    g_signal_emit_by_name (tile, "render-complete", ret_data, ret_size, ret_error);
 
   if (pixbuf)
     g_object_unref (pixbuf);
diff --git a/champlain/champlain-network-bbox-tile-source.c b/champlain/champlain-network-bbox-tile-source.c
index 6f071b7..3154c26 100644
--- a/champlain/champlain-network-bbox-tile-source.c
+++ b/champlain/champlain-network-bbox-tile-source.c
@@ -376,7 +376,9 @@ champlain_network_bbox_tile_source_load_map_data (
 
 static void
 tile_rendered_cb (ChamplainTile *tile,
-    ChamplainRenderCallbackData *data,
+    gpointer data,
+    guint size,
+    gboolean error,
     ChamplainMapSource *map_source)
 {
   ChamplainMapSource *next_source;
@@ -385,13 +387,13 @@ tile_rendered_cb (ChamplainTile *tile,
 
   next_source = champlain_map_source_get_next_source (map_source);
 
-  if (!data->error)
+  if (!error)
     {
       ChamplainTileSource *tile_source = CHAMPLAIN_TILE_SOURCE (map_source);
       ChamplainTileCache *tile_cache = champlain_tile_source_get_cache (tile_source);
 
-      if (tile_cache && data->data)
-        champlain_tile_cache_store_tile (tile_cache, tile, data->data, data->size);
+      if (tile_cache && data)
+        champlain_tile_cache_store_tile (tile_cache, tile, data, size);
 
       champlain_tile_set_fade_in (tile, TRUE);
       champlain_tile_set_state (tile, CHAMPLAIN_STATE_DONE);
diff --git a/champlain/champlain-network-tile-source.c b/champlain/champlain-network-tile-source.c
index de4a76c..d77f45f 100644
--- a/champlain/champlain-network-tile-source.c
+++ b/champlain/champlain-network-tile-source.c
@@ -533,7 +533,9 @@ get_tile_uri (ChamplainNetworkTileSource *tile_source,
 
 static void
 tile_rendered_cb (ChamplainTile *tile,
-    ChamplainRenderCallbackData *data,
+    gpointer data,
+    guint size,
+    gboolean error,
     TileRenderedData *user_data)
 {
   ChamplainMapSource *map_source = user_data->map_source;
@@ -545,7 +547,7 @@ tile_rendered_cb (ChamplainTile *tile,
 
   next_source = champlain_map_source_get_next_source (map_source);
 
-  if (!data->error)
+  if (!error)
     {
       ChamplainTileSource *tile_source = CHAMPLAIN_TILE_SOURCE (map_source);
       ChamplainTileCache *tile_cache = champlain_tile_source_get_cache (tile_source);
@@ -553,8 +555,8 @@ tile_rendered_cb (ChamplainTile *tile,
       if (etag != NULL)
         champlain_tile_set_etag (tile, etag);
 
-      if (tile_cache && data->data)
-        champlain_tile_cache_store_tile (tile_cache, tile, data->data, data->size);
+      if (tile_cache && data)
+        champlain_tile_cache_store_tile (tile_cache, tile, data, size);
 
       champlain_tile_set_fade_in (tile, TRUE);
       champlain_tile_set_state (tile, CHAMPLAIN_STATE_DONE);
diff --git a/champlain/champlain-null-tile-source.c b/champlain/champlain-null-tile-source.c
index 4742586..dd4d8ef 100644
--- a/champlain/champlain-null-tile-source.c
+++ b/champlain/champlain-null-tile-source.c
@@ -96,7 +96,9 @@ champlain_null_tile_source_new_full (ChamplainRenderer *renderer)
 
 static void
 tile_rendered_cb (ChamplainTile *tile,
-    ChamplainRenderCallbackData *data,
+    gpointer data,
+    guint size,
+    gboolean error,
     ChamplainMapSource *map_source)
 {
   ChamplainMapSource *next_source;
@@ -105,13 +107,13 @@ tile_rendered_cb (ChamplainTile *tile,
 
   next_source = champlain_map_source_get_next_source (map_source);
 
-  if (!data->error)
+  if (!error)
     {
       ChamplainTileSource *tile_source = CHAMPLAIN_TILE_SOURCE (map_source);
       ChamplainTileCache *tile_cache = champlain_tile_source_get_cache (tile_source);
 
-      if (tile_cache && data->data)
-        champlain_tile_cache_store_tile (tile_cache, tile, data->data, data->size);
+      if (tile_cache && data)
+        champlain_tile_cache_store_tile (tile_cache, tile, data, size);
 
       champlain_tile_set_fade_in (tile, TRUE);
       champlain_tile_set_state (tile, CHAMPLAIN_STATE_DONE);
diff --git a/champlain/champlain-renderer.h b/champlain/champlain-renderer.h
index cb166a7..240b762 100644
--- a/champlain/champlain-renderer.h
+++ b/champlain/champlain-renderer.h
@@ -47,7 +47,6 @@ G_BEGIN_DECLS
 typedef struct _ChamplainRenderer ChamplainRenderer;
 typedef struct _ChamplainRendererClass ChamplainRendererClass;
 
-typedef struct _ChamplainRenderCallbackData ChamplainRenderCallbackData;
 
 struct _ChamplainRenderer
 {
diff --git a/champlain/champlain-tile.c b/champlain/champlain-tile.c
index a6da01d..f6fbc4a 100644
--- a/champlain/champlain-tile.c
+++ b/champlain/champlain-tile.c
@@ -27,6 +27,7 @@
 
 #include "champlain-enum-types.h"
 #include "champlain-private.h"
+#include "champlain-marshal.h"
 
 #include <math.h>
 #include <errno.h>
@@ -379,7 +380,7 @@ champlain_tile_class_init (ChamplainTileClass *klass)
           FALSE,
           G_PARAM_READWRITE));
 
-  /**
+  /*
    * ChamplainTile::render-complete:
    * @self: a #ChamplainTile
    * @calback_data: a #ChamplainRenderCallbackData struct
@@ -392,8 +393,8 @@ champlain_tile_class_init (ChamplainTileClass *klass)
   champlain_tile_signals[RENDER_COMPLETE] =
     g_signal_new ("render-complete", G_OBJECT_CLASS_TYPE (object_class),
         G_SIGNAL_RUN_LAST, 0, NULL, NULL,
-        g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE,
-        1, G_TYPE_POINTER);
+        _champlain_marshal_VOID__POINTER_UINT_BOOLEAN, G_TYPE_NONE,
+        3, G_TYPE_POINTER, G_TYPE_UINT, G_TYPE_BOOLEAN);
 }
 
 
diff --git a/champlain/champlain-tile.h b/champlain/champlain-tile.h
index 2f7a577..2c7c87f 100644
--- a/champlain/champlain-tile.h
+++ b/champlain/champlain-tile.h
@@ -67,22 +67,6 @@ typedef enum
   CHAMPLAIN_STATE_DONE
 } ChamplainState;
 
-/**
- * ChamplainRenderCallbackData:
- * @error: TRUE if there was an error during tile rendering
- * @data: the data used for tile rendering
- * @size: the size of the data
- *
- * Used by the #ChamplainTile::render-complete signal.
- *
- * Since: 0.8
- */
-struct _ChamplainRenderCallbackData
-{
-  gboolean error;
-  const gchar *data;
-  gsize size;
-};
 
 struct _ChamplainTile
 {



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