[gegl] Use constructed() instead of constructor()



commit ae18e7e8b3b983a3e7fedb9f60ef03431f7b1215
Author: Daniel Sabo <DanielSabo gmail com>
Date:   Fri Mar 7 10:55:50 2014 -0800

    Use constructed() instead of constructor()
    
    Objects with constructor functions require additional logic and
    are slower to construct.

 gegl/buffer/gegl-cache.c                   |   20 ++++++--------------
 gegl/buffer/gegl-tile-backend-file-async.c |   19 ++++++-------------
 gegl/buffer/gegl-tile-backend-ram.c        |   27 +++++++++------------------
 gegl/buffer/gegl-tile-backend-swap.c       |   28 +++++++++-------------------
 gegl/buffer/gegl-tile-backend-tiledir.c    |   16 +++++-----------
 gegl/buffer/gegl-tile-backend.c            |   20 +++++++-------------
 gegl/operation/gegl-operation-meta.c       |   18 ++++++------------
 gegl/process/gegl-processor.c              |   23 ++++++-----------------
 8 files changed, 54 insertions(+), 117 deletions(-)
---
diff --git a/gegl/buffer/gegl-cache.c b/gegl/buffer/gegl-cache.c
index f7473f3..a781ee7 100644
--- a/gegl/buffer/gegl-cache.c
+++ b/gegl/buffer/gegl-cache.c
@@ -62,23 +62,15 @@ G_DEFINE_TYPE (GeglCache, gegl_cache, GEGL_TYPE_BUFFER)
 
 guint gegl_cache_signals[LAST_SIGNAL] = { 0 };
 
