Libretro: Static link runtime and fixed some mingw compilation issues

* [libretro] use audio_batch_cb
* [libretro] mingw static libs
* [libretro] mingw xp support
This commit is contained in:
newsie-oss 2019-12-20 11:40:42 -05:00 committed by SourMesen
parent 76d5f2a5b3
commit e745388206
4 changed files with 7 additions and 7 deletions

View file

@ -6,7 +6,7 @@
class LibretroSoundManager : public IAudioDevice class LibretroSoundManager : public IAudioDevice
{ {
private: private:
retro_audio_sample_t _sendAudioSample = nullptr; retro_audio_sample_batch_t _sendAudioSample = nullptr;
bool _skipMode = false; bool _skipMode = false;
shared_ptr<Console> _console; shared_ptr<Console> _console;
@ -26,13 +26,13 @@ public:
virtual void PlayBuffer(int16_t *soundBuffer, uint32_t sampleCount, uint32_t sampleRate, bool isStereo) override virtual void PlayBuffer(int16_t *soundBuffer, uint32_t sampleCount, uint32_t sampleRate, bool isStereo) override
{ {
if(!_skipMode && _sendAudioSample) { if(!_skipMode && _sendAudioSample) {
for(uint32_t i = 0; i < sampleCount; i++) { for(uint32_t total = 0; total < sampleCount; ) {
_sendAudioSample(soundBuffer[i*2], soundBuffer[i*2+1]); total += _sendAudioSample(soundBuffer + total*2, sampleCount - total);
} }
} }
} }
void SetSendAudioSample(retro_audio_sample_t sendAudioSample) void SetSendAudioSample(retro_audio_sample_batch_t sendAudioSample)
{ {
_sendAudioSample = sendAudioSample; _sendAudioSample = sendAudioSample;
} }

View file

@ -243,7 +243,7 @@ else
CC ?= gcc CC ?= gcc
CXX ?= g++ CXX ?= g++
TARGET := $(TARGET_NAME)_libretro.dll 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 endif
LDFLAGS += $(LIBM) LDFLAGS += $(LIBM)

View file

@ -169,11 +169,11 @@ extern "C" {
RETRO_API void retro_set_audio_sample(retro_audio_sample_t sendAudioSample) 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) 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) RETRO_API void retro_set_input_poll(retro_input_poll_t pollInput)

View file

@ -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) stb_vorbis * stb_vorbis_open_filename(const char *filename, int *error, const stb_vorbis_alloc *alloc)
{ {
FILE *f; FILE *f;
#if _WIN32 || _WIN64 #if defined(_MSC_VER) || defined(__MINGW64__)
fopen_s(&f, filename, "rb"); fopen_s(&f, filename, "rb");
#else #else
f = fopen(filename, "rb"); f = fopen(filename, "rb");