diff options
author | Jan Alexander Steffens (heftig) <jsteffens@make.tv> | 2020-03-18 18:06:59 +0100 |
---|---|---|
committer | Jan Alexander Steffens (heftig) <jsteffens@make.tv> | 2020-04-15 10:42:47 +0200 |
commit | 132e3a1af9deb1d2cdf84d22b954967207bcc03a (patch) | |
tree | f3c734ca5f9d193d672418437f597d6cb31d9f8c /ext/srt | |
parent | d2d00e07acc2b1ab1ae5a728ef5dc33c9dee7869 (diff) | |
download | gstreamer-plugins-bad-132e3a1af9deb1d2cdf84d22b954967207bcc03a.tar.gz |
srt: Remove use of closures for signal emission
It seems overly complicated.
Diffstat (limited to 'ext/srt')
-rw-r--r-- | ext/srt/gstsrtobject.c | 67 | ||||
-rw-r--r-- | ext/srt/gstsrtobject.h | 14 | ||||
-rw-r--r-- | ext/srt/gstsrtsink.c | 23 | ||||
-rw-r--r-- | ext/srt/gstsrtsrc.c | 23 |
4 files changed, 9 insertions, 118 deletions
diff --git a/ext/srt/gstsrtobject.c b/ext/srt/gstsrtobject.c index 27b448ed3..e3e8db664 100644 --- a/ext/srt/gstsrtobject.c +++ b/ext/srt/gstsrtobject.c @@ -90,24 +90,10 @@ srt_caller_free (SRTCaller * caller) /* called with sock_lock */ static void -srt_caller_invoke_removed_closure (SRTCaller * caller, GstSRTObject * srtobject) +srt_caller_signal_removed (SRTCaller * caller, GstSRTObject * srtobject) { - GValue values[2] = { G_VALUE_INIT }; - - if (srtobject->caller_removed_closure == NULL) { - return; - } - - g_value_init (&values[0], G_TYPE_INT); - g_value_set_int (&values[0], caller->sock); - - g_value_init (&values[1], G_TYPE_SOCKET_ADDRESS); - g_value_set_object (&values[1], caller->sockaddr); - - g_closure_invoke (srtobject->caller_removed_closure, NULL, 2, values, NULL); - - g_value_unset (&values[0]); - g_value_unset (&values[1]); + g_signal_emit_by_name (srtobject->element, "caller-removed", caller->sock, + caller->sockaddr); } struct srt_constant_params @@ -733,20 +719,8 @@ thread_func (gpointer data) g_mutex_unlock (&srtobject->sock_lock); /* notifying caller-added */ - if (srtobject->caller_added_closure != NULL) { - GValue values[2] = { G_VALUE_INIT, G_VALUE_INIT }; - - g_value_init (&values[0], G_TYPE_INT); - g_value_set_int (&values[0], caller->sock); - - g_value_init (&values[1], G_TYPE_SOCKET_ADDRESS); - g_value_set_object (&values[1], caller->sockaddr); - - g_closure_invoke (srtobject->caller_added_closure, NULL, 2, values, - NULL); - - g_value_unset (&values[1]); - } + g_signal_emit_by_name (srtobject->element, "caller-added", caller->sock, + caller->sockaddr); GST_DEBUG_OBJECT (srtobject->element, "Accept to connect"); @@ -996,15 +970,6 @@ gboolean gst_srt_object_open (GstSRTObject * srtobject, GCancellable * cancellable, GError ** error) { - return gst_srt_object_open_full (srtobject, NULL, NULL, cancellable, error); -} - -gboolean -gst_srt_object_open_full (GstSRTObject * srtobject, - GstSRTObjectCallerAdded caller_added_func, - GstSRTObjectCallerRemoved caller_removed_func, - GCancellable * cancellable, GError ** error) -{ GSocketAddress *socket_address = NULL; GstSRTConnectionMode connection_mode = GST_SRT_CONNECTION_MODE_NONE; @@ -1018,20 +983,6 @@ gst_srt_object_open_full (GstSRTObject * srtobject, srtobject->opened = FALSE; - if (caller_added_func != NULL) { - srtobject->caller_added_closure = - g_cclosure_new (G_CALLBACK (caller_added_func), srtobject, NULL); - g_closure_set_marshal (srtobject->caller_added_closure, - g_cclosure_marshal_generic); - } - - if (caller_removed_func != NULL) { - srtobject->caller_removed_closure = - g_cclosure_new (G_CALLBACK (caller_removed_func), srtobject, NULL); - g_closure_set_marshal (srtobject->caller_removed_closure, - g_cclosure_marshal_generic); - } - addr_str = gst_uri_get_host (srtobject->uri); if (addr_str == NULL) { addr_str = GST_SRT_DEFAULT_LOCALADDRESS; @@ -1132,14 +1083,10 @@ gst_srt_object_close (GstSRTObject * srtobject) if (srtobject->callers) { GList *callers = g_steal_pointer (&srtobject->callers); - g_list_foreach (callers, (GFunc) srt_caller_invoke_removed_closure, - srtobject); + g_list_foreach (callers, (GFunc) srt_caller_signal_removed, srtobject); g_list_free_full (callers, (GDestroyNotify) srt_caller_free); } - g_clear_pointer (&srtobject->caller_added_closure, g_closure_unref); - g_clear_pointer (&srtobject->caller_removed_closure, g_closure_unref); - g_mutex_unlock (&srtobject->sock_lock); GST_OBJECT_LOCK (srtobject->element); @@ -1388,7 +1335,7 @@ gst_srt_object_write_to_callers (GstSRTObject * srtobject, err: srtobject->callers = g_list_remove (srtobject->callers, caller); - srt_caller_invoke_removed_closure (caller, srtobject); + srt_caller_signal_removed (caller, srtobject); srt_caller_free (caller); } diff --git a/ext/srt/gstsrtobject.h b/ext/srt/gstsrtobject.h index 754ebf274..2bc800ac5 100644 --- a/ext/srt/gstsrtobject.h +++ b/ext/srt/gstsrtobject.h @@ -68,19 +68,11 @@ struct _GstSRTObject GList *callers; - GClosure *caller_added_closure; - GClosure *caller_removed_closure; - gchar *passphrase; gboolean wait_for_connection; }; - -typedef void (*GstSRTObjectCallerAdded) (int sock, GSocketAddress *addr, GstSRTObject * srtobject); - -typedef void (*GstSRTObjectCallerRemoved) (int sock, GSocketAddress *addr, GstSRTObject * srtobject); - GstSRTObject *gst_srt_object_new (GstElement *element); void gst_srt_object_destroy (GstSRTObject *srtobject); @@ -89,12 +81,6 @@ gboolean gst_srt_object_open (GstSRTObject *srtobject, GCancellable *cancellable, GError **error); -gboolean gst_srt_object_open_full (GstSRTObject *srtobject, - GstSRTObjectCallerAdded caller_added_func, - GstSRTObjectCallerRemoved caller_removed_func, - GCancellable *cancellable, - GError **error); - void gst_srt_object_close (GstSRTObject *srtobject); gboolean gst_srt_object_set_property_helper (GstSRTObject *srtobject, diff --git a/ext/srt/gstsrtsink.c b/ext/srt/gstsrtsink.c index 9a7df63dc..9e7fe51e1 100644 --- a/ext/srt/gstsrtsink.c +++ b/ext/srt/gstsrtsink.c @@ -118,21 +118,6 @@ gst_srt_sink_init (GstSRTSink * self) gst_srt_object_set_uri (self->srtobject, GST_SRT_DEFAULT_URI, NULL); } -static void -gst_srt_sink_caller_added_cb (int sock, GSocketAddress * addr, - GstSRTObject * srtobject) -{ - g_signal_emit (srtobject->element, signals[SIG_CALLER_ADDED], 0, sock, addr); -} - -static void -gst_srt_sink_caller_removed_cb (int sock, GSocketAddress * addr, - GstSRTObject * srtobject) -{ - g_signal_emit (srtobject->element, signals[SIG_CALLER_REMOVED], 0, sock, - addr); -} - static gboolean gst_srt_sink_start (GstBaseSink * bsink) { @@ -145,13 +130,7 @@ gst_srt_sink_start (GstBaseSink * bsink) gst_structure_get_enum (self->srtobject->parameters, "mode", GST_TYPE_SRT_CONNECTION_MODE, (gint *) & connection_mode); - if (connection_mode == GST_SRT_CONNECTION_MODE_LISTENER) { - ret = - gst_srt_object_open_full (self->srtobject, gst_srt_sink_caller_added_cb, - gst_srt_sink_caller_removed_cb, self->cancellable, &error); - } else { - ret = gst_srt_object_open (self->srtobject, self->cancellable, &error); - } + ret = gst_srt_object_open (self->srtobject, self->cancellable, &error); if (!ret) { /* ensure error is posted since state change will fail */ diff --git a/ext/srt/gstsrtsrc.c b/ext/srt/gstsrtsrc.c index 14c1dbbf1..2b898ea79 100644 --- a/ext/srt/gstsrtsrc.c +++ b/ext/srt/gstsrtsrc.c @@ -77,21 +77,6 @@ G_DEFINE_TYPE_WITH_CODE (GstSRTSrc, gst_srt_src, G_IMPLEMENT_INTERFACE (GST_TYPE_URI_HANDLER, gst_srt_src_uri_handler_init) GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "srtsrc", 0, "SRT Source")); -static void -gst_srt_src_caller_added_cb (int sock, GSocketAddress * addr, - GstSRTObject * srtobject) -{ - g_signal_emit (srtobject->element, signals[SIG_CALLER_ADDED], 0, sock, addr); -} - -static void -gst_srt_src_caller_removed_cb (int sock, GSocketAddress * addr, - GstSRTObject * srtobject) -{ - g_signal_emit (srtobject->element, signals[SIG_CALLER_REMOVED], 0, sock, - addr); -} - static gboolean gst_srt_src_start (GstBaseSrc * bsrc) { @@ -103,13 +88,7 @@ gst_srt_src_start (GstBaseSrc * bsrc) gst_structure_get_enum (self->srtobject->parameters, "mode", GST_TYPE_SRT_CONNECTION_MODE, (gint *) & connection_mode); - if (connection_mode == GST_SRT_CONNECTION_MODE_LISTENER) { - ret = - gst_srt_object_open_full (self->srtobject, gst_srt_src_caller_added_cb, - gst_srt_src_caller_removed_cb, self->cancellable, &error); - } else { - ret = gst_srt_object_open (self->srtobject, self->cancellable, &error); - } + ret = gst_srt_object_open (self->srtobject, self->cancellable, &error); if (!ret) { /* ensure error is posted since state change will fail */ |