-static GObject *
-gegl_cache_constructor (GType                  type,
-                        guint                  n_params,
-                        GObjectConstructParam *params)
+static void
+gegl_cache_constructed (GObject *object)
 {
-  GObject   *object;
-  GeglCache *self;
+  GeglCache *self = GEGL_CACHE (object);
 
-  object = G_OBJECT_CLASS (gegl_cache_parent_class)->constructor (type,
-                                                                  n_params,
-                                                                  params);
-  self = GEGL_CACHE (object);
+  G_OBJECT_CLASS (gegl_cache_parent_class)->constructed (object);
 
   self->valid_region = gegl_region_new ();
-  self->format       = GEGL_BUFFER (self)->format;
-
-  return object;
+  self->format       = gegl_buffer_get_format (GEGL_BUFFER (self));
 }
 
 /* expand invalidated regions to be align with coordinates divisible by 8 in both
@@ -119,7 +111,7 @@ gegl_cache_class_init (GeglCacheClass *klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 
-  gobject_class->constructor  = gegl_cache_constructor;
+  gobject_class->constructed  = gegl_cache_constructed;
   gobject_class->finalize     = finalize;
   gobject_class->dispose      = dispose;
   gobject_class->set_property = set_property;
diff --git a/gegl/buffer/gegl-tile-backend-file-async.c b/gegl/buffer/gegl-tile-backend-file-async.c
index 90cda77..2f0cb01 100644
--- a/gegl/buffer/gegl-tile-backend-file-async.c
+++ b/gegl/buffer/gegl-tile-backend-file-async.c
@@ -1127,18 +1127,13 @@ gegl_tile_backend_file_file_changed (GFileMonitor        *monitor,
     }
 }
 
-static GObject *
-gegl_tile_backend_file_constructor (GType                  type,
-                                    guint                  n_params,
-                                    GObjectConstructParam *params)
+static void
+gegl_tile_backend_file_constructed (GObject *object)
 {
-  GObject             *object;
-  GeglTileBackendFile *self;
-  GeglTileBackend     *backend;
+  GeglTileBackendFile *self = GEGL_TILE_BACKEND_FILE (object);
+  GeglTileBackend     *backend = GEGL_TILE_BACKEND (object);
 
-  object  = G_OBJECT_CLASS (parent_class)->constructor (type, n_params, params);
-  self    = GEGL_TILE_BACKEND_FILE (object);
-  backend = GEGL_TILE_BACKEND (object);
+  G_OBJECT_CLASS (parent_class)->constructed (object);
 
   GEGL_NOTE (GEGL_DEBUG_TILE_BACKEND, "constructing file backend: %s", self->path);
 
@@ -1213,8 +1208,6 @@ gegl_tile_backend_file_constructor (GType                  type,
   backend->priv->header = &self->header;
 
   gegl_tile_backend_set_flush_on_destroy (backend, FALSE);
-
-  return object;
 }
 
 static void
@@ -1259,7 +1252,7 @@ gegl_tile_backend_file_class_init (GeglTileBackendFileClass *klass)
 
   gobject_class->get_property = gegl_tile_backend_file_get_property;
   gobject_class->set_property = gegl_tile_backend_file_set_property;
-  gobject_class->constructor  = gegl_tile_backend_file_constructor;
+  gobject_class->constructed  = gegl_tile_backend_file_constructed;
   gobject_class->finalize     = gegl_tile_backend_file_finalize;
 
   g_cond_init (&queue_cond);
diff --git a/gegl/buffer/gegl-tile-backend-ram.c b/gegl/buffer/gegl-tile-backend-ram.c
index bc6807e..0306889 100644
--- a/gegl/buffer/gegl-tile-backend-ram.c
+++ b/gegl/buffer/gegl-tile-backend-ram.c
@@ -329,25 +329,12 @@ ram_entry_free_func (gpointer data)
   g_slice_free (RamEntry, entry);
 }
 
-static GObject *
-gegl_tile_backend_ram_constructor (GType                  type,
-                                   guint                  n_params,
-                                   GObjectConstructParam *params)
+static void
+gegl_tile_backend_ram_constructed (GObject *object)
 {
-  GObject            *object;
-  GeglTileBackendRam *ram;
-
-  object = G_OBJECT_CLASS (parent_class)->constructor (type, n_params, params);
-  ram    = GEGL_TILE_BACKEND_RAM (object);
-
-  ram->entries = g_hash_table_new_full (ram_entry_hash_func,
-                                        ram_entry_equal_func,
-                                        NULL,
-                                        ram_entry_free_func);
+  G_OBJECT_CLASS (parent_class)->constructed (object);
 
   gegl_tile_backend_set_flush_on_destroy (GEGL_TILE_BACKEND (object), FALSE);
-
-  return object;
 }
 
 static void
@@ -357,7 +344,7 @@ gegl_tile_backend_ram_class_init (GeglTileBackendRamClass *klass)
 
   gobject_class->get_property = get_property;
   gobject_class->set_property = set_property;
-  gobject_class->constructor  = gegl_tile_backend_ram_constructor;
+  gobject_class->constructed  = gegl_tile_backend_ram_constructed;
   gobject_class->finalize     = gegl_tile_backend_ram_finalize;
 }
 
@@ -365,5 +352,9 @@ static void
 gegl_tile_backend_ram_init (GeglTileBackendRam *self)
 {
   GEGL_TILE_SOURCE (self)->command = gegl_tile_backend_ram_command;
-  self->entries = NULL;
+
+  self->entries = g_hash_table_new_full (ram_entry_hash_func,
+                                         ram_entry_equal_func,
+                                         NULL,
+                                         ram_entry_free_func);
 }
diff --git a/gegl/buffer/gegl-tile-backend-swap.c b/gegl/buffer/gegl-tile-backend-swap.c
index 3181412..819a7dd 100644
--- a/gegl/buffer/gegl-tile-backend-swap.c
+++ b/gegl/buffer/gegl-tile-backend-swap.c
@@ -138,9 +138,7 @@ static gpointer    gegl_tile_backend_swap_command       (GeglTileSource        *
 static guint       gegl_tile_backend_swap_hashfunc      (gconstpointer key);
 static gboolean    gegl_tile_backend_swap_equalfunc     (gconstpointer          a,
                                                          gconstpointer          b);
-static GObject *   gegl_tile_backend_swap_constructor   (GType                  type,
-                                                         guint                  n_params,
-                                                         GObjectConstructParam *params);
+static void        gegl_tile_backend_swap_constructed   (GObject *object);
 static void        gegl_tile_backend_swap_finalize      (GObject *object);
 static void        gegl_tile_backend_swap_ensure_exist  (void);
 static void        gegl_tile_backend_swap_class_init    (GeglTileBackendSwapClass *klass);
@@ -758,29 +756,18 @@ gegl_tile_backend_swap_equalfunc (gconstpointer a,
   return FALSE;
 }
 
-static GObject *
-gegl_tile_backend_swap_constructor (GType                  type,
-                                    guint                  n_params,
-                                    GObjectConstructParam *params)
+static void
+gegl_tile_backend_swap_constructed (GObject *object)
 {
-  GObject             *object;
-  GeglTileBackendSwap *self;
-  GeglTileBackend     *backend;
-
-  object  = G_OBJECT_CLASS (parent_class)->constructor (type, n_params, params);
-  self    = GEGL_TILE_BACKEND_SWAP (object);
-  backend = GEGL_TILE_BACKEND (object);
+  GeglTileBackend *backend = GEGL_TILE_BACKEND (object);
 
-  self->index = g_hash_table_new (gegl_tile_backend_swap_hashfunc,
-                                  gegl_tile_backend_swap_equalfunc);
+  G_OBJECT_CLASS (parent_class)->constructed (object);
 
   backend->priv->shared = FALSE;
 
   gegl_tile_backend_set_flush_on_destroy (backend, FALSE);
 
   GEGL_NOTE (GEGL_DEBUG_TILE_BACKEND, "constructing swap backend");
-
-  return object;
 }
 
 static void
@@ -836,7 +823,7 @@ gegl_tile_backend_swap_class_init (GeglTileBackendSwapClass *klass)
 
   parent_class = g_type_class_peek_parent (klass);
 
-  gobject_class->constructor  = gegl_tile_backend_swap_constructor;
+  gobject_class->constructed  = gegl_tile_backend_swap_constructed;
   gobject_class->finalize     = gegl_tile_backend_swap_finalize;
 
   queue         = g_queue_new ();
@@ -885,4 +872,7 @@ static void
 gegl_tile_backend_swap_init (GeglTileBackendSwap *self)
 {
   ((GeglTileSource*)self)->command = gegl_tile_backend_swap_command;
+
+  self->index = g_hash_table_new (gegl_tile_backend_swap_hashfunc,
+                                  gegl_tile_backend_swap_equalfunc);
 }
diff --git a/gegl/buffer/gegl-tile-backend-tiledir.c b/gegl/buffer/gegl-tile-backend-tiledir.c
index bdcb25d..af8f9a1 100644
--- a/gegl/buffer/gegl-tile-backend-tiledir.c
+++ b/gegl/buffer/gegl-tile-backend-tiledir.c
@@ -342,24 +342,18 @@ finalize (GObject *object)
   (*G_OBJECT_CLASS (parent_class)->finalize)(object);
 }
 
-static GObject *
-gegl_tile_backend_tiledir_constructor (GType                  type,
-                                         guint                  n_params,
-                                         GObjectConstructParam *params)
+static void
+gegl_tile_backend_tiledir_constructed (GObject *object)
 {
-  GObject      *object;
-  GeglTileBackendTileDir *gio;
+  GeglTileBackendTileDir *gio = GEGL_TILE_BACKEND_TILE_DIR (object);
 
-  object = G_OBJECT_CLASS (parent_class)->constructor (type, n_params, params);
-  gio    = GEGL_TILE_BACKEND_TILE_DIR (object);
+  G_OBJECT_CLASS (parent_class)->constructed (object);
 
   gio->buffer_dir = g_file_new_for_commandline_arg (gio->path);
   g_file_make_directory (gio->buffer_dir, NULL, NULL);
   ((GeglTileSource*)(object))->command = gegl_tile_backend_tiledir_command;
 
   gegl_tile_backend_set_flush_on_destroy (GEGL_TILE_BACKEND (object), FALSE);
-
-  return object;
 }
 
 static void
@@ -371,7 +365,7 @@ gegl_tile_backend_tiledir_class_init (GeglTileBackendTileDirClass *klass)
 
   gobject_class->get_property = get_property;
   gobject_class->set_property = set_property;
-  gobject_class->constructor  = gegl_tile_backend_tiledir_constructor;
+  gobject_class->constructed  = gegl_tile_backend_tiledir_constructed;
   gobject_class->finalize     = finalize;
 
   g_object_class_install_property (gobject_class, PROP_PATH,
diff --git a/gegl/buffer/gegl-tile-backend.c b/gegl/buffer/gegl-tile-backend.c
index f14e06d..f353bcd 100644
--- a/gegl/buffer/gegl-tile-backend.c
+++ b/gegl/buffer/gegl-tile-backend.c
@@ -115,24 +115,18 @@ set_property (GObject      *gobject,
     }
 }
 
-static GObject *
-constructor (GType                  type,
-             guint                  n_params,
-             GObjectConstructParam *params)
+static void
+constructed (GObject *object)
 {
-  GObject         *object;
-  GeglTileBackend *backend;
+  GeglTileBackend *backend = GEGL_TILE_BACKEND (object);
 
-  object  = G_OBJECT_CLASS (parent_class)->constructor (type, n_params, params);
-  backend = GEGL_TILE_BACKEND (object);
+  G_OBJECT_CLASS (parent_class)->constructed (object);
 
   g_assert (backend->priv->tile_width > 0 && backend->priv->tile_height > 0);
   g_assert (backend->priv->format);
 
   backend->priv->px_size = babl_format_get_bytes_per_pixel (backend->priv->format);
   backend->priv->tile_size = backend->priv->tile_width * backend->priv->tile_height * backend->priv->px_size;
-
-  return object;
 }
 
 static void
@@ -142,7 +136,7 @@ gegl_tile_backend_class_init (GeglTileBackendClass *klass)
 
   gobject_class->set_property = set_property;
   gobject_class->get_property = get_property;
-  gobject_class->constructor  = constructor;
+  gobject_class->constructed  = constructed;
 
   g_object_class_install_property (gobject_class, PROP_TILE_WIDTH,
                                    g_param_spec_int ("tile-width", "tile-width",
@@ -175,8 +169,7 @@ gegl_tile_backend_class_init (GeglTileBackendClass *klass)
                                    g_param_spec_boolean ("flush-on-destroy", "flush-on-destroy",
                                                          "Cache tiles will be flushed before the backend is 
destroyed",
                                                          TRUE,
-                                                         G_PARAM_READWRITE |
-                                                         G_PARAM_CONSTRUCT));
+                                                         G_PARAM_READWRITE));
 
   g_type_class_add_private (gobject_class, sizeof (GeglTileBackendPrivate));
 }
@@ -188,6 +181,7 @@ gegl_tile_backend_init (GeglTileBackend *self)
                                             GEGL_TYPE_TILE_BACKEND,
                                             GeglTileBackendPrivate);
   self->priv->shared = FALSE;
+  self->priv->flush_on_destroy = TRUE;
 }
 
 
diff --git a/gegl/operation/gegl-operation-meta.c b/gegl/operation/gegl-operation-meta.c
index 942718c..0106467 100644
--- a/gegl/operation/gegl-operation-meta.c
+++ b/gegl/operation/gegl-operation-meta.c
@@ -30,9 +30,7 @@ static GeglNode * detect       (GeglOperation *operation,
                                 gint           x,
                                 gint           y);
 
-static GObject *   constructor (GType                  gtype,
-                                guint                  n_properties,
-                                GObjectConstructParam *properties);
+static void       constructed  (GObject       *object);
 
 G_DEFINE_TYPE (GeglOperationMeta, gegl_operation_meta, GEGL_TYPE_OPERATION)
 
@@ -43,7 +41,7 @@ gegl_operation_meta_class_init (GeglOperationMetaClass *klass)
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
   object_class->finalize               = finalize;
-  object_class->constructor            = constructor;
+  object_class->constructed            = constructed;
   GEGL_OPERATION_CLASS (klass)->detect = detect;
 }
 
@@ -53,16 +51,12 @@ gegl_operation_meta_init (GeglOperationMeta *self)
   self->redirects = NULL;
 }
 
-static GObject *
-constructor (GType                  gtype,
-             guint                  n_properties,
-             GObjectConstructParam *properties)
+static void
+constructed (GObject *object)
 {
-  GObject *operation = G_OBJECT_CLASS (gegl_operation_meta_parent_class)->constructor (gtype, n_properties, 
properties);
-
-  g_signal_connect (operation, "notify", G_CALLBACK (gegl_operation_meta_property_changed), NULL);
+  G_OBJECT_CLASS (gegl_operation_meta_parent_class)->constructed (object);
 
-  return operation;
+  g_signal_connect (object, "notify", G_CALLBACK (gegl_operation_meta_property_changed), NULL);
 }
 
 static GeglNode *
diff --git a/gegl/process/gegl-processor.c b/gegl/process/gegl-processor.c
index 30097b2..29bdbe2 100644
--- a/gegl/process/gegl-processor.c
+++ b/gegl/process/gegl-processor.c
@@ -63,9 +63,7 @@ static void      gegl_processor_get_property (GObject               *gobject,
                                               GParamSpec            *pspec);
 static void      gegl_processor_set_node     (GeglProcessor         *processor,
                                               GeglNode              *node);
-static GObject * gegl_processor_constructor  (GType                  type,
-                                              guint                  n_params,
-                                              GObjectConstructParam *params);
+static void      gegl_processor_constructed  (GObject               *object);
 static gdouble   gegl_processor_progress     (GeglProcessor         *processor);
 static gint      gegl_processor_get_band_size(gint                   size) G_GNUC_CONST;
 
@@ -96,7 +94,7 @@ gegl_processor_class_init (GeglProcessorClass *klass)
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 
   gobject_class->finalize     = gegl_processor_finalize;
-  gobject_class->constructor  = gegl_processor_constructor;
+  gobject_class->constructed  = gegl_processor_constructed;
   gobject_class->set_property = gegl_processor_set_property;
   gobject_class->get_property = gegl_processor_get_property;
 
@@ -141,23 +139,14 @@ gegl_processor_init (GeglProcessor *processor)
   processor->chunk_size       = 128 * 128;
 }
 
-/* Initialises the fields processor->input, processor->valid_region
- * and processor->queued_region.
- */
-static GObject *
-gegl_processor_constructor (GType                  type,
-                            guint                  n_params,
-                            GObjectConstructParam *params)
+static void
+gegl_processor_constructed (GObject *object)
 {
-  GObject       *object;
-  GeglProcessor *processor;
+  GeglProcessor *processor = GEGL_PROCESSOR (object);
 
-  object    = G_OBJECT_CLASS (gegl_processor_parent_class)->constructor (type, n_params, params);
-  processor = GEGL_PROCESSOR (object);
+  G_OBJECT_CLASS (gegl_processor_parent_class)->constructed (object);
 
   processor->queued_region = gegl_region_new ();
-
-  return object;
 }
 
 static void


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