gdip-pixbuf-loader r39 - trunk/src



Author: doml
Date: Mon Feb 25 02:37:29 2008
New Revision: 39
URL: http://svn.gnome.org/viewvc/gdip-pixbuf-loader?rev=39&view=rev

Log:
Don't mess around with GTypeModules and whatnot. All of the plugins use the same anim and iter classes, and the plugins are never unloaded. Just check whether the types exist before registering them, and register the types statically.

Modified:
   trunk/src/io-gdip-animation.c
   trunk/src/io-gdip-animation.h
   trunk/src/io-gdip-utils.c

Modified: trunk/src/io-gdip-animation.c
==============================================================================
--- trunk/src/io-gdip-animation.c	(original)
+++ trunk/src/io-gdip-animation.c	Mon Feb 25 02:37:29 2008
@@ -41,75 +41,6 @@
 
 static gpointer parent_class;
 
-#define	GDIP_CLASS_FULL(name, prefix, base_init, base_finalize, \
-		       class_init, class_finalize, instance_init, parent_type, \
-		       abstract, interface_decl) \
-GType									\
-prefix ## _get_type (void)						\
-{									\
-	static GType type = 0;						\
-	if (G_UNLIKELY  (type == 0)) {					\
-		static GTypeInfo const object_info = {			\
-			sizeof (name ## Class),				\
-			(GBaseInitFunc) base_init,			\
-			(GBaseFinalizeFunc) base_finalize,		\
-			(GClassInitFunc) class_init,			\
-			(GClassFinalizeFunc) class_finalize,		\
-			NULL,	/* class_data */			\
-			sizeof (name),					\
-			0,	/* n_preallocs */			\
-			(GInstanceInitFunc) instance_init,		\
-			NULL						\
-		};							\
-                type = g_type_from_name (#name);                        \
-                if (type == 0) {                                        \
-		  type = g_type_register_static (parent_type, #name,	\
-			  &object_info, (GTypeFlags) abstract);		\
-		  interface_decl					\
-                }                                                       \
-	}								\
-	return type;							\
-}
-
-#define	GDIP_CLASS(name, prefix, class_init, instance_init, parent) \
-	GDIP_CLASS_FULL(name, prefix, NULL, NULL, class_init, NULL, \
-				instance_init, parent, 0, {})
-
-#define _GDIP_GTYPE_THREADING_FIXED
-
-#ifdef _GDIP_GTYPE_THREADING_FIXED
-typedef GTypeModule      GdipDummyTypeModule;
-typedef GTypeModuleClass GdipDummyTypeModuleClass;
-static gboolean
-gdip_dummy_type_module_load (GTypeModule *module)
-{
-	return TRUE;
-}
-static void
-gdip_dummy_type_module_class_init (GTypeModuleClass *gtm_class)
-{
-	gtm_class->load = gdip_dummy_type_module_load;
-}
-static GDIP_CLASS (GdipDummyTypeModule, gdip_dummy_type_module,
-		  gdip_dummy_type_module_class_init, NULL,
-		  G_TYPE_TYPE_MODULE)
-
-static GTypeModule *static_type_module = NULL;
-#endif
-
-void
-gdip_anim_init (void)
-{
-#ifdef _GDIP_GTYPE_THREADING_FIXED
-	if (NULL == static_type_module) {
-		static_type_module = g_object_new (gdip_dummy_type_module_get_type(), NULL);
-		g_assert (static_type_module != NULL);
-		g_type_module_use (static_type_module);
-		g_type_module_set_name (static_type_module, "libgdip-builtin");
-	}
-#endif
-}
-
 GType
 gdk_pixbuf_gdip_anim_get_type (void)
 {
@@ -128,18 +59,12 @@
                         (GInstanceInitFunc) NULL,
                 };
 
-#ifdef _GDIP_GTYPE_THREADING_FIXED
                 object_type = g_type_from_name ("GdkPixbufGdipAnim");
                 if (object_type == 0) {
-                        object_type = g_type_module_register_type (static_type_module,
-                                                                   GDK_TYPE_PIXBUF_ANIMATION,
-                                                                   "GdkPixbufGdipAnim", &object_info, (GTypeFlags) 0);
+                  object_type = g_type_register_static (GDK_TYPE_PIXBUF_ANIMATION,
+                                                        g_intern_static_string ("GdkPixbufGdipAnim"),
+                                                        &object_info, 0);
                 }
-#else
-                object_type = g_type_register_static (GDK_TYPE_PIXBUF_ANIMATION,
-                                                      g_intern_static_string ("GdkPixbufGdipAnim"),
-                                                      &object_info, 0);
-#endif
         }
         
         return object_type;
@@ -285,18 +210,12 @@
                         (GInstanceInitFunc) NULL,
                 };
                 
-#ifdef _GDIP_GTYPE_THREADING_FIXED
                 object_type = g_type_from_name ("GdkPixbufGdipAnimIter");
                 if (object_type == 0) {
-                        object_type = g_type_module_register_type (static_type_module,
-                                                                   GDK_TYPE_PIXBUF_ANIMATION_ITER,
-                                                                   "GdkPixbufGdipAnimIter", &object_info, (GTypeFlags) 0);
+                  object_type = g_type_register_static (GDK_TYPE_PIXBUF_ANIMATION_ITER,
+                                                        g_intern_static_string ("GdkPixbufGdipAnimIter"),
+                                                        &object_info, 0);
                 }
-#else
-                object_type = g_type_register_static (GDK_TYPE_PIXBUF_ANIMATION_ITER,
-                                                      g_intern_static_string ("GdkPixbufGdipAnimIter"),
-                                                      &object_info, 0);
-#endif
         }
         
         return object_type;

Modified: trunk/src/io-gdip-animation.h
==============================================================================
--- trunk/src/io-gdip-animation.h	(original)
+++ trunk/src/io-gdip-animation.h	Mon Feb 25 02:37:29 2008
@@ -114,7 +114,4 @@
         int elapsed;        
 };
 
-void gdip_anim_init (void);
-
-
 #endif

Modified: trunk/src/io-gdip-utils.c
==============================================================================
--- trunk/src/io-gdip-utils.c	(original)
+++ trunk/src/io-gdip-utils.c	Mon Feb 25 02:37:29 2008
@@ -117,8 +117,6 @@
 #undef TRY_LOOKUP
 #undef LOOKUP
 
-  gdip_anim_init ();
-
   input.GdiplusVersion = 1;
   input.DebugEventCallback = NULL;
   input.SuppressBackgroundThread = input.SuppressExternalCodecs = FALSE;



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