X-Git-Url: https://git.draconx.ca/gitweb/upkg.git/blobdiff_plain/37a77c2825545435cfb3093eae1995efd35c20ba..bb9c28745ae254b832805e5d41f2a5e6c3cb8f40:/src/engine/music.c
diff --git a/src/engine/music.c b/src/engine/music.c
index f64513e..eb209bb 100644
--- a/src/engine/music.c
+++ b/src/engine/music.c
@@ -1,10 +1,10 @@
/*
* upkg: tool for manipulating Unreal Tournament packages.
- * Copyright (C) 2009 Nick Bowler
+ * Copyright © 2009-2011 Nick Bowler
*
- * This program is free software; you can redistribute it and/or modify
+ * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
@@ -13,17 +13,16 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * along with this program. If not, see .
*/
#include
#include
#include
-#include "exportable.h"
-#include "loadable.h"
-#include "uobject.h"
+#include
+#include
+#include
#include "music-module.h"
#include "music.h"
#include "upkg.h"
@@ -32,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;
};
@@ -48,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;
}
@@ -103,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);
@@ -122,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);
@@ -138,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;
@@ -153,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;
}
@@ -177,6 +176,8 @@ static void engine_music_finalize(GObject *o)
priv->loaded = 1;
unload(o);
}
+
+ G_OBJECT_CLASS(engine_music_parent_class)->finalize(o);
}
static void engine_music_class_init(EngineMusicClass *class)