# HG changeset patch # User Matti Hamalainen # Date 1352297320 -7200 # Node ID 778531e968ed78ce83e5f07129b117d67733c462 # Parent ab3216b1b582255b7ab43edc9bc2dd51c3c05b3b Clean up tune loading. diff -r ab3216b1b582 -r 778531e968ed src/xs_sidplay.h --- a/src/xs_sidplay.h Wed Nov 07 15:26:45 2012 +0200 +++ b/src/xs_sidplay.h Wed Nov 07 16:08:40 2012 +0200 @@ -92,7 +92,6 @@ gboolean TFUNCTION2(XSEngineState *state) { TTUNEINFO info; - TTUNE *tune; TENGINE *engine; /* Check if we have required structures initialized */ @@ -100,16 +99,15 @@ return FALSE; engine = (TENGINE *) state->internal; - tune = engine->tune; - if (!tune) + if (!(engine->tune)) return FALSE; /* Get currently playing tune information */ #ifdef XS_SIDPLAY1_H - tune->getInfo(info); + engine->tune->getInfo(info); #endif #ifdef XS_SIDPLAY2_H - info = tune->getInfo(); + info = engine->tune.getInfo(); #endif /* NOTICE! Here we assume that libSIDPlay[12] headers define diff -r ab3216b1b582 -r 778531e968ed src/xs_sidplay2.cc --- a/src/xs_sidplay2.cc Wed Nov 07 15:26:45 2012 +0200 +++ b/src/xs_sidplay2.cc Wed Nov 07 16:08:40 2012 +0200 @@ -51,8 +51,7 @@ public: sidplay2 emu; sid2_config_t config; - SidTune *tune; - gboolean tuneLoaded; + SidTune tune; XSSIDPlay2(void); virtual ~XSSIDPlay2(void); @@ -77,22 +76,14 @@ #endif -XSSIDPlay2::XSSIDPlay2(void) +XSSIDPlay2::XSSIDPlay2(void) : tune(0) { - tune = NULL; - tuneLoaded = FALSE; } XSSIDPlay2::~XSSIDPlay2(void) { - if (tuneLoaded) - emu.load(0); - - if (tune) - delete tune; - - tuneLoaded = FALSE; + emu.load(NULL); } @@ -421,9 +412,15 @@ if (!engine) return FALSE; - if (!engine->tune->selectSong(state->currSong)) + if (!engine->tune.selectSong(state->currSong)) { - xs_error("[SIDPlay2] tune->selectSong() failed\n"); + xs_error("[SIDPlay2] tune.selectSong() failed\n"); + return FALSE; + } + + if (engine->emu.load(&(engine->tune)) < 0) + { + xs_error("[SIDPlay2] emu.load() failed\n"); return FALSE; } @@ -433,13 +430,6 @@ return FALSE; } - engine->tuneLoaded = TRUE; - if (engine->emu.load(engine->tune) < 0) - { - xs_error("[SIDPlay2] emu.load() failed\n"); - return FALSE; - } - return TRUE; } @@ -474,14 +464,17 @@ { XSSIDPlay2 *engine = (XSSIDPlay2 *) state->internal; - if (!engine) + if (!engine || !filename) return FALSE; - if (!(engine->tune = new SidTune(filename))) + engine->tune.load(filename); + if (!engine->tune) + { + xs_error("Could not load file '%s': %s\n", + filename, (engine->tune.getInfo()).statusString); return FALSE; + } - engine->tuneLoaded = FALSE; - return TRUE; } @@ -491,18 +484,6 @@ void xs_sidplay2_delete(XSEngineState * state) { XSSIDPlay2 *engine = (XSSIDPlay2 *) state->internal; - - if (engine) - { - if (engine->tuneLoaded) - { - engine->emu.load(0); - } - - delete engine->tune; - engine->tune = NULL; - engine->tuneLoaded = FALSE; - } }