[Xfce4-commits] <garcon:master> Use G_DEFINE_TYPE where possible and make the iface types thread safe.
Nick Schermer
nick at xfce.org
Sun Aug 16 18:06:02 CEST 2009
Updating branch refs/heads/master
to 321ff87ecd1cdbb9e9c0d4b6cc9c16b7c8f0b4e1 (commit)
from 470608d5532e453ea92ea4237c0877302d23d724 (commit)
commit 321ff87ecd1cdbb9e9c0d4b6cc9c16b7c8f0b4e1
Author: Nick Schermer <nick at xfce.org>
Date: Sun Aug 16 12:18:26 2009 +0200
Use G_DEFINE_TYPE where possible and make the iface types thread safe.
garcon/garcon-menu-directory.c | 25 +-----------------------
garcon/garcon-menu-element.c | 24 +++++++---------------
garcon/garcon-menu-item-cache.c | 25 +-----------------------
garcon/garcon-menu-item-pool.c | 25 +-----------------------
garcon/garcon-menu-item.c | 35 +--------------------------------
garcon/garcon-menu-merger.c | 35 +--------------------------------
garcon/garcon-menu-node.c | 25 +-----------------------
garcon/garcon-menu-parser.c | 35 +--------------------------------
garcon/garcon-menu-separator.c | 35 +--------------------------------
garcon/garcon-menu-tree-provider.c | 11 ++++++---
garcon/garcon-menu.c | 37 ++---------------------------------
11 files changed, 30 insertions(+), 282 deletions(-)
diff --git a/garcon/garcon-menu-directory.c b/garcon/garcon-menu-directory.c
index f387535..4fa54b0 100644
--- a/garcon/garcon-menu-directory.c
+++ b/garcon/garcon-menu-directory.c
@@ -79,8 +79,6 @@ enum
-static void garcon_menu_directory_class_init (GarconMenuDirectoryClass *klass);
-static void garcon_menu_directory_init (GarconMenuDirectory *directory);
static void garcon_menu_directory_constructed (GObject *object);
static void garcon_menu_directory_finalize (GObject *object);
static void garcon_menu_directory_get_property (GObject *object,
@@ -138,28 +136,7 @@ struct _GarconMenuDirectory
-static GObjectClass *garcon_menu_directory_parent_class = NULL;
-
-
-
-GType
-garcon_menu_directory_get_type (void)
-{
- static GType type = G_TYPE_INVALID;
-
- if (G_UNLIKELY (type == G_TYPE_INVALID))
- {
- type = g_type_register_static_simple (G_TYPE_OBJECT,
- "GarconMenuDirectory",
- sizeof (GarconMenuDirectoryClass),
- (GClassInitFunc) garcon_menu_directory_class_init,
- sizeof (GarconMenuDirectory),
- (GInstanceInitFunc) garcon_menu_directory_init,
- 0);
- }
-
- return type;
-}
+G_DEFINE_TYPE (GarconMenuDirectory, garcon_menu_directory, G_TYPE_OBJECT)
diff --git a/garcon/garcon-menu-element.c b/garcon/garcon-menu-element.c
index 2e595c2..7ab8b1a 100644
--- a/garcon/garcon-menu-element.c
+++ b/garcon/garcon-menu-element.c
@@ -26,36 +26,28 @@
-static void garcon_menu_element_class_init (GarconMenuElementIface *klass);
-
-
-
GType
garcon_menu_element_get_type (void)
{
- static GType type = G_TYPE_INVALID;
+ static volatile gsize type__volatile = 0;
+ GType type;
- if (G_UNLIKELY (type == G_TYPE_INVALID))
+ if (g_once_init_enter (&type__volatile))
{
type = g_type_register_static_simple (G_TYPE_INTERFACE,
- "GarconMenuElement",
+ g_intern_static_string ("GarconMenuElement"),
sizeof (GarconMenuElementIface),
- (GClassInitFunc) garcon_menu_element_class_init,
+ NULL,
0,
NULL,
0);
g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
- }
-
- return type;
-}
-
+ g_once_init_leave (&type__volatile, type);
+ }
-static void
-garcon_menu_element_class_init (GarconMenuElementIface *klass)
-{
+ return type__volatile;
}
diff --git a/garcon/garcon-menu-item-cache.c b/garcon/garcon-menu-item-cache.c
index 395673d..e232b35 100644
--- a/garcon/garcon-menu-item-cache.c
+++ b/garcon/garcon-menu-item-cache.c
@@ -47,8 +47,6 @@
-static void garcon_menu_item_cache_class_init (GarconMenuItemCacheClass *klass);
-static void garcon_menu_item_cache_init (GarconMenuItemCache *cache);
static void garcon_menu_item_cache_finalize (GObject *object);
@@ -105,28 +103,7 @@ struct _GarconMenuItemCache
-static GObjectClass *garcon_menu_item_cache_parent_class = NULL;
-
-
-
-GType
-garcon_menu_item_cache_get_type (void)
-{
- static GType type = G_TYPE_INVALID;
-
- if (G_UNLIKELY (type == G_TYPE_INVALID))
- {
- type = g_type_register_static_simple (G_TYPE_OBJECT,
- "GarconMenuItemCache",
- sizeof (GarconMenuItemCacheClass),
- (GClassInitFunc) garcon_menu_item_cache_class_init,
- sizeof (GarconMenuItemCache),
- (GInstanceInitFunc) garcon_menu_item_cache_init,
- 0);
- }
-
- return type;
-}
+G_DEFINE_TYPE (GarconMenuItemCache, garcon_menu_item_cache, G_TYPE_OBJECT)
diff --git a/garcon/garcon-menu-item-pool.c b/garcon/garcon-menu-item-pool.c
index e0aee1e..957cef1 100644
--- a/garcon/garcon-menu-item-pool.c
+++ b/garcon/garcon-menu-item-pool.c
@@ -31,8 +31,6 @@
-static void garcon_menu_item_pool_class_init (GarconMenuItemPoolClass *klass);
-static void garcon_menu_item_pool_init (GarconMenuItemPool *pool);
static void garcon_menu_item_pool_finalize (GObject *object);
static gboolean garcon_menu_item_pool_filter_exclude (const gchar *desktop_id,
GarconMenuItem *item,
@@ -61,28 +59,7 @@ struct _GarconMenuItemPool
-static GObjectClass *garcon_menu_item_pool_parent_class = NULL;
-
-
-
-GType
-garcon_menu_item_pool_get_type (void)
-{
- static GType type = G_TYPE_INVALID;
-
- if (G_UNLIKELY (type == G_TYPE_INVALID))
- {
- type = g_type_register_static_simple (G_TYPE_OBJECT,
- "GarconMenuItemPool",
- sizeof (GarconMenuItemPoolClass),
- (GClassInitFunc) garcon_menu_item_pool_class_init,
- sizeof (GarconMenuItemPool),
- (GInstanceInitFunc) garcon_menu_item_pool_init,
- 0);
- }
-
- return type;
-}
+G_DEFINE_TYPE (GarconMenuItemPool, garcon_menu_item_pool, G_TYPE_OBJECT)
diff --git a/garcon/garcon-menu-item.c b/garcon/garcon-menu-item.c
index 24eb851..6bc2fa8 100644
--- a/garcon/garcon-menu-item.c
+++ b/garcon/garcon-menu-item.c
@@ -54,9 +54,7 @@ enum
-static void garcon_menu_item_class_init (GarconMenuItemClass *klass);
static void garcon_menu_item_element_init (GarconMenuElementIface *iface);
-static void garcon_menu_item_init (GarconMenuItem *item);
static void garcon_menu_item_finalize (GObject *object);
static void garcon_menu_item_get_property (GObject *object,
guint prop_id,
@@ -142,37 +140,8 @@ struct _GarconMenuItem
-static GObjectClass *garcon_menu_item_parent_class = NULL;
-
-
-
-GType
-garcon_menu_item_get_type (void)
-{
- static GType type = G_TYPE_INVALID;
-
- if (G_UNLIKELY (type == G_TYPE_INVALID))
- {
- static const GInterfaceInfo element_info =
- {
- (GInterfaceInitFunc) garcon_menu_item_element_init,
- NULL,
- NULL,
- };
-
- type = g_type_register_static_simple (G_TYPE_OBJECT,
- "GarconMenuItem",
- sizeof (GarconMenuItemClass),
- (GClassInitFunc) garcon_menu_item_class_init,
- sizeof (GarconMenuItem),
- (GInstanceInitFunc) garcon_menu_item_init,
- 0);
-
- g_type_add_interface_static (type, GARCON_TYPE_MENU_ELEMENT, &element_info);
- }
-
- return type;
-}
+G_DEFINE_TYPE_WITH_CODE (GarconMenuItem, garcon_menu_item, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (GARCON_TYPE_MENU_ELEMENT, garcon_menu_item_element_init))
diff --git a/garcon/garcon-menu-merger.c b/garcon/garcon-menu-merger.c
index 982c467..ac153d6 100644
--- a/garcon/garcon-menu-merger.c
+++ b/garcon/garcon-menu-merger.c
@@ -60,9 +60,7 @@ enum
-static void garcon_menu_merger_class_init (GarconMenuMergerClass *klass);
static void garcon_menu_merger_provider_init (GarconMenuTreeProviderIface *iface);
-static void garcon_menu_merger_init (GarconMenuMerger *merger);
static void garcon_menu_merger_constructed (GObject *object);
static void garcon_menu_merger_finalize (GObject *object);
static void garcon_menu_merger_get_property (GObject *object,
@@ -102,37 +100,8 @@ struct _GarconMenuMergerPrivate
-static GObjectClass *garcon_menu_merger_parent_class = NULL;
-
-
-
-GType
-garcon_menu_merger_get_type (void)
-{
- static GType type = G_TYPE_INVALID;
-
- if (G_UNLIKELY (type == G_TYPE_INVALID))
- {
- static const GInterfaceInfo provider_info =
- {
- (GInterfaceInitFunc) garcon_menu_merger_provider_init,
- NULL,
- NULL,
- };
-
- type = g_type_register_static_simple (G_TYPE_OBJECT,
- "GarconMenuMerger",
- sizeof (GarconMenuMergerClass),
- (GClassInitFunc) garcon_menu_merger_class_init,
- sizeof (GarconMenuMerger),
- (GInstanceInitFunc) garcon_menu_merger_init,
- 0);
-
- g_type_add_interface_static (type, GARCON_TYPE_MENU_TREE_PROVIDER, &provider_info);
- }
-
- return type;
-}
+G_DEFINE_TYPE_WITH_CODE (GarconMenuMerger, garcon_menu_merger, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (GARCON_TYPE_MENU_TREE_PROVIDER, garcon_menu_merger_provider_init))
diff --git a/garcon/garcon-menu-node.c b/garcon/garcon-menu-node.c
index d4a247a..8faf52d 100644
--- a/garcon/garcon-menu-node.c
+++ b/garcon/garcon-menu-node.c
@@ -39,8 +39,6 @@ enum
-static void garcon_menu_node_class_init (GarconMenuNodeClass *klass);
-static void garcon_menu_node_init (GarconMenuNode *node);
static void garcon_menu_node_finalize (GObject *object);
static void garcon_menu_node_get_property (GObject *object,
guint prop_id,
@@ -80,10 +78,6 @@ struct _GarconMenuNode
-static GObjectClass *garcon_menu_node_parent_class = NULL;
-
-
-
GType
garcon_menu_node_type_get_type (void)
{
@@ -132,24 +126,7 @@ garcon_menu_node_type_get_type (void)
-GType
-garcon_menu_node_get_type (void)
-{
- static GType type = G_TYPE_INVALID;
-
- if (G_UNLIKELY (type == G_TYPE_INVALID))
- {
- type = g_type_register_static_simple (G_TYPE_OBJECT,
- "GarconMenuNode",
- sizeof (GarconMenuNodeClass),
- (GClassInitFunc) garcon_menu_node_class_init,
- sizeof (GarconMenuNode),
- (GInstanceInitFunc) garcon_menu_node_init,
- 0);
- }
-
- return type;
-}
+G_DEFINE_TYPE (GarconMenuNode, garcon_menu_node, G_TYPE_OBJECT)
diff --git a/garcon/garcon-menu-parser.c b/garcon/garcon-menu-parser.c
index 31561c8..a10104a 100644
--- a/garcon/garcon-menu-parser.c
+++ b/garcon/garcon-menu-parser.c
@@ -88,9 +88,7 @@ enum
-static void garcon_menu_parser_class_init (GarconMenuParserClass *klass);
static void garcon_menu_parser_provider_init (GarconMenuTreeProviderIface *iface);
-static void garcon_menu_parser_init (GarconMenuParser *parser);
static void garcon_menu_parser_finalize (GObject *object);
static void garcon_menu_parser_get_property (GObject *object,
guint prop_id,
@@ -131,37 +129,8 @@ struct _GarconMenuParserPrivate
-static GObjectClass *garcon_menu_parser_parent_class = NULL;
-
-
-
-GType
-garcon_menu_parser_get_type (void)
-{
- static GType type = G_TYPE_INVALID;
-
- if (G_UNLIKELY (type == G_TYPE_INVALID))
- {
- static const GInterfaceInfo provider_info =
- {
- (GInterfaceInitFunc) garcon_menu_parser_provider_init,
- NULL,
- NULL,
- };
-
- type = g_type_register_static_simple (G_TYPE_OBJECT,
- "GarconMenuParser",
- sizeof (GarconMenuParserClass),
- (GClassInitFunc) garcon_menu_parser_class_init,
- sizeof (GarconMenuParser),
- (GInstanceInitFunc) garcon_menu_parser_init,
- 0);
-
- g_type_add_interface_static (type, GARCON_TYPE_MENU_TREE_PROVIDER, &provider_info);
- }
-
- return type;
-}
+G_DEFINE_TYPE_WITH_CODE (GarconMenuParser, garcon_menu_parser, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (GARCON_TYPE_MENU_TREE_PROVIDER, garcon_menu_parser_provider_init))
diff --git a/garcon/garcon-menu-separator.c b/garcon/garcon-menu-separator.c
index 469c40c..a33de80 100644
--- a/garcon/garcon-menu-separator.c
+++ b/garcon/garcon-menu-separator.c
@@ -27,9 +27,7 @@
-static void garcon_menu_separator_class_init (GarconMenuSeparatorClass *klass);
static void garcon_menu_separator_element_init (GarconMenuElementIface *iface);
-static void garcon_menu_separator_init (GarconMenuSeparator *separator);
static void garcon_menu_separator_finalize (GObject *object);
static const gchar *garcon_menu_separator_get_element_name (GarconMenuElement *element);
@@ -80,37 +78,8 @@ struct _GarconMenuSeparator
-static GObjectClass *garcon_menu_separator_parent_class = NULL;
-
-
-
-GType
-garcon_menu_separator_get_type (void)
-{
- static GType type = G_TYPE_INVALID;
-
- if (G_UNLIKELY (type == G_TYPE_INVALID))
- {
- static const GInterfaceInfo element_info =
- {
- (GInterfaceInitFunc) garcon_menu_separator_element_init,
- NULL,
- NULL,
- };
-
- type = g_type_register_static_simple (G_TYPE_OBJECT,
- "GarconMenuSeparator",
- sizeof (GarconMenuSeparatorClass),
- (GClassInitFunc) garcon_menu_separator_class_init,
- sizeof (GarconMenuSeparator),
- (GInstanceInitFunc) garcon_menu_separator_init,
- 0);
-
- g_type_add_interface_static (type, GARCON_TYPE_MENU_ELEMENT, &element_info);
- }
-
- return type;
-}
+G_DEFINE_TYPE_WITH_CODE (GarconMenuSeparator, garcon_menu_separator, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (GARCON_TYPE_MENU_ELEMENT, garcon_menu_separator_element_init))
diff --git a/garcon/garcon-menu-tree-provider.c b/garcon/garcon-menu-tree-provider.c
index 89075ad..ff8fe95 100644
--- a/garcon/garcon-menu-tree-provider.c
+++ b/garcon/garcon-menu-tree-provider.c
@@ -29,12 +29,13 @@
GType
garcon_menu_tree_provider_get_type (void)
{
- static GType type = G_TYPE_INVALID;
+ static volatile gsize type__volatile = 0;
+ GType type;
- if (G_UNLIKELY (type == G_TYPE_INVALID))
+ if (g_once_init_enter (&type__volatile))
{
type = g_type_register_static_simple (G_TYPE_INTERFACE,
- "GarconMenuTreeProvider",
+ g_intern_static_string ("GarconMenuTreeProvider"),
sizeof (GarconMenuTreeProviderIface),
NULL,
0,
@@ -42,9 +43,11 @@ garcon_menu_tree_provider_get_type (void)
0);
g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
+
+ g_once_init_leave (&type__volatile, type);
}
- return type;
+ return type__volatile;
}
diff --git a/garcon/garcon-menu.c b/garcon/garcon-menu.c
index 50803a7..7988aa3 100644
--- a/garcon/garcon-menu.c
+++ b/garcon/garcon-menu.c
@@ -94,9 +94,7 @@ enum
-static void garcon_menu_class_init (GarconMenuClass *klass);
static void garcon_menu_element_init (GarconMenuElementIface *iface);
-static void garcon_menu_instance_init (GarconMenu *menu);
static void garcon_menu_finalize (GObject *object);
static void garcon_menu_get_property (GObject *object,
guint prop_id,
@@ -167,37 +165,8 @@ struct _GarconMenuPrivate
-static GObjectClass *garcon_menu_parent_class = NULL;
-
-
-
-GType
-garcon_menu_get_type (void)
-{
- static GType type = G_TYPE_INVALID;
-
- if (G_UNLIKELY (type == G_TYPE_INVALID))
- {
- static const GInterfaceInfo element_info =
- {
- (GInterfaceInitFunc) garcon_menu_element_init,
- NULL,
- NULL,
- };
-
- type = g_type_register_static_simple (G_TYPE_OBJECT,
- "GarconMenu",
- sizeof (GarconMenuClass),
- (GClassInitFunc) garcon_menu_class_init,
- sizeof (GarconMenu),
- (GInstanceInitFunc) garcon_menu_instance_init,
- 0);
-
- g_type_add_interface_static (type, GARCON_TYPE_MENU_ELEMENT, &element_info);
- }
-
- return type;
-}
+G_DEFINE_TYPE_WITH_CODE (GarconMenu, garcon_menu, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (GARCON_TYPE_MENU_ELEMENT, garcon_menu_element_init))
@@ -259,7 +228,7 @@ garcon_menu_element_init (GarconMenuElementIface *iface)
static void
-garcon_menu_instance_init (GarconMenu *menu)
+garcon_menu_init (GarconMenu *menu)
{
menu->priv = GARCON_MENU_GET_PRIVATE (menu);
menu->priv->file = NULL;
More information about the Xfce4-commits
mailing list