X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fengine%2Fe_sound_sdl.inc;h=d8a1312669a7f7364b1807ae054fa9a9c7ef801f;hb=27be3c11b7c197efd13813735285e36f6c7c1485;hp=ccfd9c4bc2715732e3d746db9f45e1f02065ff9d;hpb=724d5405f0f3fe166b931b1b8b5745b2eb340651;p=d2df-sdl.git diff --git a/src/engine/e_sound_sdl.inc b/src/engine/e_sound_sdl.inc index ccfd9c4..d8a1312 100644 --- a/src/engine/e_sound_sdl.inc +++ b/src/engine/e_sound_sdl.inc @@ -16,8 +16,16 @@ interface uses {$IFDEF USE_MEMPOOL}mempool,{$ENDIF} - SDL2, SDL2_mixer, - e_log, SysUtils; + {$IFDEF USE_SDL} + SDL, SDL_mixer, + {$DEFINE SDL1MIXER} + {$UNDEF SDL2MIXER} + {$ELSE} + SDL2, SDL2_mixer, + {$UNDEF SDL1MIXER} + {$DEFINE SDL2MIXER} + {$ENDIF} + envvars, e_log, SysUtils; type TSoundRec = record @@ -172,6 +180,7 @@ var rfreq: Integer; rformat: UInt16; rchans: Integer; + flags: Integer; begin if SoundInitialized then begin Result := true; Exit end; @@ -181,23 +190,29 @@ begin {$IFDEF HEADLESS} // HACK: shit this into env and hope for the best SetEnvVar('SDL_AUDIODRIVER', 'dummy'); - {$ELSEIF} + {$ENDIF} if NoOutput then begin Result := true; Exit end; // wow, this is actually MIDI player! // we need module player - res := Mix_Init(MIX_INIT_FLAC or MIX_INIT_MOD or MIX_INIT_MODPLUG or MIX_INIT_MP3 or MIX_INIT_OGG or MIX_INIT_FLUIDSYNTH); + flags := MIX_INIT_FLAC or MIX_INIT_MOD or MIX_INIT_MP3 or MIX_INIT_OGG or MIX_INIT_FLUIDSYNTH; + {$IFDEF SDL2MIXER} + flags := flags or MIX_INIT_MODPLUG; + {$ENDIF} + res := Mix_Init(flags); e_WriteLog(Format('SDL: res=0x%x', [res]), TMsgType.Notify); if (res and MIX_INIT_FLAC) <> 0 then e_WriteLog('SDL: FLAC playback is active', TMsgType.Notify); if (res and MIX_INIT_MOD) <> 0 then e_WriteLog('SDL: MOD playback is active', TMsgType.Notify); - if (res and MIX_INIT_MODPLUG) <> 0 then e_WriteLog('SDL: MODPLUG playback is active', TMsgType.Notify); + {$IFDEF SDL2MIXER} + if (res and MIX_INIT_MODPLUG) <> 0 then e_WriteLog('SDL: MODPLUG playback is active', TMsgType.Notify); + {$ENDIF} if (res and MIX_INIT_MP3) <> 0 then e_WriteLog('SDL: MP3 playback is active', TMsgType.Notify); if (res and MIX_INIT_OGG) <> 0 then e_WriteLog('SDL: OGG playback is active', TMsgType.Notify); if (res and MIX_INIT_FLUIDSYNTH) <> 0 then e_WriteLog('SDL: FLUIDSYNTH playback is active', TMsgType.Notify); e_WriteLog(Format('SDL: initializing mixer at %d with buffer %d', [gsSDLSampleRate, gsSDLBufferSize]), TMsgType.Notify); - res := Mix_OpenAudio(gsSDLSampleRate, AUDIO_S16LSB, 2, gsSDLBufferSize); + res := Mix_OpenAudio(gsSDLSampleRate, MIX_DEFAULT_FORMAT, 2, gsSDLBufferSize); if res = -1 then begin e_WriteLog('Error initializing SDL mixer:', TMsgType.Fatal); @@ -382,7 +397,11 @@ begin if isMusic then begin e_WriteLog(Format(' MUSIC SLOT: %u', [find_id]), TMsgType.Notify); - e_SoundsArray[find_id].Music := Mix_LoadMUS_RW(rw, 0); + {$IFDEF SDL1MIXER} + e_SoundsArray[find_id].Music := Mix_LoadMUS_RW(rw); + {$ELSE} + e_SoundsArray[find_id].Music := Mix_LoadMUS_RW(rw, 0); + {$ENDIF} if e_SoundsArray[find_id].Music = nil then begin e_WriteLog(Format('ERROR LOADING MUSIC:', [find_id]), TMsgType.Warning);