Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGonzalo Odiard <godiard@gmail.com>2012-08-27 19:57:31 (GMT)
committer Gonzalo Odiard <godiard@gmail.com>2012-08-27 19:57:31 (GMT)
commitacf5b660d31064bda1f654579a8ca274c792e8fb (patch)
tree44d6ef36f61a4dbb1674bf4345eb241831a758f3
parent6ead36275d5e2d5341616b26860f35b7fbf62204 (diff)
Stop the player when the user is reproducing a video and switch to another activity.
Signed-off-by: Manuel Kaufmann <humitos@gmail.com> Acked-by: Gonzalo Odiard <gonzalo@laptop.org>
-rw-r--r--jukeboxactivity.py20
1 files changed, 17 insertions, 3 deletions
diff --git a/jukeboxactivity.py b/jukeboxactivity.py
index bfbdb1a..ea1f95a 100644
--- a/jukeboxactivity.py
+++ b/jukeboxactivity.py
@@ -131,6 +131,11 @@ class JukeboxActivity(activity.Activity):
toolbar_box.show_all()
self.connect("key_press_event", self._key_press_event_cb)
+ # We want to be notified when the activity gets the focus or
+ # loses it. When it is not active, we don't need to keep
+ # reproducing the video
+ self.connect("notify::active", self._notify_active_cb)
+
if handle.uri:
pass
elif self._shared_activity:
@@ -155,7 +160,6 @@ class JukeboxActivity(activity.Activity):
self.playflag = False
self.tags = {}
self.only_audio = False
- self.got_stream_info = False
self.tag_reader = TagReader()
self.tag_reader.connect('get-tags', self.__get_tags_cb)
@@ -187,6 +191,17 @@ class JukeboxActivity(activity.Activity):
self.uri = handle.uri
gobject.idle_add(self._start, self.uri, handle.title)
+ def _notify_active_cb(self, widget, event):
+ """Sugar notify us that the activity is becoming active or inactive.
+ When we are inactive, we stop the player if it is reproducing
+ a video.
+ """
+ if self.player is not None and not self.only_audio:
+ if not self.player.is_playing() and self.props.active:
+ self.player.play()
+ if self.player.is_playing() and not self.props.active:
+ self.player.pause()
+
def _init_view_area(self):
"""
Use a notebook with two pages, one empty an another
@@ -339,7 +354,7 @@ class JukeboxActivity(activity.Activity):
self.tags[gst.TAG_ARTIST], album)
def _player_stream_info_cb(self, widget, stream_info):
- if not len(stream_info) or self.got_stream_info:
+ if not len(stream_info):
return
GST_STREAM_TYPE_UNKNOWN = 0
@@ -352,7 +367,6 @@ class JukeboxActivity(activity.Activity):
if item.props.type == GST_STREAM_TYPE_VIDEO:
only_audio = False
self.only_audio = only_audio
- self.got_stream_info = True
self._update_overlay()
def _joined_cb(self, activity):