python: Do not call gst_init when it is already is_initialized
authorThibault Saunier <tsaunier@igalia.com>
Tue, 28 Jun 2022 15:02:37 +0000 (11:02 -0400)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Fri, 8 Jul 2022 14:37:14 +0000 (14:37 +0000)
GStreamer plugins written in python need to call `Gst.init` to ensure
that GStreamer is initialized so when loading a python plugin, we might
be recursively calling `gst_init` which is not a good idea.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/940

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2675>

subprojects/gst-python/gi/overrides/Gst.py

index 1d5a44e..cef36d6 100644 (file)
@@ -732,13 +732,22 @@ def deinit_pygst():
 real_init = Gst.init
 def init(argv):
     init_pygst()
+
+    if Gst.is_initialized():
+        return True
+
     return real_init(argv)
+
 Gst.init = init
 
 real_init_check = Gst.init_check
 def init_check(argv):
     init_pygst()
+    if Gst.is_initialized():
+        return True
+
     return real_init_check(argv)
+
 Gst.init_check = init_check
 
 real_deinit = Gst.deinit