[pitivi] pipeline: Makes sure not to try seeking while rendering
- From: Thibault Saunier <tsaunier src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi] pipeline: Makes sure not to try seeking while rendering
- Date: Tue, 6 Oct 2015 18:05:11 +0000 (UTC)
commit f667b10821c0e9567c58d130c54d9079f9118084
Author: Thibault Saunier <tsaunier gnome org>
Date: Tue Oct 6 19:58:34 2015 +0200
pipeline: Makes sure not to try seeking while rendering
And raise an error if that happens again.
Fixes T3351
Differential Revision: https://phabricator.freedesktop.org/D336
pitivi/render.py | 2 +-
pitivi/utils/pipeline.py | 9 ++++++++-
2 files changed, 9 insertions(+), 2 deletions(-)
---
diff --git a/pitivi/render.py b/pitivi/render.py
index 6c1d4ef..e855b96 100644
--- a/pitivi/render.py
+++ b/pitivi/render.py
@@ -863,7 +863,6 @@ class RenderDialog(Loggable):
def _shutDown(self):
"""Shutdown the gstreamer pipeline and disconnect from its signals."""
- self.project.set_rendering(False)
self._is_rendering = False
self._rendering_is_paused = False
self._time_spent_paused = 0
@@ -871,6 +870,7 @@ class RenderDialog(Loggable):
self._disconnectFromGst()
self._pipeline.set_mode(GES.PipelineFlags.FULL_PREVIEW)
self._pipeline.set_state(Gst.State.PAUSED)
+ self.project.set_rendering(False)
def _pauseRender(self, unused_progress):
self._rendering_is_paused = self.progress.play_pause_button.get_active(
diff --git a/pitivi/utils/pipeline.py b/pitivi/utils/pipeline.py
index 51a0b00..6f422bb 100644
--- a/pitivi/utils/pipeline.py
+++ b/pitivi/utils/pipeline.py
@@ -505,7 +505,7 @@ class SimplePipeline(GObject.Object, Loggable):
self._handleErrorMessage(error, detail, message.src)
Gst.debug_bin_to_dot_file_with_ts(self, Gst.DebugGraphDetails.ALL,
"pitivi.error")
- if not (self._pipeline.get_mode() & GES.PipelineFlags.RENDER):
+ if not self._pipeline.get_mode() & GES.PipelineFlags.RENDER:
self._recover()
elif message.type == Gst.MessageType.DURATION_CHANGED:
self.debug("Duration might have changed, querying it")
@@ -636,6 +636,10 @@ class Pipeline(GES.Pipeline, SimplePipeline):
watchdog.props.timeout = WATCHDOG_TIMEOUT * 1000
self.props.audio_filter = watchdog
+ def set_mode(self, mode):
+ self._next_seek = None
+ return GES.Pipeline.set_mode(self, mode)
+
def _getDuration(self):
return self._timeline.get_duration()
@@ -698,6 +702,9 @@ class Pipeline(GES.Pipeline, SimplePipeline):
if self._timeline.is_empty():
return
+ if self._pipeline.get_mode() & GES.PipelineFlags.RENDER:
+ raise PipelineError("Trying to seek while rendering")
+
st = Gst.Structure.new_empty("seek")
if self.getState() == Gst.State.PLAYING:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]