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."; | ||||