srt: Fix use of srt_startup
authorJan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>
Fri, 25 Sep 2020 17:08:17 +0000 (19:08 +0200)
committerJan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>
Tue, 6 Oct 2020 10:38:57 +0000 (12:38 +0200)
`srt_startup` can also return 1 if it was successful. Avoid warning in
this case.

Avoid a race when checking whether we need to call it at all.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1659>

ext/srt/gstsrtobject.c

index de22dab..4c9ae37 100644 (file)
@@ -262,16 +262,14 @@ gst_srt_object_new (GstElement * element)
 {
   GstSRTObject *srtobject;
 
-  if (g_atomic_int_get (&srt_init_refcount) == 0) {
+  if (g_atomic_int_add (&srt_init_refcount, 1) == 0) {
     GST_DEBUG_OBJECT (element, "Starting up SRT");
-    if (srt_startup () != 0) {
+    if (srt_startup () < 0) {
       g_warning ("Failed to initialize SRT (reason: %s)",
           srt_getlasterror_str ());
     }
   }
 
-  g_atomic_int_inc (&srt_init_refcount);
-
   srtobject = g_new0 (GstSRTObject, 1);
   srtobject->element = element;
   srtobject->parameters = gst_structure_new_empty ("application/x-srt-params");