From f72816b2a0d50df56b0679b84495eb1329b90b8b Mon Sep 17 00:00:00 2001 From: grimfang4 Date: Thu, 24 Feb 2011 15:16:44 +0000 Subject: [PATCH] Applied Ghosthunt's remove_win32 patch. Fixed some warnings. --- sfxr/main.cpp | 61 ++------------------------------------------------ sfxr/sdlkit.h | 12 ++++++++-- sfxr/sfxr | Bin 42829 -> 0 bytes 3 files changed, 12 insertions(+), 61 deletions(-) delete mode 100755 sfxr/sfxr diff --git a/sfxr/main.cpp b/sfxr/main.cpp index 69a30c6..16946b3 100644 --- a/sfxr/main.cpp +++ b/sfxr/main.cpp @@ -28,11 +28,7 @@ */ -#ifdef WIN32 -#include "ddrawkit.h" -#else #include "sdlkit.h" -#endif #include #include @@ -40,13 +36,7 @@ #include #include -#ifdef WIN32 -#include "DPInput.h" // WIN32 -#include "pa/portaudio.h" -#include "fileselector.h" // WIN32 -#else #include "SDL.h" -#endif #define rnd(n) (rand()%(n+1)) @@ -557,37 +547,15 @@ void SynthSample(int length, float* buffer, FILE* file) } DPInput *input; -#ifdef WIN32 -PortAudioStream *stream; -#endif bool mute_stream; -#ifdef WIN32 -//ancient portaudio stuff -static int AudioCallback(void *inputBuffer, void *outputBuffer, - unsigned long framesPerBuffer, - PaTimestamp outTime, void *userData) -{ - float *out=(float*)outputBuffer; - float *in=(float*)inputBuffer; - (void)outTime; - - if(playing_sample && !mute_stream) - SynthSample(framesPerBuffer, out, NULL); - else - for(int i=0;i 1.0) f = 1.0; ((Sint16*)stream)[l] = (Sint16)(f * 32767); } + delete[] fbuf; } else memset(stream, 0, len); } -#endif bool ExportWAV(char* filename) { @@ -608,7 +576,6 @@ bool ExportWAV(char* filename) if(!foutput) return false; // write wav header - char string[32]; unsigned int dword=0; unsigned short word=0; fwrite("RIFF", 4, 1, foutput); // "RIFF" @@ -1398,22 +1365,6 @@ void ddkInit() ResetParams(); -#ifdef WIN32 - // Init PortAudio - SetEnvironmentVariable("PA_MIN_LATENCY_MSEC", "75"); // WIN32 - Pa_Initialize(); - Pa_OpenDefaultStream( - &stream, - 0, - 1, - paFloat32, // output type - 44100, - 512, // samples per buffer - 0, // # of buffers - AudioCallback, - NULL); - Pa_StartStream(stream); -#else SDL_AudioSpec des; des.freq = 44100; des.format = AUDIO_S16SYS; @@ -1423,7 +1374,6 @@ void ddkInit() des.userdata = NULL; VERIFY(!SDL_OpenAudio(&des, NULL)); SDL_PauseAudio(0); -#endif } void ddkFree() @@ -1431,12 +1381,5 @@ void ddkFree() delete input; free(ld48.data); free(font.data); - -#ifdef WIN32 - // Close PortAudio - Pa_StopStream(stream); - Pa_CloseStream(stream); - Pa_Terminate(); -#endif } diff --git a/sfxr/sdlkit.h b/sfxr/sdlkit.h index 2e6cc05..1d8fd1e 100644 --- a/sfxr/sdlkit.h +++ b/sfxr/sdlkit.h @@ -96,15 +96,23 @@ static void sdlupdate () static bool ddkLock () { - SDL_LockSurface(sdlscreen); + if(SDL_MUSTLOCK(sdlscreen)) + { + if(SDL_LockSurface(sdlscreen) < 0) + return false; + } ddkpitch = sdlscreen->pitch / (sdlscreen->format->BitsPerPixel == 32 ? 4 : 2); ddkscreen16 = (Uint16*)(sdlscreen->pixels); ddkscreen32 = (Uint32*)(sdlscreen->pixels); + return true; } static void ddkUnlock () { - SDL_UnlockSurface(sdlscreen); + if(SDL_MUSTLOCK(sdlscreen)) + { + SDL_UnlockSurface(sdlscreen); + } } static void ddkSetMode (int width, int height, int bpp, int refreshrate, int fullscreen, const char *title) diff --git a/sfxr/sfxr b/sfxr/sfxr deleted file mode 100755 index 40a37a1e561b159fe7ad339ead47809be248c6a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42829 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 r`J|?mID