[pitivi] check: Fix handling of gtkglsink not available
- From: Alexandru Băluț <alexbalut src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi] check: Fix handling of gtkglsink not available
- Date: Tue, 13 Dec 2016 07:25:58 +0000 (UTC)
commit d3d0273d232b20e9dbc194b15a0776ef97162bbc
Author: Alexandru Băluț <alexandru balut gmail com>
Date: Wed Nov 23 15:57:07 2016 +0100
check: Fix handling of gtkglsink not available
When the sink creation failed, the code attempted to use its factory.
Also extracted code in _using_broadway_display() to clarify what's
happening.
Reviewed-by: Thibault Saunier <tsaunier gnome org>
Differential Revision: https://phabricator.freedesktop.org/D1546
pitivi/check.py | 51 ++++++++++++++++++++++++---------------------------
1 files changed, 24 insertions(+), 27 deletions(-)
---
diff --git a/pitivi/check.py b/pitivi/check.py
index bd9e7fd..09d0a04 100644
--- a/pitivi/check.py
+++ b/pitivi/check.py
@@ -192,43 +192,40 @@ def _check_audiosinks():
from gi.repository import Gst
# Yes, this can still fail, if PulseAudio is non-responsive for example.
sink = Gst.ElementFactory.make("autoaudiosink", None)
- if not sink:
- return False
- return True
+ return sink
-def _check_videosink():
- from gi.repository import Gst
+def _using_broadway_display():
from gi.repository import Gdk
from gi.repository import GObject
- global videosink_factory
-
try:
- # If using GdkBroadwayDisplay make sure not to try to use gtkglsink
- # as it would segfault right away.
- if GObject.type_is_a(Gdk.Display.get_default().__gtype__,
- GObject.type_from_name("GdkBroadwayDisplay")):
- videosink_factory = Gst.ElementFactory.find("gtksink")
- return True
+ gdk_broadway_display_type = GObject.type_from_name("GdkBroadwayDisplay")
except RuntimeError:
- pass
+ return False
+ display = Gdk.Display.get_default()
+ return GObject.type_is_a(display.__gtype__, gdk_broadway_display_type)
+
- if "gtkglsink" in os.environ.get("PITIVI_UNSTABLE_FEATURES", ''):
+def _check_videosink():
+ from gi.repository import Gst
+ global videosink_factory
+
+ # If using GdkBroadwayDisplay make sure not to try to use gtkglsink
+ # as it would segfault right away.
+ if not videosink_factory and \
+ not _using_broadway_display() and \
+ "gtkglsink" in os.environ.get("PITIVI_UNSTABLE_FEATURES", ""):
sink = Gst.ElementFactory.make("gtkglsink", None)
- if not sink:
- videosink_factory = sink.get_factory()
- elif sink.set_state(Gst.State.READY) == Gst.StateChangeReturn.SUCCESS:
- videosink_factory = sink.get_factory()
- sink.set_state(Gst.State.NULL)
- else:
- videosink_factory = Gst.ElementFactory.find("gtksink")
- else:
- videosink_factory = Gst.ElementFactory.find("gtksink")
+ if sink:
+ res = sink.set_state(Gst.State.READY)
+ if res == Gst.StateChangeReturn.SUCCESS:
+ videosink_factory = sink.get_factory()
+ sink.set_state(Gst.State.NULL)
- if videosink_factory:
- return True
+ if not videosink_factory:
+ videosink_factory = Gst.ElementFactory.find("gtksink")
- return False
+ return videosink_factory
def _check_gst_python():
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]