[pitivi] pipeline: Add sink_widget field
- From: Alexandru Băluț <alexbalut src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi] pipeline: Add sink_widget field
- Date: Fri, 22 Apr 2016 04:24:25 +0000 (UTC)
commit c2c569f7622ffbd67f81b64ee6f2651b17e084c2
Author: Alexandru Băluț <alexandru balut gmail com>
Date: Wed Apr 20 08:53:04 2016 +0200
pipeline: Add sink_widget field
Differential Revision: https://phabricator.freedesktop.org/D944
pitivi/utils/pipeline.py | 33 ++++++++++++++++++++-------------
pitivi/viewer/viewer.py | 12 +++---------
2 files changed, 23 insertions(+), 22 deletions(-)
---
diff --git a/pitivi/utils/pipeline.py b/pitivi/utils/pipeline.py
index b6d5332..02ee061 100644
--- a/pitivi/utils/pipeline.py
+++ b/pitivi/utils/pipeline.py
@@ -102,24 +102,21 @@ class SimplePipeline(GObject.Object, Loggable):
self._timeout_async_id = 0
self._force_position_listener = False
- self.setSink(self.createSink())
+ self.video_sink = None
+ self.sink_widget = None
- def createSink(self):
+ def create_sink(self):
sink = Gst.ElementFactory.make(videosink_factory.get_name(), None)
+ self.sink_widget = sink.props.widget
+
if videosink_factory.get_name() == "gtksink":
self.info("Using gtksink")
- return sink
-
- sinkbin = Gst.ElementFactory.make("glsinkbin", None)
- sinkbin.props.sink = sink
- return sinkbin
-
- def setSink(self, sink):
- self.video_sink = sink
- if isinstance(self._pipeline, GES.Pipeline):
- self._pipeline.preview_set_video_sink(self.video_sink)
+ self.video_sink = sink
else:
- self._pipeline.set_property("video_sink", self.video_sink)
+ self.info("Using glsinkbin around %s", videosink_factory.get_name())
+ sinkbin = Gst.ElementFactory.make("glsinkbin", None)
+ sinkbin.props.sink = sink
+ self.video_sink = sinkbin
def setForcePositionListener(self, force):
self._force_position_listener = force
@@ -518,10 +515,16 @@ class AssetPipeline(SimplePipeline):
bPipeline = Gst.ElementFactory.make("playbin", name)
SimplePipeline.__init__(self, bPipeline)
+ self.create_sink()
+
self.clip = clip
if self.clip:
self.setClipUri(self.clip.props.uri)
+ def create_sink(self):
+ SimplePipeline.create_sink(self)
+ self._pipeline.set_property("video_sink", self.video_sink)
+
def setClipUri(self, uri):
self._pipeline.set_property("uri", uri)
@@ -554,6 +557,10 @@ class Pipeline(GES.Pipeline, SimplePipeline):
watchdog.props.timeout = WATCHDOG_TIMEOUT * 1000
self.props.audio_filter = watchdog
+ def create_sink(self):
+ SimplePipeline.create_sink(self)
+ self._pipeline.preview_set_video_sink(self.video_sink)
+
def set_mode(self, mode):
self._next_seek = None
return GES.Pipeline.set_mode(self, mode)
diff --git a/pitivi/viewer/viewer.py b/pitivi/viewer/viewer.py
index f72eda3..7413a0c 100644
--- a/pitivi/viewer/viewer.py
+++ b/pitivi/viewer/viewer.py
@@ -137,7 +137,7 @@ class ViewerContainer(Gtk.Box, Loggable):
self.pipeline.pause()
def __createNewViewer(self):
- self.pipeline.setSink(self.pipeline.createSink())
+ self.pipeline.create_sink()
self.target = ViewerWidget(self.pipeline, self.app)
@@ -498,19 +498,13 @@ class ViewerWidget(Gtk.AspectFrame, Loggable):
self._pipeline = pipeline
- # We only work with a gtkglsink inside a glsinkbin
- sink = pipeline.video_sink
- try:
- sink_widget = sink.props.sink.props.widget
- except AttributeError:
- sink_widget = sink.props.widget
- sink_widget.show()
+ pipeline.sink_widget.show()
# We keep the ViewerWidget hidden initially, or the desktop wallpaper
# would show through the non-double-buffered widget!
# Assign Viewer Overlay via Gtk.Overlay
- self.overlay_stack = OverlayStack(app, sink_widget)
+ self.overlay_stack = OverlayStack(app, pipeline.sink_widget)
self.add(self.overlay_stack)
def setDisplayAspectRatio(self, ratio):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]