From 8b43f3b047113e3aa7f5bf170a4cd7cc1e043789 Mon Sep 17 00:00:00 2001 From: havoc Date: Thu, 21 Feb 2008 10:21:41 +0000 Subject: [PATCH] added #ifdef SUPPORTDIRECTX checks around all the dinput and dsound code - this means that dinput and dsound is not removed but is disabled, making it easier to compile with Dev-C++ and stock MSVS, this may have bad consequences (some people swear by -dinput, and dsound was used by default unless -wavonly was specified, so this is a behavior change) git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@8118 d7cf8633-e32d-0410-b094-e92efae38249 --- snd_win.c | 45 ++++++++++++++++++++++++++++++++++++++++++--- sys_win.c | 2 ++ vid_wgl.c | 36 ++++++++++++++++++++++++++++++------ 3 files changed, 74 insertions(+), 9 deletions(-) diff --git a/snd_win.c b/snd_win.c index 7f8a4621..85080631 100644 --- a/snd_win.c +++ b/snd_win.c @@ -20,12 +20,16 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "quakedef.h" #include "snd_main.h" +#ifdef SUPPORTDIRECTX #ifndef DIRECTSOUND_VERSION # define DIRECTSOUND_VERSION 0x0500 /* Version 5.0 */ #endif +#endif #include #include +#ifdef SUPPORTDIRECTX #include +#endif // ============================================================================== @@ -79,7 +83,9 @@ static const GUID MY_KSDATAFORMAT_SUBTYPE_PCM = extern HWND mainwindow; +#ifdef SUPPORTDIRECTX HRESULT (WINAPI *pDirectSoundCreate)(GUID FAR *lpGUID, LPDIRECTSOUND FAR *lplpDS, IUnknown FAR *pUnkOuter); +#endif // Wave output: 64KB in 64 buffers of 1KB // (64KB is > 1 sec at 16-bit 22050 Hz mono, and is 1/3 sec at 16-bit 44100 Hz stereo) @@ -94,16 +100,19 @@ static unsigned int wav_buffer_size; typedef enum sndinitstat_e {SIS_SUCCESS, SIS_FAILURE, SIS_NOTAVAIL} sndinitstat; +#ifdef SUPPORTDIRECTX static qboolean dsound_init; -static qboolean wav_init; +static unsigned int dsound_time; static qboolean primary_format_set; +#endif + +static qboolean wav_init; static int snd_sent, snd_completed; static int prev_painted; static unsigned int paintpot; -static unsigned int dsound_time; /* @@ -125,13 +134,17 @@ DWORD gSndBufSize; DWORD dwStartTime; +#ifdef SUPPORTDIRECTX LPDIRECTSOUND pDS; LPDIRECTSOUNDBUFFER pDSBuf, pDSPBuf; HINSTANCE hInstDS; +#endif qboolean SNDDMA_InitWav (void); +#ifdef SUPPORTDIRECTX sndinitstat SNDDMA_InitDirect (void); +#endif /* @@ -193,6 +206,7 @@ static qboolean SndSys_BuildWaveFormat (const snd_format_t* requested, WAVEFORMA } +#ifdef SUPPORTDIRECTX /* ================== SndSys_InitDirectSound @@ -404,6 +418,7 @@ static sndinitstat SndSys_InitDirectSound (const snd_format_t* requested) return SIS_SUCCESS; } +#endif /* @@ -530,18 +545,23 @@ May return a suggested format if the requested format isn't available */ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) { +#ifdef SUPPORTDIRECTX qboolean wavonly; +#endif sndinitstat stat; Con_Print ("SndSys_Init: using the Win32 module\n"); +#ifdef SUPPORTDIRECTX // COMMANDLINEOPTION: Windows Sound: -wavonly uses wave sound instead of DirectSound wavonly = (COM_CheckParm ("-wavonly") != 0); dsound_init = false; +#endif wav_init = false; stat = SIS_FAILURE; // assume DirectSound won't initialize +#ifdef SUPPORTDIRECTX // Init DirectSound if (!wavonly) { @@ -552,12 +572,15 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) else Con_Print("DirectSound failed to init\n"); } +#endif // if DirectSound didn't succeed in initializing, try to initialize // waveOut sound, unless DirectSound failed because the hardware is // already allocated (in which case the user has already chosen not // to have sound) +#ifdef SUPPORTDIRECTX if (!dsound_init && (stat != SIS_NOTAVAIL)) +#endif { if (SndSys_InitMmsystem (requested)) Con_Print("Wave sound (MMSYSTEM) initialized\n"); @@ -565,7 +588,11 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) Con_Print("Wave sound failed to init\n"); } +#ifdef SUPPORTDIRECTX return (dsound_init || wav_init); +#else + return wav_init; +#endif } @@ -578,6 +605,7 @@ Stop the sound card, delete "snd_renderbuffer" and free its other resources */ void SndSys_Shutdown (void) { +#ifdef SUPPORTDIRECTX if (pDSBuf) { IDirectSoundBuffer_Stop(pDSBuf); @@ -595,6 +623,7 @@ void SndSys_Shutdown (void) IDirectSound_SetCooperativeLevel (pDS, mainwindow, DSSCL_NORMAL); IDirectSound_Release(pDS); } +#endif if (hWaveOut) { @@ -629,15 +658,17 @@ void SndSys_Shutdown (void) snd_renderbuffer = NULL; } +#ifdef SUPPORTDIRECTX pDS = NULL; pDSBuf = NULL; pDSPBuf = NULL; + dsound_init = false; +#endif hWaveOut = 0; hData = 0; hWaveHdr = 0; lpData = NULL; lpWaveHdr = NULL; - dsound_init = false; wav_init = false; } @@ -702,6 +733,7 @@ unsigned int SndSys_GetSoundTime (void) factor = snd_renderbuffer->format.width * snd_renderbuffer->format.channels; +#ifdef SUPPORTDIRECTX if (dsound_init) { DWORD dwTime; @@ -714,6 +746,7 @@ unsigned int SndSys_GetSoundTime (void) dsound_time += diff / factor; return dsound_time; } +#endif if (wav_init) { @@ -739,10 +772,12 @@ unsigned int SndSys_GetSoundTime (void) } +#ifdef SUPPORTDIRECTX static DWORD dsound_dwSize; static DWORD dsound_dwSize2; static DWORD *dsound_pbuf; static DWORD *dsound_pbuf2; +#endif /* ==================== @@ -753,6 +788,7 @@ Get the exclusive lock on "snd_renderbuffer" */ qboolean SndSys_LockRenderBuffer (void) { +#ifdef SUPPORTDIRECTX int reps; HRESULT hresult; DWORD dwStatus; @@ -797,6 +833,7 @@ qboolean SndSys_LockRenderBuffer (void) Sys_Error("SndSys_LockRenderBuffer: the ring address has changed!!!\n"); return true; } +#endif return wav_init; } @@ -811,6 +848,8 @@ Release the exclusive lock on "snd_renderbuffer" */ void SndSys_UnlockRenderBuffer (void) { +#ifdef SUPPORTDIRECTX if (pDSBuf) IDirectSoundBuffer_Unlock(pDSBuf, dsound_pbuf, dsound_dwSize, dsound_pbuf2, dsound_dwSize2); +#endif } diff --git a/sys_win.c b/sys_win.c index a6f74563..a4c740c9 100644 --- a/sys_win.c +++ b/sys_win.c @@ -22,7 +22,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "quakedef.h" #include #include +#ifdef SUPPORTDIRECTX #include +#endif #include "errno.h" #include "resource.h" #include "conproc.h" diff --git a/vid_wgl.c b/vid_wgl.c index 603adbfc..2c05701a 100644 --- a/vid_wgl.c +++ b/vid_wgl.c @@ -25,10 +25,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "quakedef.h" #include #include +#ifdef SUPPORTDIRECTX #include +#endif #include "resource.h" #include +#ifdef SUPPORTDIRECTX #include +#endif extern HINSTANCE global_hInstance; @@ -120,14 +124,14 @@ static int window_x, window_y; static void IN_Activate (qboolean grab); static qboolean mouseinitialized; -static qboolean dinput; - -// input code +#ifdef SUPPORTDIRECTX +static qboolean dinput; #define DINPUT_BUFFERSIZE 16 #define iDirectInputCreate(a,b,c,d) pDirectInputCreate(a,b,c,d) static HRESULT (WINAPI *pDirectInputCreate)(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUT * lplpDirectInput, LPUNKNOWN punkOuter); +#endif // LordHavoc: thanks to backslash for this support for mouse buttons 4 and 5 /* backslash :: imouse explorer buttons */ @@ -156,9 +160,11 @@ static int mouse_buttons; static int mouse_oldbuttonstate; static unsigned int uiWheelMessage; +#ifdef SUPPORTDIRECTX static qboolean dinput_acquired; static unsigned int mstate_di; +#endif // joystick defines and variables // where should defines be moved? @@ -220,13 +226,14 @@ static int joy_id; static DWORD joy_flags; static DWORD joy_numbuttons; +#ifdef SUPPORTDIRECTX static LPDIRECTINPUT g_pdi; static LPDIRECTINPUTDEVICE g_pMouse; +static HINSTANCE hInstDI; +#endif static JOYINFOEX ji; -static HINSTANCE hInstDI; - // forward-referenced functions static void IN_StartupJoystick (void); static void Joy_AdvancedUpdate_f (void); @@ -581,7 +588,11 @@ LONG WINAPI MainWndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) if (wParam & MK_XBUTTON7) temp |= 512; +#ifdef SUPPORTDIRECTX if (vid_usingmouse && !dinput_acquired) +#else + if (vid_usingmouse) +#endif { // perform button actions int i; @@ -1270,12 +1281,14 @@ static void IN_Activate (qboolean grab) { vid_usingmouse = true; cl_ignoremousemoves = 2; +#ifdef SUPPORTDIRECTX if (dinput && g_pMouse) { IDirectInputDevice_Acquire(g_pMouse); dinput_acquired = true; } else +#endif { RECT window_rect; window_rect.left = window_x; @@ -1309,12 +1322,14 @@ static void IN_Activate (qboolean grab) { vid_usingmouse = false; cl_ignoremousemoves = 2; +#ifdef SUPPORTDIRECTX if (dinput_acquired) { IDirectInputDevice_Unacquire(g_pMouse); dinput_acquired = false; } else +#endif { // restore system mouseparms if we changed them if (restore_spi) @@ -1329,6 +1344,7 @@ static void IN_Activate (qboolean grab) } +#ifdef SUPPORTDIRECTX /* =========== IN_InitDInput @@ -1418,6 +1434,7 @@ static qboolean IN_InitDInput (void) return true; } +#endif /* @@ -1432,6 +1449,7 @@ static void IN_StartupMouse (void) mouseinitialized = true; +#ifdef SUPPORTDIRECTX // COMMANDLINEOPTION: Windows Input: -dinput enables DirectInput for mouse/joystick input if (COM_CheckParm ("-dinput")) dinput = IN_InitDInput (); @@ -1440,6 +1458,7 @@ static void IN_StartupMouse (void) Con_Print("DirectInput initialized\n"); else Con_Print("DirectInput not initialized\n"); +#endif mouse_buttons = 10; } @@ -1452,7 +1471,7 @@ IN_MouseMove */ static void IN_MouseMove (void) { - int i, mx, my; + int mx, my; POINT current_pos; if (!vid_usingmouse) @@ -1462,8 +1481,10 @@ static void IN_MouseMove (void) return; } +#ifdef SUPPORTDIRECTX if (dinput_acquired) { + int i; DIDEVICEOBJECTDATA od; DWORD dwElements; HRESULT hr; @@ -1552,6 +1573,7 @@ static void IN_MouseMove (void) in_mouse_y = my; } else +#endif { GetCursorPos (¤t_pos); mx = current_pos.x - (window_x + vid.width / 2); @@ -2047,6 +2069,7 @@ static void IN_Shutdown(void) { IN_Activate (false); +#ifdef SUPPORTDIRECTX if (g_pMouse) IDirectInputDevice_Release(g_pMouse); g_pMouse = NULL; @@ -2054,4 +2077,5 @@ static void IN_Shutdown(void) if (g_pdi) IDirectInput_Release(g_pdi); g_pdi = NULL; +#endif } -- 2.39.2