From: Tim-Philipp Müller Date: Sat, 9 Feb 2013 19:49:08 +0000 (+0000) Subject: shm: don't use deprecated threading API X-Git-Tag: 1.19.3~507^2~14107 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=68a34d2a608fc69bcf5e5cd610c3ceb6beb1350d;p=platform%2Fupstream%2Fgstreamer.git shm: don't use deprecated threading API --- diff --git a/sys/shm/gstshmsink.c b/sys/shm/gstshmsink.c index 943d45a..6228a55 100644 --- a/sys/shm/gstshmsink.c +++ b/sys/shm/gstshmsink.c @@ -37,7 +37,6 @@ #include "gstshmsink.h" #include -#include #include @@ -104,7 +103,7 @@ static guint signals[LAST_SIGNAL] = { 0 }; static void gst_shm_sink_init (GstShmSink * self) { - self->cond = g_cond_new (); + g_cond_init (&self->cond); self->size = DEFAULT_SIZE; self->wait_for_connection = DEFAULT_WAIT_FOR_CONNECTION; self->perms = DEFAULT_PERMS; @@ -190,7 +189,7 @@ gst_shm_sink_finalize (GObject * object) { GstShmSink *self = GST_SHM_SINK (object); - g_cond_free (self->cond); + g_cond_clear (&self->cond); G_OBJECT_CLASS (parent_class)->finalize (object); } @@ -239,13 +238,13 @@ gst_shm_sink_set_property (GObject * object, guint prop_id, GST_OBJECT_LOCK (object); self->wait_for_connection = g_value_get_boolean (value); GST_OBJECT_UNLOCK (object); - g_cond_broadcast (self->cond); + g_cond_broadcast (&self->cond); break; case PROP_BUFFER_TIME: GST_OBJECT_LOCK (object); self->buffer_time = g_value_get_int64 (value); GST_OBJECT_UNLOCK (object); - g_cond_broadcast (self->cond); + g_cond_broadcast (&self->cond); break; default: break; @@ -290,6 +289,7 @@ static gboolean gst_shm_sink_start (GstBaseSink * bsink) { GstShmSink *self = GST_SHM_SINK (bsink); + GError *err = NULL; self->stop = FALSE; @@ -322,7 +322,8 @@ gst_shm_sink_start (GstBaseSink * bsink) gst_poll_add_fd (self->poll, &self->serverpollfd); gst_poll_fd_ctl_read (self->poll, &self->serverpollfd, TRUE); - self->pollthread = g_thread_create (pollthread_func, self, TRUE, NULL); + self->pollthread = + g_thread_try_new ("gst-shmsink-poll-thread", pollthread_func, self, &err); if (!self->pollthread) goto thread_error; @@ -335,7 +336,9 @@ thread_error: self->pipe = NULL; gst_poll_free (self->poll); - GST_ELEMENT_ERROR (self, CORE, THREAD, ("Could not srart thread"), (NULL)); + GST_ELEMENT_ERROR (self, CORE, THREAD, ("Could not start thread"), + ("%s", err->message)); + g_error_free (err); return FALSE; } @@ -398,7 +401,7 @@ gst_shm_sink_render (GstBaseSink * bsink, GstBuffer * buf) GST_OBJECT_LOCK (self); while (self->wait_for_connection && !self->clients) { - g_cond_wait (self->cond, GST_OBJECT_GET_LOCK (self)); + g_cond_wait (&self->cond, GST_OBJECT_GET_LOCK (self)); if (self->unlock) { GST_OBJECT_UNLOCK (self); return GST_FLOW_FLUSHING; @@ -406,7 +409,7 @@ gst_shm_sink_render (GstBaseSink * bsink, GstBuffer * buf) } while (!gst_shm_sink_can_render (self, GST_BUFFER_TIMESTAMP (buf))) { - g_cond_wait (self->cond, GST_OBJECT_GET_LOCK (self)); + g_cond_wait (&self->cond, GST_OBJECT_GET_LOCK (self)); if (self->unlock) { GST_OBJECT_UNLOCK (self); return GST_FLOW_FLUSHING; @@ -423,14 +426,14 @@ gst_shm_sink_render (GstBaseSink * bsink, GstBuffer * buf) gchar *shmbuf = NULL; while ((block = sp_writer_alloc_block (self->pipe, gst_buffer_get_size (buf))) == NULL) { - g_cond_wait (self->cond, GST_OBJECT_GET_LOCK (self)); + g_cond_wait (&self->cond, GST_OBJECT_GET_LOCK (self)); if (self->unlock) { GST_OBJECT_UNLOCK (self); return GST_FLOW_FLUSHING; } } while (self->wait_for_connection && !self->clients) { - g_cond_wait (self->cond, GST_OBJECT_GET_LOCK (self)); + g_cond_wait (&self->cond, GST_OBJECT_GET_LOCK (self)); if (self->unlock) { sp_writer_free_block (block); GST_OBJECT_UNLOCK (self); @@ -615,7 +618,7 @@ pollthread_func (gpointer data) goto again; } - g_cond_broadcast (self->cond); + g_cond_broadcast (&self->cond); } return NULL; @@ -631,7 +634,7 @@ gst_shm_sink_event (GstBaseSink * bsink, GstEvent * event) GST_OBJECT_LOCK (self); while (self->wait_for_connection && sp_writer_pending_writes (self->pipe) && !self->unlock) - g_cond_wait (self->cond, GST_OBJECT_GET_LOCK (self)); + g_cond_wait (&self->cond, GST_OBJECT_GET_LOCK (self)); GST_OBJECT_UNLOCK (self); break; default: @@ -651,7 +654,7 @@ gst_shm_sink_unlock (GstBaseSink * bsink) self->unlock = TRUE; GST_OBJECT_UNLOCK (self); - g_cond_broadcast (self->cond); + g_cond_broadcast (&self->cond); return TRUE; } diff --git a/sys/shm/gstshmsink.h b/sys/shm/gstshmsink.h index 3b85117..ca1ee12 100644 --- a/sys/shm/gstshmsink.h +++ b/sys/shm/gstshmsink.h @@ -63,7 +63,7 @@ struct _GstShmSink gboolean unlock; GstClockTimeDiff buffer_time; - GCond *cond; + GCond cond; }; struct _GstShmSinkClass