From cadbea03bbd7f0d4a3b9a33d7659a8ac9e1ceda3 Mon Sep 17 00:00:00 2001 From: Enrico Zini Date: Sun, 14 Mar 2010 17:40:04 +0100 Subject: [PATCH] Implement looping --- src/audio.vala | 21 +++++++++++++++++++-- src/zavai.vala | 6 +++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/audio.vala b/src/audio.vala index e6dba62..6352974 100644 --- a/src/audio.vala +++ b/src/audio.vala @@ -112,6 +112,8 @@ public class Player: zavai.Resource, Object protected bool playing; protected Player slave; protected Player master; + protected bool loop; + protected string uri; public Player() { @@ -119,6 +121,7 @@ public class Player: zavai.Resource, Object master = null; player = Gst.ElementFactory.make("playbin", null); playing = false; + loop = false; var bus = player.get_bus(); bus.add_signal_watch(); bus.message += on_message; @@ -130,14 +133,17 @@ public class Player: zavai.Resource, Object slave.master = this; } - public void play(string uri) + public void play(string uri, bool loop = false) { + this.uri = uri; + if (slave != null && slave.playing) slave.pause(); player.set_property("uri", uri); player.set_state(master != null && master.playing ? Gst.State.PAUSED : Gst.State.PLAYING); playing = true; + this.loop = loop; } public void pause() @@ -150,6 +156,12 @@ public class Player: zavai.Resource, Object player.set_state(Gst.State.PLAYING); } + public void restart() + { + player.seek_simple(Gst.Format.TIME, Gst.SeekFlags.FLUSH | Gst.SeekFlags.KEY_UNIT, 0); + player.set_state(Gst.State.PLAYING); + } + public void stop() { playing = false; @@ -163,7 +175,12 @@ public class Player: zavai.Resource, Object protected void on_message(Gst.Message message) { if (message.type == Gst.MessageType.EOS) - stop(); + { + if (loop) + restart(); + else + stop(); + } } public void shutdown() diff --git a/src/zavai.vala b/src/zavai.vala index dff1e42..1e0a646 100644 --- a/src/zavai.vala +++ b/src/zavai.vala @@ -178,7 +178,11 @@ static int main (string[] args) { zavai.audio.musicplayer.play("file://" + args[2]); Timeout.add(3 * 1000, () => { - zavai.audio.soundplayer.play("file:///backup/ciapino/src/openmoocow/data/moo.wav"); + zavai.audio.soundplayer.play("file:///backup/ciapino/src/openmoocow/data/moo.wav", true); + Timeout.add(4 * 1000, () => { + zavai.audio.soundplayer.stop(); + return false; + }); return false; }); } -- 2.39.5