From 4d783d76cb996f31fc3fd2d1d6a9b74af056139c Mon Sep 17 00:00:00 2001 From: falkTX Date: Sun, 2 Apr 2023 21:57:27 +0200 Subject: [PATCH] Use wasapi on windows standalones Signed-off-by: falkTX --- Makefile.plugins.mk | 6 ++++-- cmake/DPF-plugin.cmake | 3 ++- distrho/src/jackbridge/RtAudioBridge.hpp | 4 ++-- distrho/src/jackbridge/rtaudio/RtAudio.cpp | 7 ++----- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Makefile.plugins.mk b/Makefile.plugins.mk index b933c126..4233c993 100644 --- a/Makefile.plugins.mk +++ b/Makefile.plugins.mk @@ -98,14 +98,16 @@ endif else ifneq ($(SKIP_RTAUDIO_FALLBACK),true) +JACK_FLAGS += -DHAVE_GETTIMEOFDAY + ifeq ($(MACOS),true) JACK_LIBS += -framework CoreAudio -framework CoreFoundation -framework CoreMIDI else ifeq ($(WINDOWS),true) JACK_LIBS += -lole32 -lwinmm # DirectSound -JACK_LIBS += -ldsound +# JACK_LIBS += -ldsound # WASAPI -# JACK_LIBS += -lksuser -lmfplat -lmfuuid -lwmcodecdspuuid +JACK_LIBS += -lksuser -lmfplat -lmfuuid -lwmcodecdspuuid else ifeq ($(HAVE_PULSEAUDIO),true) JACK_FLAGS += $(PULSEAUDIO_FLAGS) diff --git a/cmake/DPF-plugin.cmake b/cmake/DPF-plugin.cmake index 33445950..50ed547b 100644 --- a/cmake/DPF-plugin.cmake +++ b/cmake/DPF-plugin.cmake @@ -223,6 +223,7 @@ function(dpf__build_jack NAME HAS_UI) OUTPUT_NAME "${NAME}") target_compile_definitions("${NAME}" PUBLIC "HAVE_JACK") + target_compile_definitions("${NAME}-jack" PRIVATE "HAVE_GETTIMEOFDAY") find_package(PkgConfig) pkg_check_modules(SDL2 "sdl2") @@ -266,7 +267,7 @@ function(dpf__build_jack NAME HAS_UI) "${APPLE_COREFOUNDATION_FRAMEWORK}" "${APPLE_COREMIDI_FRAMEWORK}") elseif(WIN32) - target_link_libraries("${NAME}-jack" PRIVATE "dsound" "ole32" "winmm") + target_link_libraries("${NAME}-jack" PRIVATE "ksuser" "mfplat" "mfuuid" "ole32" "winmm" "wmcodecdspuuid") if(HAS_UI AND MINGW) set_target_properties("${NAME}-jack" PROPERTIES WIN32_EXECUTABLE TRUE) endif() diff --git a/distrho/src/jackbridge/RtAudioBridge.hpp b/distrho/src/jackbridge/RtAudioBridge.hpp index 2eba11dd..cd2fc76e 100644 --- a/distrho/src/jackbridge/RtAudioBridge.hpp +++ b/distrho/src/jackbridge/RtAudioBridge.hpp @@ -28,9 +28,9 @@ # define RTAUDIO_API_TYPE MACOSX_CORE # define RTMIDI_API_TYPE MACOSX_CORE #elif defined(DISTRHO_OS_WINDOWS) && !defined(_MSC_VER) -# define __WINDOWS_DS__ +# define __WINDOWS_WASAPI__ # define __WINDOWS_MM__ -# define RTAUDIO_API_TYPE WINDOWS_DS +# define RTAUDIO_API_TYPE WINDOWS_WASAPI # define RTMIDI_API_TYPE WINDOWS_MM #else # if defined(HAVE_PULSEAUDIO) diff --git a/distrho/src/jackbridge/rtaudio/RtAudio.cpp b/distrho/src/jackbridge/rtaudio/RtAudio.cpp index 3e64b85f..addfc0a6 100644 --- a/distrho/src/jackbridge/rtaudio/RtAudio.cpp +++ b/distrho/src/jackbridge/rtaudio/RtAudio.cpp @@ -4640,13 +4640,10 @@ void RtApiWasapi::stopStream( void ) stream_.state = STREAM_STOPPING; // wait until stream thread is stopped - while( stream_.state != STREAM_STOPPED ) { - Sleep( 1 ); + for (int i=0; i < 2 && stream_.state != STREAM_STOPPED; ++i ) { + Sleep( 1000 * stream_.bufferSize / stream_.sampleRate ); } - // Wait for the last buffer to play before stopping. - Sleep( 1000 * stream_.bufferSize / stream_.sampleRate ); - // close thread handle if ( stream_.callbackInfo.thread && !CloseHandle( ( void* ) stream_.callbackInfo.thread ) ) { errorText_ = "RtApiWasapi::stopStream: Unable to close callback thread.";