X-Git-Url: https://git.draconx.ca/gitweb/upkg.git/blobdiff_plain/291e78f75bc8cc49c7191e4d69ad5843dc810ddd..3d673858df99c9ff1a10eb14ca57f8447923b094:/src/engine/music.c diff --git a/src/engine/music.c b/src/engine/music.c index 565a6a0..8c17f9d 100644 --- a/src/engine/music.c +++ b/src/engine/music.c @@ -2,9 +2,9 @@ * upkg: tool for manipulating Unreal Tournament packages. * Copyright (C) 2009 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,8 +13,7 @@ * 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 @@ -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); @@ -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; }