]> git.draconx.ca Git - upkg.git/blobdiff - src/engine/music.c
uobject: Don't access upkg_file's pkg member.
[upkg.git] / src / engine / music.c
index ae2db1e13eb744287ab08203ead5549959b9c2f8..4295a6631d97d0e68c2cfb34e1a46c54c0971dea 100644 (file)
@@ -31,7 +31,6 @@
        G_TYPE_INSTANCE_GET_PRIVATE(o, ENGINE_MUSIC_TYPE, struct music_priv)
 
 struct music_priv {
-       struct upkg_file *f;
        struct music_mod *mod;
        unsigned loaded;
 };
@@ -47,15 +46,16 @@ G_DEFINE_DYNAMIC_TYPE_EXTENDED(EngineMusic, engine_music, U_OBJECT_TYPE, 0,
 static int load(GObject *o)
 {
        struct music_priv *priv = MUSIC_GET_PRIV(o);
+       struct upkg_file *f = U_OBJECT(o)->pkg_file;
 
        if (!priv->loaded) {
-               g_return_val_if_fail(priv->f != NULL, -1);
+               g_return_val_if_fail(f != NULL, -1);
 
-               if (upkg_export_seek(priv->f, 0, SEEK_SET) != 0) {
+               if (upkg_export_seek(f, 0, SEEK_SET) != 0) {
                        return -1;
                }
 
-               priv->mod = music_mod_open(priv->f);
+               priv->mod = music_mod_open(f);
                if (!priv->mod) {
                        return -1;
                }
@@ -102,7 +102,7 @@ static int export_name(GObject *o, char *buf, size_t n)
        }
 
        type = music_mod_type(priv->mod);
-       rc = snprintf(buf, n, "%s.%s", priv->f->name, type);
+       rc = snprintf(buf, n, "%s.%s", U_OBJECT(o)->pkg_file->name, type);
 
        unload(o);
 
@@ -121,14 +121,15 @@ static void loadable_init(UObjectLoadable *l)
        l->unload = unload;
 }
 
-static int deserialize(UObject *o, struct upkg_file *f)
+static int deserialize(UObject *uo)
 {
-       struct music_priv *priv = MUSIC_GET_PRIV(o);
+       struct music_priv *priv = MUSIC_GET_PRIV(uo);
+       struct upkg_file *f = uo->pkg_file;
        size_t rc, pos = 0, buflen;
        unsigned char buf[32];
        long size;
 
-       U_OBJECT_CLASS(engine_music_parent_class)->deserialize(o, f);
+       U_OBJECT_CLASS(engine_music_parent_class)->deserialize(uo);
 
        buflen = upkg_export_read(f, buf, sizeof buf);
 
@@ -137,7 +138,7 @@ static int deserialize(UObject *o, struct upkg_file *f)
                return -1;
        pos += 1;
 
-       if (f->pkg->version > 61) {
+       if (uo->pkg->version > 61) {
                /* Random field #2 */
                if (buflen - pos < 4)
                        return -1;
@@ -152,7 +153,6 @@ static int deserialize(UObject *o, struct upkg_file *f)
        f->base += pos;
        f->len   = size;
        upkg_export_seek(f, 0, SEEK_SET);
-       priv->f = f;
 
        return 0;
 }