|
@@ -56,24 +56,6 @@
|
|
|
#define DEFAULT_CPARAMS_FRAGS_MIN 1
|
|
|
#define DEFAULT_CPARAMS_FRAGS_MAX 1
|
|
|
|
|
|
-#define QSA_NO_WORKAROUNDS 0x00000000
|
|
|
-#define QSA_MMAP_WORKAROUND 0x00000001
|
|
|
-
|
|
|
-struct BuggyCards
|
|
|
-{
|
|
|
- char *cardname;
|
|
|
- unsigned long bugtype;
|
|
|
-};
|
|
|
-
|
|
|
-#define QSA_WA_CARDS 3
|
|
|
-#define QSA_MAX_CARD_NAME_LENGTH 33
|
|
|
-
|
|
|
-struct BuggyCards buggycards[QSA_WA_CARDS] = {
|
|
|
- {"Sound Blaster Live!", QSA_MMAP_WORKAROUND},
|
|
|
- {"Vortex 8820", QSA_MMAP_WORKAROUND},
|
|
|
- {"Vortex 8830", QSA_MMAP_WORKAROUND},
|
|
|
-};
|
|
|
-
|
|
|
/* List of found devices */
|
|
|
#define QSA_MAX_DEVICES 32
|
|
|
#define QSA_MAX_NAME_LENGTH 81+16 /* Hardcoded in QSA, can't be changed */
|
|
@@ -97,40 +79,16 @@ QSA_SetError(const char *fn, int status)
|
|
|
return SDL_SetError("QSA: %s() failed: %s", fn, snd_strerror(status));
|
|
|
}
|
|
|
|
|
|
-/* card names check to apply the workarounds */
|
|
|
-static int
|
|
|
-QSA_CheckBuggyCards(_THIS, unsigned long checkfor)
|
|
|
-{
|
|
|
- char scardname[QSA_MAX_CARD_NAME_LENGTH];
|
|
|
- int it;
|
|
|
-
|
|
|
- if (snd_card_get_name
|
|
|
- (this->hidden->cardno, scardname, QSA_MAX_CARD_NAME_LENGTH - 1) < 0) {
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
- for (it = 0; it < QSA_WA_CARDS; it++) {
|
|
|
- if (SDL_strcmp(buggycards[it].cardname, scardname) == 0) {
|
|
|
- if (buggycards[it].bugtype == checkfor) {
|
|
|
- return 1;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
/* !!! FIXME: does this need to be here? Does the SDL version not work? */
|
|
|
static void
|
|
|
QSA_ThreadInit(_THIS)
|
|
|
{
|
|
|
- struct sched_param param;
|
|
|
- int status;
|
|
|
-
|
|
|
/* Increase default 10 priority to 25 to avoid jerky sound */
|
|
|
- status = SchedGet(0, 0, ¶m);
|
|
|
- param.sched_priority = param.sched_curpriority + 15;
|
|
|
- status = SchedSet(0, 0, SCHED_NOCHANGE, ¶m);
|
|
|
+ struct sched_param param;
|
|
|
+ if (SchedGet(0, 0, ¶m) != -1) {
|
|
|
+ param.sched_priority = param.sched_curpriority + 15;
|
|
|
+ SchedSet(0, 0, SCHED_NOCHANGE, ¶m);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/* PCM channel parameters initialize function */
|
|
@@ -385,18 +343,6 @@ QSA_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
|
|
|
return QSA_SetError("snd_pcm_open", status);
|
|
|
}
|
|
|
|
|
|
-#if 0
|
|
|
- if (!QSA_CheckBuggyCards(this, QSA_MMAP_WORKAROUND)) {
|
|
|
- /* Disable QSA MMAP plugin for buggy audio drivers */
|
|
|
- status =
|
|
|
- snd_pcm_plugin_set_disable(this->hidden->audio_handle,
|
|
|
- PLUGIN_DISABLE_MMAP);
|
|
|
- if (status < 0) {
|
|
|
- return QSA_SetError("snd_pcm_plugin_set_disable", status);
|
|
|
- }
|
|
|
- }
|
|
|
-#endif
|
|
|
-
|
|
|
/* Try for a closest match on audio format */
|
|
|
format = 0;
|
|
|
/* can't use format as SND_PCM_SFMT_U8 = 0 in qsa */
|
|
@@ -723,8 +669,6 @@ QSA_Deinitialize(void)
|
|
|
static int
|
|
|
QSA_Init(SDL_AudioDriverImpl * impl)
|
|
|
{
|
|
|
- snd_pcm_t *handle = NULL;
|
|
|
-
|
|
|
/* Clear devices array */
|
|
|
SDL_zero(qsa_playback_device);
|
|
|
SDL_zero(qsa_capture_device);
|