Mercurial > hg > xmms-sid
comparison src/xmms-sid.c @ 787:8f0d11865742
Move some code around, remove xs_player.c
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 06 Nov 2012 15:04:46 +0200 |
parents | cf644ac89b54 |
children | 3012740d014c |
comparison
equal
deleted
inserted
replaced
786:0f8723dabc78 | 787:8f0d11865742 |
---|---|
39 #include "xs_glade.h" | 39 #include "xs_glade.h" |
40 #include "xs_player.h" | 40 #include "xs_player.h" |
41 #include "xs_slsup.h" | 41 #include "xs_slsup.h" |
42 | 42 |
43 | 43 |
44 /* | 44 /* List of emulator engines |
45 * Global variables | 45 */ |
46 #ifdef HAVE_SIDPLAY1 | |
47 #include "xs_sidplay1.h" | |
48 #endif | |
49 #ifdef HAVE_SIDPLAY2 | |
50 #include "xs_sidplay2.h" | |
51 #endif | |
52 | |
53 static XSEngine xs_enginelist[] = | |
54 { | |
55 #ifdef HAVE_SIDPLAY1 | |
56 { | |
57 XS_ENG_SIDPLAY1, | |
58 xs_sidplay1_probe, | |
59 xs_sidplay1_init, xs_sidplay1_close, | |
60 xs_sidplay1_initsong, xs_sidplay1_fillbuffer, | |
61 xs_sidplay1_load, xs_sidplay1_delete, | |
62 xs_sidplay1_getinfo, xs_sidplay1_updateinfo, | |
63 NULL | |
64 }, | |
65 #endif | |
66 #ifdef HAVE_SIDPLAY2 | |
67 { | |
68 XS_ENG_SIDPLAY2, | |
69 xs_sidplay2_probe, | |
70 xs_sidplay2_init, xs_sidplay2_close, | |
71 xs_sidplay2_initsong, xs_sidplay2_fillbuffer, | |
72 xs_sidplay2_load, xs_sidplay2_delete, | |
73 xs_sidplay2_getinfo, xs_sidplay2_updateinfo, | |
74 xs_sidplay2_flush | |
75 }, | |
76 #endif | |
77 }; | |
78 | |
79 static const gint xs_nenginelist = sizeof(xs_enginelist) / sizeof(xs_enginelist[0]); | |
80 | |
81 | |
82 /* Global variables | |
46 */ | 83 */ |
47 XSEngineState xs_status; | 84 XSEngineState xs_status; |
48 XS_MUTEX(xs_status); | 85 XS_MUTEX(xs_status); |
49 static XS_THREAD_T xs_decode_thread; | 86 static XS_THREAD_T xs_decode_thread; |
50 | 87 |
54 | 91 |
55 void xs_subctrl_close(void); | 92 void xs_subctrl_close(void); |
56 void xs_subctrl_update(void); | 93 void xs_subctrl_update(void); |
57 | 94 |
58 | 95 |
59 /* | 96 /* Error messages |
60 * Error messages | |
61 */ | 97 */ |
62 void xs_error(const char *fmt, ...) | 98 void xs_error(const char *fmt, ...) |
63 { | 99 { |
64 va_list ap; | 100 va_list ap; |
65 fprintf(stderr, "XMMS-SID: "); | 101 fprintf(stderr, "XMMS-SID: "); |
85 /* | 121 /* |
86 * Initialization functions | 122 * Initialization functions |
87 */ | 123 */ |
88 void xs_reinit(void) | 124 void xs_reinit(void) |
89 { | 125 { |
126 gint engine; | |
127 gboolean initialized = FALSE; | |
128 | |
90 /* Stop playing, if we are */ | 129 /* Stop playing, if we are */ |
91 XS_MUTEX_LOCK(xs_status); | 130 XS_MUTEX_LOCK(xs_status); |
92 if (xs_status.isPlaying) { | 131 if (xs_status.isPlaying) { |
93 XS_MUTEX_UNLOCK(xs_status); | 132 XS_MUTEX_UNLOCK(xs_status); |
94 xs_stop(); | 133 xs_stop(); |
109 xs_status.audioBitsPerSample = xs_cfg.audioBitsPerSample; | 148 xs_status.audioBitsPerSample = xs_cfg.audioBitsPerSample; |
110 xs_status.audioChannels = xs_cfg.audioChannels; | 149 xs_status.audioChannels = xs_cfg.audioChannels; |
111 xs_status.audioFormat = -1; | 150 xs_status.audioFormat = -1; |
112 | 151 |
113 /* Try to initialize emulator engine */ | 152 /* Try to initialize emulator engine */ |
114 if (!xs_init_emu_engine(&xs_cfg.playerEngine, &xs_status)) | 153 XSDEBUG("initializing emulator engine #%i...\n", xs_cfg.playerEngine); |
115 xs_error("Could not initialize any emulator engine!\n"); | 154 |
155 for (engine = 0; engine < xs_nenginelist && !initialized; engine++) | |
156 { | |
157 if (xs_enginelist[engine].plrIdent == xs_cfg.playerEngine && | |
158 xs_enginelist[engine].plrInit(&xs_status)) | |
159 { | |
160 initialized = TRUE; | |
161 xs_status.engine = &xs_enginelist[engine]; | |
162 } | |
163 } | |
164 | |
165 XSDEBUG("init#1: %s, %i\n", initialized ? "OK" : "FAILED", xs_cfg.playerEngine); | |
116 | 166 |
117 /* Get settings back, in case the chosen emulator backend changed them */ | 167 /* Get settings back, in case the chosen emulator backend changed them */ |
118 xs_cfg.audioFrequency = xs_status.audioFrequency; | 168 xs_cfg.audioFrequency = xs_status.audioFrequency; |
119 xs_cfg.audioBitsPerSample = xs_status.audioBitsPerSample; | 169 xs_cfg.audioBitsPerSample = xs_status.audioBitsPerSample; |
120 xs_cfg.audioChannels = xs_status.audioChannels; | 170 xs_cfg.audioChannels = xs_status.audioChannels; |