summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2009-09-28 22:06:11 +0200
committerWim Taymans <wim@metal.(none)>2009-10-01 09:35:54 +0200
commita8d7e6a4901a21ebb4d1e0937e6be7309e8146ac (patch)
treef61341d00fd2e3b1a79070e9b15817e9542f0481
parentf18ed7abf96d27b61003ec0c6d31c0c2755cc82d (diff)
downloadgstreamer-plugins-base-a8d7e6a4901a21ebb4d1e0937e6be7309e8146ac.tar.gz
playsink: make the lock recursive for now
Fixes #583255
-rw-r--r--gst/playback/gstplaysink.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/gst/playback/gstplaysink.c b/gst/playback/gstplaysink.c
index 8ffa2f4f9..fb3993514 100644
--- a/gst/playback/gstplaysink.c
+++ b/gst/playback/gstplaysink.c
@@ -116,15 +116,15 @@ typedef struct
GstElement *sink; /* custom sink to receive subpicture buffers */
} GstPlaySubpChain;
-#define GST_PLAY_SINK_GET_LOCK(playsink) (((GstPlaySink *)playsink)->lock)
-#define GST_PLAY_SINK_LOCK(playsink) g_mutex_lock (GST_PLAY_SINK_GET_LOCK (playsink))
-#define GST_PLAY_SINK_UNLOCK(playsink) g_mutex_unlock (GST_PLAY_SINK_GET_LOCK (playsink))
+#define GST_PLAY_SINK_GET_LOCK(playsink) (&((GstPlaySink *)playsink)->lock)
+#define GST_PLAY_SINK_LOCK(playsink) g_static_rec_mutex_lock (GST_PLAY_SINK_GET_LOCK (playsink))
+#define GST_PLAY_SINK_UNLOCK(playsink) g_static_rec_mutex_unlock (GST_PLAY_SINK_GET_LOCK (playsink))
struct _GstPlaySink
{
GstBin bin;
- GMutex *lock;
+ GStaticRecMutex lock;
gboolean async_pending;
gboolean need_async_start;
@@ -354,7 +354,7 @@ gst_play_sink_init (GstPlaySink * playsink)
playsink->font_desc = NULL;
playsink->flags = DEFAULT_FLAGS;
- playsink->lock = g_mutex_new ();
+ g_static_rec_mutex_init (&playsink->lock);
playsink->need_async_start = TRUE;
GST_OBJECT_FLAG_SET (playsink, GST_ELEMENT_IS_SINK);
}
@@ -438,7 +438,7 @@ gst_play_sink_finalize (GObject * object)
playsink = GST_PLAY_SINK (object);
- g_mutex_free (playsink->lock);
+ g_static_rec_mutex_free (&playsink->lock);
G_OBJECT_CLASS (gst_play_sink_parent_class)->finalize (object);
}