From acbb2bd7bf7eaeba01294f3c81a97d646e143ee1 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Tue, 6 Apr 2010 21:40:29 +0200 Subject: [PATCH] Refactor common sanity checks for seek into base class and expect _seek from subclasses --- mopidy/backends/__init__.py | 12 ++++++++++++ mopidy/backends/gstreamer.py | 12 +----------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/mopidy/backends/__init__.py b/mopidy/backends/__init__.py index 1e4b0e94..cc47ea4e 100644 --- a/mopidy/backends/__init__.py +++ b/mopidy/backends/__init__.py @@ -507,6 +507,18 @@ class BasePlaybackController(object): :param time_position: time position in milliseconds :type time_position: int """ + if self.state == self.STOPPED: + self.play() + + if time_position < 0: + time_position = 0 + elif self.current_track and time_position > self.current_track.length: + self.next() + return + + self._seek(time_position) + + def _seek(self, time_position): raise NotImplementedError def stop(self): diff --git a/mopidy/backends/gstreamer.py b/mopidy/backends/gstreamer.py index 25947a6e..28776a5c 100644 --- a/mopidy/backends/gstreamer.py +++ b/mopidy/backends/gstreamer.py @@ -71,17 +71,7 @@ class GStreamerPlaybackController(BasePlaybackController): def _resume(self): return self._set_state(gst.STATE_PLAYING) - # FIXME refactor to _seek ? - def seek(self, time_position): - if self.state == self.STOPPED: - self.play() - - if time_position < 0: - time_position = 0 - elif self.current_track and time_position > self.current_track.length: - self.next() - return - + def _seek(self, time_position): self._bin.seek_simple(gst.Format(gst.FORMAT_TIME), gst.SEEK_FLAG_FLUSH, time_position * gst.MSECOND) self._set_state(gst.STATE_PLAYING)