Signed-off-by: falkTX <falktx@falktx.com>pull/421/head
@@ -98,14 +98,16 @@ endif | |||||
else ifneq ($(SKIP_RTAUDIO_FALLBACK),true) | else ifneq ($(SKIP_RTAUDIO_FALLBACK),true) | ||||
JACK_FLAGS += -DHAVE_GETTIMEOFDAY | |||||
ifeq ($(MACOS),true) | ifeq ($(MACOS),true) | ||||
JACK_LIBS += -framework CoreAudio -framework CoreFoundation -framework CoreMIDI | JACK_LIBS += -framework CoreAudio -framework CoreFoundation -framework CoreMIDI | ||||
else ifeq ($(WINDOWS),true) | else ifeq ($(WINDOWS),true) | ||||
JACK_LIBS += -lole32 -lwinmm | JACK_LIBS += -lole32 -lwinmm | ||||
# DirectSound | # DirectSound | ||||
JACK_LIBS += -ldsound | |||||
# JACK_LIBS += -ldsound | |||||
# WASAPI | # WASAPI | ||||
# JACK_LIBS += -lksuser -lmfplat -lmfuuid -lwmcodecdspuuid | |||||
JACK_LIBS += -lksuser -lmfplat -lmfuuid -lwmcodecdspuuid | |||||
else | else | ||||
ifeq ($(HAVE_PULSEAUDIO),true) | ifeq ($(HAVE_PULSEAUDIO),true) | ||||
JACK_FLAGS += $(PULSEAUDIO_FLAGS) | JACK_FLAGS += $(PULSEAUDIO_FLAGS) | ||||
@@ -223,6 +223,7 @@ function(dpf__build_jack NAME HAS_UI) | |||||
OUTPUT_NAME "${NAME}") | OUTPUT_NAME "${NAME}") | ||||
target_compile_definitions("${NAME}" PUBLIC "HAVE_JACK") | target_compile_definitions("${NAME}" PUBLIC "HAVE_JACK") | ||||
target_compile_definitions("${NAME}-jack" PRIVATE "HAVE_GETTIMEOFDAY") | |||||
find_package(PkgConfig) | find_package(PkgConfig) | ||||
pkg_check_modules(SDL2 "sdl2") | pkg_check_modules(SDL2 "sdl2") | ||||
@@ -266,7 +267,7 @@ function(dpf__build_jack NAME HAS_UI) | |||||
"${APPLE_COREFOUNDATION_FRAMEWORK}" | "${APPLE_COREFOUNDATION_FRAMEWORK}" | ||||
"${APPLE_COREMIDI_FRAMEWORK}") | "${APPLE_COREMIDI_FRAMEWORK}") | ||||
elseif(WIN32) | 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) | if(HAS_UI AND MINGW) | ||||
set_target_properties("${NAME}-jack" PROPERTIES WIN32_EXECUTABLE TRUE) | set_target_properties("${NAME}-jack" PROPERTIES WIN32_EXECUTABLE TRUE) | ||||
endif() | endif() | ||||
@@ -28,9 +28,9 @@ | |||||
# define RTAUDIO_API_TYPE MACOSX_CORE | # define RTAUDIO_API_TYPE MACOSX_CORE | ||||
# define RTMIDI_API_TYPE MACOSX_CORE | # define RTMIDI_API_TYPE MACOSX_CORE | ||||
#elif defined(DISTRHO_OS_WINDOWS) && !defined(_MSC_VER) | #elif defined(DISTRHO_OS_WINDOWS) && !defined(_MSC_VER) | ||||
# define __WINDOWS_DS__ | |||||
# define __WINDOWS_WASAPI__ | |||||
# define __WINDOWS_MM__ | # define __WINDOWS_MM__ | ||||
# define RTAUDIO_API_TYPE WINDOWS_DS | |||||
# define RTAUDIO_API_TYPE WINDOWS_WASAPI | |||||
# define RTMIDI_API_TYPE WINDOWS_MM | # define RTMIDI_API_TYPE WINDOWS_MM | ||||
#else | #else | ||||
# if defined(HAVE_PULSEAUDIO) | # if defined(HAVE_PULSEAUDIO) | ||||
@@ -4640,13 +4640,10 @@ void RtApiWasapi::stopStream( void ) | |||||
stream_.state = STREAM_STOPPING; | stream_.state = STREAM_STOPPING; | ||||
// wait until stream thread is stopped | // 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 | // close thread handle | ||||
if ( stream_.callbackInfo.thread && !CloseHandle( ( void* ) stream_.callbackInfo.thread ) ) { | if ( stream_.callbackInfo.thread && !CloseHandle( ( void* ) stream_.callbackInfo.thread ) ) { | ||||
errorText_ = "RtApiWasapi::stopStream: Unable to close callback thread."; | errorText_ = "RtApiWasapi::stopStream: Unable to close callback thread."; | ||||