2005-06-23 Andy Wingo <wingo@pobox.com>
+ * gst/gstobject.h (GST_CLASS_LOCK, GST_CLASS_TRYLOCK)
+ (GST_CLASS_UNLOCK, GST_CLASS_GET_LOCK, GstObjectClass)
+ * gst/gstobject.c (gst_object_class_init): Make the class lock
+ recursive. Wim won't let me drop deep_notify. Decodebin works
+ again, whoopdy doo.
+
* gst/gstghostpad.c (on_int_notify): Catches notify::caps on the
internal pad, and hacks accordingly. Doesn't do it on the target
pad because we change its caps. Probably catches all cases of
G_TYPE_PARAM);
klass->path_string_separator = "/";
- klass->lock = g_mutex_new ();
+ klass->lock = g_new0 (GStaticRecMutex, 1);
+ g_static_rec_mutex_init (klass->lock);
klass->signal_object = g_object_new (gst_signal_object_get_type (), NULL);
gpointer _gst_reserved[GST_PADDING];
};
-#define GST_CLASS_LOCK(obj) (g_mutex_lock(GST_OBJECT_CLASS_CAST(obj)->lock))
-#define GST_CLASS_TRYLOCK(obj) (g_mutex_trylock(GST_OBJECT_CLASS_CAST(obj)->lock))
-#define GST_CLASS_UNLOCK(obj) (g_mutex_unlock(GST_OBJECT_CLASS_CAST(obj)->lock))
+#define GST_CLASS_LOCK(obj) (g_static_rec_mutex_lock(GST_OBJECT_CLASS_CAST(obj)->lock))
+#define GST_CLASS_TRYLOCK(obj) (g_static_rec_mutex_trylock(GST_OBJECT_CLASS_CAST(obj)->lock))
+#define GST_CLASS_UNLOCK(obj) (g_static_rec_mutex_unlock(GST_OBJECT_CLASS_CAST(obj)->lock))
#define GST_CLASS_GET_LOCK(obj) (GST_OBJECT_CLASS_CAST(obj)->lock)
/* signal_object is used to signal to the whole class */
gchar *path_string_separator;
GObject *signal_object;
- GMutex *lock;
+ GStaticRecMutex *lock;
/* signals */
void (*parent_set) (GstObject *object, GstObject *parent);