summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/audio/audio.vala14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/audio/audio.vala b/src/audio/audio.vala
index 76e01b3..9afb840 100644
--- a/src/audio/audio.vala
+++ b/src/audio/audio.vala
@@ -15,7 +15,7 @@
[DBus (name = "io.mainframe.shopsystem.AudioPlayer")]
public class AudioPlayerImplementation {
- private dynamic Gst.Element p;
+ private dynamic Gst.Element? p;
string path;
public signal void end_of_stream();
@@ -30,18 +30,24 @@ public class AudioPlayerImplementation {
return true;
}
- public AudioPlayerImplementation(string path) {
+ public AudioPlayerImplementation(string path) throws IOError {
this.path = path;
var alsa = Gst.ElementFactory.make("alsasink", "alsa");
- p = Gst.ElementFactory.make("playbin2", "play");
+ if (alsa == null)
+ throw new GLib.IOError.FAILED("Cannot find alsa GStreamer plugin");
+
+ p = Gst.ElementFactory.make("playbin", "player");
+ if (p == null)
+ throw new GLib.IOError.FAILED("Cannot find playbin2 GStreamer plugin");
+
p.set("audio-sink", alsa);
p.get_bus().add_watch(Priority.DEFAULT, bus_callback);
}
public void play_system(string file) {
p.set_state(Gst.State.NULL);
- p.uri = "file://" + path + "system/"+file;
+ p.uri = "file://" + path + "system/" + file;
p.set_state(Gst.State.PLAYING);
}