Stricter state trsnsition checks
[experiments/gstreamer.git] / gst-trick-mode-looping-2.py
index 03843c4..920677d 100755 (executable)
@@ -33,11 +33,13 @@ class Player:
         sys.stderr.write(".")
         player.set_property("uri", self._filename)
 
-        # XXX do I need to re-set the rate here?
+        # XXX Ater the first iteration of the loop the playback rate is
+        # reset to normal. Do I need to re-set the rate here?
+
         # If I uncomment the following line, the player hangs:
         #self.set_rate(self._date)
 
-        # And it even hangs if I set the seek_event manually using position=0:
+        # And it hangs also if I set the seek_event manually using position=0:
         #seek_event = gst.event_new_seek(self._rate,
         #        gst.FORMAT_TIME,
         #        gst.SEEK_FLAG_FLUSH | gst.SEEK_FLAG_ACCURATE,
@@ -52,7 +54,7 @@ class Player:
         print 'on_state_changed'
         old_state, new_state, pending = msg.parse_state_changed()
         print "%s -> %s" % (old_state, new_state)
-        if new_state == gst.STATE_PAUSED:
+        if old_state == gst.STATE_READY and new_state == gst.STATE_PAUSED:
             self.set_rate(self._rate)
 
     def set_rate(self, rate):