]> git.draconx.ca Git - upkg.git/blobdiff - src/engine/music.c
Implement dynamic loading of modules.
[upkg.git] / src / engine / music.c
similarity index 75%
rename from src/music.c
rename to src/engine/music.c
index 4c64a7b670b4b324d040fb4d731069fda6bd76c8..0c0cdf81be1253155ac15e6cd79299ece2d97278 100644 (file)
@@ -7,8 +7,8 @@
 #include "music.h"
 #include "upkg.h"
 
-#define U_MUSIC_GET_PRIV(o) \
-       G_TYPE_INSTANCE_GET_PRIVATE(o, U_MUSIC_TYPE, struct music_priv)
+#define MUSIC_GET_PRIV(o) \
+       G_TYPE_INSTANCE_GET_PRIVATE(o, ENGINE_MUSIC_TYPE, struct music_priv)
 
 struct music_priv {
        unsigned type;
@@ -20,17 +20,9 @@ struct music_priv {
        unsigned long nbuf;
 };
 
-static void serializable_init(UPkgSerializable *s);
-static void exportable_init(UPkgExportable *e);
-
-G_DEFINE_TYPE_WITH_CODE(UMusic, u_music, G_TYPE_OBJECT,
-       G_IMPLEMENT_INTERFACE(UPKG_TYPE_SERIALIZABLE, serializable_init)
-       G_IMPLEMENT_INTERFACE(UPKG_TYPE_EXPORTABLE, exportable_init)
-);
-
 static int export(GObject *o, FILE *f)
 {
-       struct music_priv *priv = U_MUSIC_GET_PRIV(o);
+       struct music_priv *priv = MUSIC_GET_PRIV(o);
        size_t left = priv->len, rc;
 
        unsigned char buf[1024];
@@ -52,7 +44,7 @@ static int export(GObject *o, FILE *f)
 
 static int export_name(GObject *o, char *buf, size_t n)
 {
-       struct music_priv *priv = U_MUSIC_GET_PRIV(o);
+       struct music_priv *priv = MUSIC_GET_PRIV(o);
 
        return snprintf(buf, n, "%s", priv->f->name);
 }
@@ -65,8 +57,8 @@ static void exportable_init(UPkgExportable *e)
 
 static int deserialize(GObject *o, struct upkg_file *f)
 {
-       struct music_priv *priv = U_MUSIC_GET_PRIV(o);
-       UMusic *m = U_MUSIC(o);
+       struct music_priv *priv = MUSIC_GET_PRIV(o);
+       EngineMusic *m = ENGINE_MUSIC(o);
        long size;
 
        size_t rc;
@@ -107,11 +99,25 @@ static void serializable_init(UPkgSerializable *s)
        s->deserialize = deserialize;
 }
 
-static void u_music_init(UMusic *o)
+static void engine_music_init(EngineMusic *m)
 {
 }
 
-static void u_music_class_init(UMusicClass *class)
+static void engine_music_class_init(EngineMusicClass *class)
 {
        g_type_class_add_private(class, sizeof (struct music_priv));
 }
+
+static void engine_music_class_finalize(EngineMusicClass *class)
+{
+}
+
+G_DEFINE_DYNAMIC_TYPE_EXTENDED(EngineMusic, engine_music, G_TYPE_OBJECT, 0,
+       G_IMPLEMENT_INTERFACE(UPKG_TYPE_SERIALIZABLE, serializable_init)
+       G_IMPLEMENT_INTERFACE(UPKG_TYPE_EXPORTABLE, exportable_init)
+);
+
+void music_register(GTypeModule *m)
+{
+       engine_music_register_type(m);
+}