srt: Fix GClosure usage
authorOlivier Crête <olivier.crete@collabora.com>
Tue, 22 Jan 2019 19:33:32 +0000 (14:33 -0500)
committerOlivier Crête <olivier.crete@ocrete.ca>
Wed, 23 Jan 2019 19:14:30 +0000 (19:14 +0000)
One needs to set a marshaller as well as use the object setter when
setting objects.

ext/srt/gstsrtobject.c

index 3e6468c82a49cd8ab1a2d2ecd02d926ffedd00f5..9b4483e6d27bbcada1a1f07f2100beaed64556d9 100644 (file)
@@ -96,7 +96,7 @@ srt_caller_invoke_removed_closure (SRTCaller * caller, GstSRTObject * srtobject)
   g_value_set_int (&values[0], caller->sock);
 
   g_value_init (&values[1], G_TYPE_SOCKET_ADDRESS);
-  g_value_set_pointer (&values[1], caller->sockaddr);
+  g_value_set_object (&values[1], caller->sockaddr);
 
   g_closure_invoke (srtobject->caller_removed_closure, NULL, 2, values, NULL);
 
@@ -657,15 +657,17 @@ idle_listen_source_cb (gpointer data)
 
     /* notifying caller-added */
     if (srtobject->caller_added_closure != NULL) {
-      GValue values[2] = { G_VALUE_INIT };
+      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_pointer (&values[1], caller->sockaddr);
+      g_value_set_object (&values[1], caller->sockaddr);
 
       g_closure_invoke (srtobject->caller_added_closure, NULL, 2, values, NULL);
+
+      g_value_unset (&values[1]);
     }
 
     GST_DEBUG_OBJECT (srtobject->element, "Accept to connect");
@@ -938,11 +940,15 @@ gst_srt_object_open_full (GstSRTObject * srtobject,
   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);