gst/gstobject.h (GST_CLASS_LOCK, GST_CLASS_TRYLOCK) (GST_CLASS_UNLOCK, GST_CLASS_GET_...
authorAndy Wingo <wingo@pobox.com>
Thu, 23 Jun 2005 15:04:48 +0000 (15:04 +0000)
committerAndy Wingo <wingo@pobox.com>
Thu, 23 Jun 2005 15:04:48 +0000 (15:04 +0000)
Original commit message from CVS:
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.

ChangeLog
gst/gstobject.c
gst/gstobject.h

index 358f0cd..84bd6df 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 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
index c80decd..d0f73c2 100644 (file)
@@ -187,7 +187,8 @@ gst_object_class_init (GstObjectClass * klass)
       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);
 
index 3a6e15a..b60f83f 100644 (file)
@@ -98,9 +98,9 @@ struct _GstObject {
   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 */
@@ -110,7 +110,7 @@ struct _GstObjectClass {
   gchar                *path_string_separator;
   GObject      *signal_object;
 
-  GMutex        *lock;
+  GStaticRecMutex *lock;
 
   /* signals */
   void         (*parent_set)           (GstObject *object, GstObject *parent);