changeset 820:778531e968ed

Clean up tune loading.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 07 Nov 2012 16:08:40 +0200
parents ab3216b1b582
children dea579b6c3b3
files src/xs_sidplay.h src/xs_sidplay2.cc
diffstat 2 files changed, 21 insertions(+), 42 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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;
-    }
 }