gstreamer_core/gst/gsttypefindfactory.c
branchRCL_3
changeset 30 7e817e7e631c
parent 29 567bb019e3e3
equal deleted inserted replaced
29:567bb019e3e3 30:7e817e7e631c
    87 #include "gstregistry.h"
    87 #include "gstregistry.h"
    88 
    88 
    89 GST_DEBUG_CATEGORY (type_find_debug);
    89 GST_DEBUG_CATEGORY (type_find_debug);
    90 #define GST_CAT_DEFAULT type_find_debug
    90 #define GST_CAT_DEFAULT type_find_debug
    91 
    91 
       
    92 static void gst_type_find_factory_class_init (gpointer g_class,
       
    93     gpointer class_data);
       
    94 static void gst_type_find_factory_init (GTypeInstance * instance,
       
    95     gpointer g_class);
    92 static void gst_type_find_factory_dispose (GObject * object);
    96 static void gst_type_find_factory_dispose (GObject * object);
    93 
    97 
    94 static GstPluginFeatureClass *parent_class = NULL;
    98 static GstPluginFeatureClass *parent_class = NULL;
    95 
    99 #ifdef __SYMBIAN32__
    96 #define _do_init \
   100 EXPORT_C
    97 { \
   101 #endif
    98   GST_DEBUG_CATEGORY_INIT (type_find_debug, "GST_TYPEFIND", \
   102 
    99       GST_DEBUG_FG_GREEN, "typefinding subsystem"); \
   103 
   100 }
   104 GType
   101 
   105 gst_type_find_factory_get_type (void)
   102 G_DEFINE_TYPE_WITH_CODE (GstTypeFindFactory, gst_type_find_factory,
   106 {
   103     GST_TYPE_PLUGIN_FEATURE, _do_init);
   107   static GType typefind_type = 0;
       
   108 
       
   109   if (G_UNLIKELY (typefind_type == 0)) {
       
   110     static const GTypeInfo typefind_info = {
       
   111       sizeof (GstTypeFindFactoryClass),
       
   112       NULL,
       
   113       NULL,
       
   114       gst_type_find_factory_class_init,
       
   115       NULL,
       
   116       NULL,
       
   117       sizeof (GstTypeFindFactory),
       
   118       0,
       
   119       gst_type_find_factory_init,
       
   120       NULL
       
   121     };
       
   122 
       
   123     typefind_type = g_type_register_static (GST_TYPE_PLUGIN_FEATURE,
       
   124         "GstTypeFindFactory", &typefind_info, 0);
       
   125     GST_DEBUG_CATEGORY_INIT (type_find_debug, "GST_TYPEFIND",
       
   126         GST_DEBUG_FG_GREEN, "typefinding subsystem");
       
   127   }
       
   128 
       
   129   return typefind_type;
       
   130 }
   104 
   131 
   105 static void
   132 static void
   106 gst_type_find_factory_class_init (GstTypeFindFactoryClass * klass)
   133 gst_type_find_factory_class_init (gpointer g_class, gpointer class_data)
   107 {
   134 {
   108   GObjectClass *object_class = G_OBJECT_CLASS (klass);
   135   GObjectClass *object_class = G_OBJECT_CLASS (g_class);
   109 
   136 
   110   parent_class = g_type_class_peek_parent (klass);
   137   parent_class = g_type_class_peek_parent (g_class);
   111 
   138 
   112   object_class->dispose = gst_type_find_factory_dispose;
   139   object_class->dispose = gst_type_find_factory_dispose;
   113 }
   140 }
   114 
   141 
   115 static void
   142 static void
   116 gst_type_find_factory_init (GstTypeFindFactory * factory)
   143 gst_type_find_factory_init (GTypeInstance * instance, gpointer g_class)
   117 {
   144 {
       
   145   GstTypeFindFactory *factory = GST_TYPE_FIND_FACTORY (instance);
       
   146 
   118   factory->user_data = factory;
   147   factory->user_data = factory;
   119   factory->user_data_notify = NULL;
   148   factory->user_data_notify = NULL;
   120 }
   149 }
   121 
   150 
   122 static void
   151 static void
   227 
   256 
   228   new_factory =
   257   new_factory =
   229       GST_TYPE_FIND_FACTORY (gst_plugin_feature_load (GST_PLUGIN_FEATURE
   258       GST_TYPE_FIND_FACTORY (gst_plugin_feature_load (GST_PLUGIN_FEATURE
   230           (factory)));
   259           (factory)));
   231   if (new_factory) {
   260   if (new_factory) {
   232     if (new_factory->function)
   261     g_assert (new_factory->function != NULL);
   233       new_factory->function (find, new_factory->user_data);
   262 
       
   263     new_factory->function (find, new_factory->user_data);
   234     gst_object_unref (new_factory);
   264     gst_object_unref (new_factory);
   235   }
   265   }
   236 }
   266 }