ximagesink/xvimagesink: use GST_XINITTHREADS to ensure call to XInitThreads
authorHaihua Hu <jared.hu@nxp.com>
Fri, 1 Apr 2022 13:47:59 +0000 (21:47 +0800)
committerHaihua Hu <jared.hu@nxp.com>
Mon, 4 Apr 2022 07:49:02 +0000 (15:49 +0800)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2098>

subprojects/gst-devtools/validate/launcher/baseclasses.py
subprojects/gst-plugins-base/ext/gl/gstglelement.c
subprojects/gst-plugins-base/sys/ximage/ximage.c
subprojects/gst-plugins-base/sys/xvimage/xvimage.c
subprojects/gst-plugins-base/tests/check/elements/glfilter.c
subprojects/gst-plugins-base/tests/check/elements/glimagesink.c
subprojects/gst-plugins-base/tests/check/elements/glmixer.c
subprojects/gst-plugins-base/tests/check/elements/glstereo.c
subprojects/gst-plugins-base/tools/gst-play.c
subprojects/gstreamer/tools/gst-launch.c

index e3b0a1d..8b2cf76 100644 (file)
@@ -933,6 +933,8 @@ class GstValidateTest(Test):
         # Ensure XInitThreads is called, see bgo#731525
         subproc_env['GST_GL_XINITTHREADS'] = '1'
         self.add_env_variable('GST_GL_XINITTHREADS', '1')
+        subproc_env['GST_XINITTHREADS'] = '1'
+        self.add_env_variable('GST_XINITTHREADS', '1')
 
         if self.scenario is not None:
             scenario = self.scenario.get_execution_name()
index 1662b73..0b4269c 100644 (file)
@@ -62,7 +62,7 @@ gl_element_init (GstPlugin * plugin)
 #endif
 
 #if GST_GL_HAVE_WINDOW_X11
-    if (g_getenv ("GST_GL_XINITTHREADS"))
+    if (g_getenv ("GST_GL_XINITTHREADS") || g_getenv ("GST_XINITTHREADS"))
       XInitThreads ();
 #endif
     g_once_init_leave (&res, TRUE);
index 0a48c89..6fe9c86 100644 (file)
@@ -27,6 +27,9 @@
 static gboolean
 plugin_init (GstPlugin * plugin)
 {
+  if (g_getenv ("GST_XINITTHREADS"))
+    XInitThreads ();
+
   return GST_ELEMENT_REGISTER (ximagesink, plugin);
 }
 
index 837306e..8b50f69 100644 (file)
@@ -27,6 +27,9 @@
 static gboolean
 plugin_init (GstPlugin * plugin)
 {
+  if (g_getenv ("GST_XINITTHREADS"))
+    XInitThreads ();
+
   return GST_ELEMENT_REGISTER (xvimagesink, plugin);;
 }
 
index a71120e..7af3caf 100644 (file)
@@ -125,6 +125,7 @@ main (int argc, char **argv)
 {
   Suite *s;
   g_setenv ("GST_GL_XINITTHREADS", "1", TRUE);
+  g_setenv ("GST_XINITTHREADS", "1", TRUE);
   gst_check_init (&argc, &argv);
   s = glfilter_suite ();
   return gst_check_run_suite (s, "glfilter", __FILE__);
index 90490f5..67a67c7 100644 (file)
@@ -277,6 +277,7 @@ main (int argc, char **argv)
 {
   Suite *s;
   g_setenv ("GST_GL_XINITTHREADS", "1", TRUE);
+  g_setenv ("GST_XINITTHREADS", "1", TRUE);
   gst_check_init (&argc, &argv);
   s = glimagesink_suite ();
   return gst_check_run_suite (s, "glimagesink", __FILE__);
index a1c44e8..56d6e46 100644 (file)
@@ -144,6 +144,7 @@ main (int argc, char **argv)
 {
   Suite *s;
   g_setenv ("GST_GL_XINITTHREADS", "1", TRUE);
+  g_setenv ("GST_XINITTHREADS", "1", TRUE);
   gst_check_init (&argc, &argv);
   s = glmixer_suite ();
   return gst_check_run_suite (s, "glmixer", __FILE__);
index fbf568e..2ae05c0 100644 (file)
@@ -70,6 +70,7 @@ main (int argc, char **argv)
 {
   Suite *s;
   g_setenv ("GST_GL_XINITTHREADS", "1", TRUE);
+  g_setenv ("GST_XINITTHREADS", "1", TRUE);
   gst_check_init (&argc, &argv);
   s = glstereo_suite ();
   return gst_check_run_suite (s, "glstereo", __FILE__);
index da6dfec..d8702b9 100644 (file)
@@ -1659,6 +1659,7 @@ main (int argc, char **argv)
   g_set_prgname ("gst-play-" GST_API_VERSION);
   /* Ensure XInitThreads() is called if/when needed */
   g_setenv ("GST_GL_XINITTHREADS", "1", TRUE);
+  g_setenv ("GST_XINITTHREADS", "1", TRUE);
 
   ctx = g_option_context_new ("FILE1|URI1 [FILE2|URI2] [FILE3|URI3] ...");
   g_option_context_add_main_entries (ctx, options, GETTEXT_PACKAGE);
index d38ea9f..2a3bf4b 100644 (file)
@@ -1149,6 +1149,7 @@ main (int argc, char *argv[])
   g_set_prgname ("gst-launch-" GST_API_VERSION);
   /* Ensure XInitThreads() is called if/when needed */
   g_setenv ("GST_GL_XINITTHREADS", "1", TRUE);
+  g_setenv ("GST_XINITTHREADS", "1", TRUE);
 
 #ifndef GST_DISABLE_OPTION_PARSING
   ctx = g_option_context_new ("PIPELINE-DESCRIPTION");