import gobject
import util.misc as misc_utils
-import stream
+try:
+ import stream as _stream
+ stream = _stream # Silence PyFlakes
+except ImportError:
+ import stream_gst as stream
import stream_index
import call_monitor
),
}
- STATE_PLAY = stream.GSTStream.STATE_PLAY
- STATE_PAUSE = stream.GSTStream.STATE_PAUSE
- STATE_STOP = stream.GSTStream.STATE_STOP
+ STATE_PLAY = stream.Stream.STATE_PLAY
+ STATE_PAUSE = stream.Stream.STATE_PAUSE
+ STATE_STOP = stream.Stream.STATE_STOP
def __init__(self, index):
gobject.GObject.__init__(self)
self._calls = call_monitor.CallMonitor()
self._calls.connect("call_start", self._on_call_start)
- self._stream = stream.GSTStream()
+ self._stream = stream.Stream()
self._stream.connect("state-change", self._on_stream_state)
self._stream.connect("eof", self._on_stream_eof)
self._stream.connect("error", self._on_stream_error)
self._calls.stop()
- def back(self):
+ def back(self, forcePlay = False):
_moduleLogger.info("back")
assert self._nextSearch is None
self._nextSearch = stream_index.AsyncWalker(stream_index.get_previous)
- self._nextSearch.start(self.node, self._on_next_node, self._on_node_search_error)
+ self._nextSearch.start(
+ self.node,
+ lambda node: self._on_next_node(node, forcePlay),
+ self._on_node_search_error
+ )
- def next(self):
+ def next(self, forcePlay = False):
_moduleLogger.info("next")
assert self._nextSearch is None
self._nextSearch = stream_index.AsyncWalker(stream_index.get_next)
- self._nextSearch.start(self.node, self._on_next_node, self._on_node_search_error)
+ self._nextSearch.start(
+ self.node,
+ lambda node: self._on_next_node(node, forcePlay),
+ self._on_node_search_error
+ )
def seek(self, percent):
target = percent * self._stream.duration
self.emit("title_change", self._node)
@misc_utils.log_exception(_moduleLogger)
- def _on_next_node(self, node):
+ def _on_next_node(self, node, forcePlay):
self._nextSearch = None
restart = self.state == self.STATE_PLAY
self._set_piece_by_node(node)
- if restart:
+ if restart or forcePlay:
self.play()
@misc_utils.log_exception(_moduleLogger)
@misc_utils.log_exception(_moduleLogger)
def _on_stream_eof(self, s, uri):
_moduleLogger.info("EOF %s" % uri)
- self.next()
+ self.next(forcePlay = True)
@misc_utils.log_exception(_moduleLogger)
def _on_stream_error(self, s, error, debug):