Refactor common sanity checks for seek into base class and expect _seek from subclasses
This commit is contained in:
parent
e77bfef196
commit
acbb2bd7bf
@ -507,6 +507,18 @@ class BasePlaybackController(object):
|
|||||||
:param time_position: time position in milliseconds
|
:param time_position: time position in milliseconds
|
||||||
:type time_position: int
|
: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
|
raise NotImplementedError
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
|
|||||||
@ -71,17 +71,7 @@ class GStreamerPlaybackController(BasePlaybackController):
|
|||||||
def _resume(self):
|
def _resume(self):
|
||||||
return self._set_state(gst.STATE_PLAYING)
|
return self._set_state(gst.STATE_PLAYING)
|
||||||
|
|
||||||
# FIXME refactor to _seek ?
|
def _seek(self, time_position):
|
||||||
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
|
|
||||||
|
|
||||||
self._bin.seek_simple(gst.Format(gst.FORMAT_TIME),
|
self._bin.seek_simple(gst.Format(gst.FORMAT_TIME),
|
||||||
gst.SEEK_FLAG_FLUSH, time_position * gst.MSECOND)
|
gst.SEEK_FLAG_FLUSH, time_position * gst.MSECOND)
|
||||||
self._set_state(gst.STATE_PLAYING)
|
self._set_state(gst.STATE_PLAYING)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user