[pitivi] previewers: be more conservative about loading pickled waveforms
- From: Thibault Saunier <tsaunier src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi] previewers: be more conservative about loading pickled waveforms
- Date: Fri, 18 Aug 2017 01:34:43 +0000 (UTC)
commit fc79c5b93c29da00f9809fe3c49e0e7e35af0fe6
Author: Thibault Saunier <tsaunier gnome org>
Date: Thu Aug 17 13:54:38 2017 -0300
previewers: be more conservative about loading pickled waveforms
Going though the same PreviewerGeneratorManager as when needing to launch
a pipeline.
It is an expensive and can lead to pipeline startup being slowed down
by many seconds on big timeline.
Reviewed-by: Alex Băluț <<alexandru balut gmail com>>
Differential Revision: https://phabricator.freedesktop.org/D1846
pitivi/timeline/elements.py | 1 -
pitivi/timeline/previewers.py | 17 ++++++++++-------
2 files changed, 10 insertions(+), 8 deletions(-)
---
diff --git a/pitivi/timeline/elements.py b/pitivi/timeline/elements.py
index 25c2c4a..5da5c92 100644
--- a/pitivi/timeline/elements.py
+++ b/pitivi/timeline/elements.py
@@ -801,7 +801,6 @@ class AudioUriSource(TimelineElement):
def _getPreviewer(self):
previewer = AudioPreviewer(self._ges_elem)
previewer.get_style_context().add_class("AudioUriSource")
- previewer.startLevelsDiscoveryWhenIdle()
return previewer
diff --git a/pitivi/timeline/previewers.py b/pitivi/timeline/previewers.py
index 02e8893..edf2574 100644
--- a/pitivi/timeline/previewers.py
+++ b/pitivi/timeline/previewers.py
@@ -912,6 +912,7 @@ class AudioPreviewer(Previewer, Zoomable, Loggable):
self.ges_elem.connect("notify::in-point", self._inpoint_changed_cb)
self.connect("notify::height-request", self._height_changed_cb)
+ self.becomeControlled()
def _inpoint_changed_cb(self, unused_b_element, unused_value):
self._force_redraw = True
@@ -919,12 +920,6 @@ class AudioPreviewer(Previewer, Zoomable, Loggable):
def _height_changed_cb(self, unused_widget, unused_param_spec):
self._force_redraw = True
- def startLevelsDiscoveryWhenIdle(self):
- """Starts processing waveform (whenever possible)."""
- self.debug('Waiting for UI to become idle for: %s',
- path_from_uri(self._uri))
- GLib.idle_add(self._startLevelsDiscovery, priority=GLib.PRIORITY_LOW)
-
def _startLevelsDiscovery(self):
filename = get_wavefile_location_for_uri(self._uri)
@@ -962,7 +957,6 @@ class AudioPreviewer(Previewer, Zoomable, Loggable):
asset = self.ges_elem.get_parent().get_asset()
self.n_samples = asset.get_duration() / SAMPLE_DURATION
bus.connect("message", self._busMessageCb)
- self.becomeControlled()
def zoomChanged(self):
self._force_redraw = True
@@ -1053,7 +1047,16 @@ class AudioPreviewer(Previewer, Zoomable, Loggable):
context.set_source_surface(self.surface, self._surface_x, 0)
context.paint()
+ def _emit_done_on_idle(self):
+ self.emit("done")
+
def startGeneration(self):
+ self._startLevelsDiscovery()
+ if not self.pipeline:
+ # No need to generate as we loaded pre-generated .wave file.
+ GLib.idle_add(self._emit_done_on_idle, priority=GLib.PRIORITY_LOW)
+ return
+
self.pipeline.set_state(Gst.State.PLAYING)
if self.adapter is not None:
self.adapter.start()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]