Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@member.fsf.org>2010-04-03 20:52:37 (GMT)
committer Aleksey Lim <alsroot@member.fsf.org>2010-04-03 20:52:37 (GMT)
commitdc080fefa45047af7401cf2a2a9c7c24dea3e57d (patch)
tree773ba4dfc7e3d4a31c3eb179e2a9f8f3cbf04422
parente93a2bc44827060e1b9608770c8b42a0b2d7bfe3 (diff)
Synchronize shutter
-rw-r--r--aplay.py28
-rw-r--r--ui.py10
2 files changed, 22 insertions, 16 deletions
diff --git a/aplay.py b/aplay.py
index 596d880..c9aa811 100644
--- a/aplay.py
+++ b/aplay.py
@@ -17,23 +17,31 @@ import gst
import logging
logger = logging.getLogger('record:aplay.py')
-def play(file):
+def play(file, done_cb=None):
player.set_state(gst.STATE_NULL)
- player.props.uri = 'file://' + file
- player.set_state(gst.STATE_PLAYING)
-def _gstmessage_cb(bus, message):
- if message.type == gst.MESSAGE_EOS:
+ def eos_cb(bus, message):
+ bus.disconnect_by_func(eos_cb)
player.set_state(gst.STATE_NULL)
- elif message.type == gst.MESSAGE_ERROR:
+ if done_cb is not None:
+ done_cb()
+
+ def error_cb(bus, message):
err, debug = message.parse_error()
logger.error('play_pipe: %s %s' % (err, debug))
player.set_state(gst.STATE_NULL)
+ if done_cb is not None:
+ done_cb()
+
+ bus = player.get_bus()
+ bus.connect('message::eos', eos_cb)
+ bus.connect('message::error', error_cb)
+
+ player.props.uri = 'file://' + file
+ player.set_state(gst.STATE_PLAYING)
+
player = gst.element_factory_make('playbin')
fakesink = gst.element_factory_make('fakesink')
player.set_property("video-sink", fakesink)
-
-bus = player.get_bus()
-bus.add_signal_watch()
-bus.connect('message', _gstmessage_cb)
+player.get_bus().add_signal_watch()
diff --git a/ui.py b/ui.py
index 6ab9373..215cc58 100644
--- a/ui.py
+++ b/ui.py
@@ -1345,13 +1345,11 @@ class UI:
def clickShutter( self ):
- if (not self.ca.m.RECORDING):
- aplay.play(Constants.soundClick)
-
- wasRec = self.ca.m.RECORDING
- self.ca.m.doShutter()
- if (wasRec):
+ if self.ca.m.RECORDING:
+ self.ca.m.doShutter()
aplay.play(Constants.soundClick)
+ else:
+ aplay.play(Constants.soundClick, self.ca.m.doShutter)
def updateVideoComponents( self ):