Fixing segfaults due to accessing seekbar after it is destroyed (plus an assertion)
authorEd Page <eopage@byu.net>
Sun, 16 May 2010 04:35:56 +0000 (23:35 -0500)
committerEd Page <eopage@byu.net>
Sun, 16 May 2010 04:35:56 +0000 (23:35 -0500)
src/mormonchannel_gtk.py
src/windows/conferences.py
src/windows/magazines.py
src/windows/scriptures.py

index 7c570cd..2445f95 100755 (executable)
@@ -2,7 +2,6 @@
 # -*- coding: utf-8 -*-
 
 """
-@bug Fix segfault on closing of window while playing
 @todo Need to confirm id's are persistent (not just for todos but broken behavior on transition)
        @todo Track recent
        @todo Persisted Pause
index 7e1c599..096959d 100644 (file)
@@ -288,8 +288,10 @@ class ConferenceTalkWindow(windows._base.BasicWindow):
 
        @misc_utils.log_exception(_moduleLogger)
        def _on_player_update_seek(self):
+               if self._isDestroyed:
+                       return False
                self._seekbar.set_value(self._player.percent_elapsed * 100)
-               return True if not self._isDestroyed else False
+               return True
 
        @misc_utils.log_exception(_moduleLogger)
        def _on_player_state_change(self, player, newState):
index 11c96d5..fa089d6 100644 (file)
@@ -341,8 +341,10 @@ class MagazineArticleWindow(windows._base.BasicWindow):
 
        @misc_utils.log_exception(_moduleLogger)
        def _on_player_update_seek(self):
+               if self._isDestroyed:
+                       return False
                self._seekbar.set_value(self._player.percent_elapsed * 100)
-               return True if not self._isDestroyed else False
+               return True
 
        @misc_utils.log_exception(_moduleLogger)
        def _on_player_state_change(self, player, newState):
@@ -353,8 +355,9 @@ class MagazineArticleWindow(windows._base.BasicWindow):
                        self._updateSeek.start(seconds=1)
                else:
                        self._seekbar.hide()
-                       self._updateSeek.cancel()
-                       self._updateSeek = None
+                       if self._updateSeek is not None:
+                               self._updateSeek.cancel()
+                               self._updateSeek = None
 
                if not self._presenterNavigation.is_active():
                        self._set_context(newState)
index 5847ad8..587e4e8 100644 (file)
@@ -282,8 +282,10 @@ class ScriptureChapterWindow(windows._base.BasicWindow):
 
        @misc_utils.log_exception(_moduleLogger)
        def _on_player_update_seek(self):
+               if self._isDestroyed:
+                       return False
                self._seekbar.set_value(self._player.percent_elapsed * 100)
-               return True if not self._isDestroyed else False
+               return True
 
        @misc_utils.log_exception(_moduleLogger)
        def _on_player_state_change(self, player, newState):