Mercurial > hg > xmms-sid
comparison src/xs_sidplay2.cpp @ 958:828dce1195e6
Oops, fix issues caused by previous changesets.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 20 Nov 2012 22:34:33 +0200 |
parents | 0e60e5d56fdd |
children | be2a8436461a |
comparison
equal
deleted
inserted
replaced
957:0e60e5d56fdd | 958:828dce1195e6 |
---|---|
99 | 99 |
100 /* Initialize SIDPlay2 | 100 /* Initialize SIDPlay2 |
101 */ | 101 */ |
102 gboolean xs_sidplay2_init(XSEngineState * state) | 102 gboolean xs_sidplay2_init(XSEngineState * state) |
103 { | 103 { |
104 | 104 (void) state; |
105 | |
106 return TRUE; | 105 return TRUE; |
107 } | 106 } |
108 | 107 |
109 | 108 |
110 /* Close SIDPlay2 engine | 109 /* Close SIDPlay2 engine |
111 */ | 110 */ |
112 void xs_sidplay2_close(XSEngineState * state) | 111 void xs_sidplay2_close(XSEngineState * state) |
113 { | 112 { |
114 XSSIDPlay2 *engine = (XSSIDPlay2 *) state->internal; | |
115 | |
116 XSDEBUG("SIDPlay2 backend shutdown.\n"); | 113 XSDEBUG("SIDPlay2 backend shutdown.\n"); |
117 | 114 |
118 xs_sidplay2_delete(state); | 115 xs_sidplay2_delete(state); |
119 } | 116 } |
120 | 117 |
325 { | 322 { |
326 ReSIDBuilder *rs = new ReSIDBuilder("ReSID builder"); | 323 ReSIDBuilder *rs = new ReSIDBuilder("ReSID builder"); |
327 if (rs) | 324 if (rs) |
328 { | 325 { |
329 engine->config.sidEmulation = rs; | 326 engine->config.sidEmulation = rs; |
330 if (!*rs) return FALSE; | 327 if (!*rs) goto error; |
331 rs->create((engine->emu.info()).maxsids); | 328 rs->create((engine->emu.info()).maxsids); |
332 if (!*rs) return FALSE; | 329 if (!*rs) goto error; |
333 } | 330 } |
334 } | 331 } |
335 break; | 332 break; |
336 #endif | 333 #endif |
337 | 334 |
344 { | 341 { |
345 hs->create((engine->emu.info()).maxsids); | 342 hs->create((engine->emu.info()).maxsids); |
346 if (!*hs) | 343 if (!*hs) |
347 { | 344 { |
348 xs_error("hardSID->create() failed.\n"); | 345 xs_error("hardSID->create() failed.\n"); |
349 return FALSE; | 346 goto error; |
350 } | 347 } |
351 } | 348 } |
352 } | 349 } |
353 break; | 350 break; |
354 #endif | 351 #endif |
355 | 352 |
356 default: | 353 default: |
357 xs_error("[SIDPlay2] Invalid or unsupported builder selected.\n"); | 354 xs_error("[SIDPlay2] Invalid or unsupported builder selected.\n"); |
358 return FALSE; | 355 goto error; |
359 } | 356 } |
360 | 357 |
361 if (!engine->config.sidEmulation) | 358 if (!engine->config.sidEmulation) |
362 { | 359 { |
363 xs_error("[SIDPlay2] Could not initialize SIDBuilder object.\n"); | 360 xs_error("[SIDPlay2] Could not initialize SIDBuilder object.\n"); |
364 return FALSE; | 361 goto error; |
365 } | 362 } |
366 | 363 |
367 XSDEBUG("%s\n", engine->config.sidEmulation->credits()); | 364 XSDEBUG("%s\n", engine->config.sidEmulation->credits()); |
368 | 365 |
369 | 366 |
376 xs_error("Could not load file '%s': %s\n", | 373 xs_error("Could not load file '%s': %s\n", |
377 filename, (engine->tune.getInfo()).statusString); | 374 filename, (engine->tune.getInfo()).statusString); |
378 goto error; | 375 goto error; |
379 } | 376 } |
380 | 377 |
381 res = TRUE; | 378 g_free(buf); |
379 return TRUE; | |
382 | 380 |
383 error: | 381 error: |
382 if (engine) | |
383 delete engine; | |
384 state->internal = NULL; | |
384 g_free(buf); | 385 g_free(buf); |
385 return res; | 386 return FALSE; |
386 } | 387 } |
387 | 388 |
388 | 389 |
389 /* Delete INTERNAL information | 390 /* Delete INTERNAL information |
390 */ | 391 */ |