summaryrefslogtreecommitdiff
path: root/src/librygel-server/rygel-media-engine.vala
diff options
context:
space:
mode:
Diffstat (limited to 'src/librygel-server/rygel-media-engine.vala')
-rw-r--r--src/librygel-server/rygel-media-engine.vala18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/librygel-server/rygel-media-engine.vala b/src/librygel-server/rygel-media-engine.vala
index 5bbe6c2d..7afc1160 100644
--- a/src/librygel-server/rygel-media-engine.vala
+++ b/src/librygel-server/rygel-media-engine.vala
@@ -43,6 +43,10 @@ public class Rygel.DLNAProfile {
}
}
+public errordomain Rygel.MediaEngineError {
+ NOT_FOUND
+}
+
/**
* Base class for the media engine that will contain knowledge about streaming
* and transcoding capabilites of the media library in use.
@@ -50,14 +54,24 @@ public class Rygel.DLNAProfile {
public abstract class Rygel.MediaEngine : GLib.Object {
private static MediaEngine instance;
+ public static void init () throws Error {
+ // lazy-load the engine plug-in
+ var loader = new EngineLoader ();
+ MediaEngine.instance = loader.load_engine ();
+ if (MediaEngine.instance == null) {
+ throw new MediaEngineError.NOT_FOUND
+ (_("No media engine found."));
+ }
+ }
+
/**
* Get the singleton instance of the currently used media engine.
*
- * @return An instance of a concreate #MediaEngine implementation.
+ * @return An instance of a concrete #MediaEngine implementation.
*/
public static MediaEngine get_default () {
if (instance == null) {
- instance = new GstMediaEngine ();
+ error (_("MediaEngine.init was not called. Cannot continue."));
}
return instance;