From e74538820652e8ef8188ca87357a0ef34926aeae Mon Sep 17 00:00:00 2001 From: newsie-oss <58197643+newsie-oss@users.noreply.github.com> Date: Fri, 20 Dec 2019 11:40:42 -0500 Subject: [PATCH] Libretro: Static link runtime and fixed some mingw compilation issues * [libretro] use audio_batch_cb * [libretro] mingw static libs * [libretro] mingw xp support --- Libretro/LibretroSoundManager.h | 8 ++++---- Libretro/Makefile | 2 +- Libretro/libretro.cpp | 2 +- Utilities/stb_vorbis.cpp | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Libretro/LibretroSoundManager.h b/Libretro/LibretroSoundManager.h index 99cbafb..f0cfee1 100644 --- a/Libretro/LibretroSoundManager.h +++ b/Libretro/LibretroSoundManager.h @@ -6,7 +6,7 @@ class LibretroSoundManager : public IAudioDevice { private: - retro_audio_sample_t _sendAudioSample = nullptr; + retro_audio_sample_batch_t _sendAudioSample = nullptr; bool _skipMode = false; shared_ptr _console; @@ -26,13 +26,13 @@ public: virtual void PlayBuffer(int16_t *soundBuffer, uint32_t sampleCount, uint32_t sampleRate, bool isStereo) override { if(!_skipMode && _sendAudioSample) { - for(uint32_t i = 0; i < sampleCount; i++) { - _sendAudioSample(soundBuffer[i*2], soundBuffer[i*2+1]); + for(uint32_t total = 0; total < sampleCount; ) { + total += _sendAudioSample(soundBuffer + total*2, sampleCount - total); } } } - void SetSendAudioSample(retro_audio_sample_t sendAudioSample) + void SetSendAudioSample(retro_audio_sample_batch_t sendAudioSample) { _sendAudioSample = sendAudioSample; } diff --git a/Libretro/Makefile b/Libretro/Makefile index 4a45d8d..90d4ec6 100644 --- a/Libretro/Makefile +++ b/Libretro/Makefile @@ -243,7 +243,7 @@ else CC ?= gcc CXX ?= g++ TARGET := $(TARGET_NAME)_libretro.dll - SHARED := -shared -s -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined + SHARED := -shared -static-libgcc -static-libstdc++ -s -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined endif LDFLAGS += $(LIBM) diff --git a/Libretro/libretro.cpp b/Libretro/libretro.cpp index 6a0065d..afdee07 100644 --- a/Libretro/libretro.cpp +++ b/Libretro/libretro.cpp @@ -169,11 +169,11 @@ extern "C" { RETRO_API void retro_set_audio_sample(retro_audio_sample_t sendAudioSample) { - _soundManager->SetSendAudioSample(sendAudioSample); } RETRO_API void retro_set_audio_sample_batch(retro_audio_sample_batch_t audioSampleBatch) { + _soundManager->SetSendAudioSample(audioSampleBatch); } RETRO_API void retro_set_input_poll(retro_input_poll_t pollInput) diff --git a/Utilities/stb_vorbis.cpp b/Utilities/stb_vorbis.cpp index d479d95..09a2eec 100644 --- a/Utilities/stb_vorbis.cpp +++ b/Utilities/stb_vorbis.cpp @@ -4621,7 +4621,7 @@ stb_vorbis * stb_vorbis_open_file(FILE *file, int close_on_free, int *error, con stb_vorbis * stb_vorbis_open_filename(const char *filename, int *error, const stb_vorbis_alloc *alloc) { FILE *f; -#if _WIN32 || _WIN64 +#if defined(_MSC_VER) || defined(__MINGW64__) fopen_s(&f, filename, "rb"); #else f = fopen(filename, "rb");