index 123db2c84975599d4e71bd124b1cee77371b1fb4..430735c7c6ae56761d2fdd5713a0665f9eed31a7 100644 (file)
+(* Copyright (C) DooM 2D:Forever Developers
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *)
interface
uses
const
NO_SOUND_ID = DWORD(-1);
-function e_InitSoundSystem(): Boolean;
+function e_InitSoundSystem(NoOutput: Boolean = False): Boolean;
function e_LoadSound(FileName: string; var ID: DWORD; bLoop: Boolean): Boolean;
function e_LoadSoundMem(pData: Pointer; Length: Integer; var ID: DWORD; bLoop: Boolean): Boolean;
end;
end;
-function e_TrySS (Freq: Integer; forceNoSound: Boolean): Boolean;
+function e_TrySS (Freq: Integer; forceNoSound: Integer): Boolean;
var
res: FMOD_RESULT;
ver: Cardinal;
Exit;
end;
- res := FMOD_System_Init(F_System, N_CHANNELS, FMOD_INIT_NORMAL, nil);
- if res <> FMOD_OK then
+ if forceNoSound = 2 then
begin
- e_WriteLog('Error initializing FMOD system!', MSG_WARNING);
- e_WriteLog(FMOD_ErrorString(res), MSG_WARNING);
-
- {$IFDEF LINUX}
- res := TryInitWithOutput(FMOD_OUTPUTTYPE_ALSA, 'OUTPUTTYPE_ALSA');
- if res <> FMOD_OK then
- res := TryInitWithOutput(FMOD_OUTPUTTYPE_OSS, 'OUTPUTTYPE_OSS');
- {$ENDIF}
- if (res <> FMOD_OK) and not forceNoSound then Exit;
- if res <> FMOD_OK then
- res := TryInitWithOutput(FMOD_OUTPUTTYPE_NOSOUND, 'OUTPUTTYPE_NOSOUND');
+ res := TryInitWithOutput(FMOD_OUTPUTTYPE_NOSOUND, 'OUTPUTTYPE_NOSOUND');
if res <> FMOD_OK then
begin
- e_WriteLog('FMOD: Giving up, can''t init any output.', MSG_FATALERROR);
+ e_WriteLog('FMOD: Giving up, can''t init with NOSOUND.', MSG_FATALERROR);
Exit;
end;
+ end
+ else
+ begin
+ res := FMOD_System_Init(F_System, N_CHANNELS, FMOD_INIT_NORMAL, nil);
+ if res <> FMOD_OK then
+ begin
+ e_WriteLog('Error initializing FMOD system!', MSG_WARNING);
+ e_WriteLog(FMOD_ErrorString(res), MSG_WARNING);
+
+ {$IFDEF LINUX}
+ res := TryInitWithOutput(FMOD_OUTPUTTYPE_ALSA, 'OUTPUTTYPE_ALSA');
+ if res <> FMOD_OK then
+ res := TryInitWithOutput(FMOD_OUTPUTTYPE_OSS, 'OUTPUTTYPE_OSS');
+ {$ENDIF}
+ if (res <> FMOD_OK) and (forceNoSound <> 1) then Exit;
+ if res <> FMOD_OK then
+ res := TryInitWithOutput(FMOD_OUTPUTTYPE_NOSOUND, 'OUTPUTTYPE_NOSOUND');
+ if res <> FMOD_OK then
+ begin
+ e_WriteLog('FMOD: Giving up, can''t init any output.', MSG_FATALERROR);
+ Exit;
+ end;
+ end;
end;
res := FMOD_System_GetOutput(F_System, output);
Result := True;
end;
-function e_InitSoundSystem(): Boolean;
+function e_InitSoundSystem(NoOutput: Boolean = False): Boolean;
begin
- Result := e_TrySS(48000, False);
- if not Result then Result := e_TrySS(44100, True);
+ if NoOutput then
+ begin
+ Result := e_TrySS(48000, 2);
+ Exit;
+ end;
+ Result := e_TrySS(48000, 0);
+ if not Result then Result := e_TrySS(44100, 1);
end;
function FindESound(): DWORD;