From: Jungsup Lee Date: Tue, 6 Nov 2018 04:07:28 +0000 (+0900) Subject: Add pa_threaded_mainloop_lock() in CPulseAudioClient::write() X-Git-Tag: accepted/tizen/unified/20181107.082100^0 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fapi%2Faudio-io.git;a=commitdiff_plain;h=82ec1b1ac29337c3a2c294972f694f5cf482599d Add pa_threaded_mainloop_lock() in CPulseAudioClient::write() [Version] 0.5.14 [Issue Type] Bug fix Change-Id: I56747241d749c2434101106c4aa1144aad1dde07 Signed-off-by: Jungsup Lee --- diff --git a/packaging/capi-media-audio-io.spec b/packaging/capi-media-audio-io.spec index 59a599f..7c16553 100644 --- a/packaging/capi-media-audio-io.spec +++ b/packaging/capi-media-audio-io.spec @@ -1,6 +1,6 @@ Name: capi-media-audio-io Summary: An Audio Input & Audio Output library in Tizen Native API -Version: 0.5.13 +Version: 0.5.14 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/cpp/CPulseAudioClient.cpp b/src/cpp/CPulseAudioClient.cpp index 0e0bb28..7f41a61 100644 --- a/src/cpp/CPulseAudioClient.cpp +++ b/src/cpp/CPulseAudioClient.cpp @@ -683,16 +683,22 @@ int CPulseAudioClient::write(const void* data, size_t length) { #ifdef _AUDIO_IO_DEBUG_TIMING_ AUDIO_IO_LOGD("data[%p], length[%d], First[%d]", data, length, __mIsFirstStream); #endif - if (pa_stream_is_corked(__mpStream)) { - AUDIO_IO_LOGW("stream is corked...do uncork here first!!!!"); - pa_operation_unref(pa_stream_cork(__mpStream, 0, NULL, this)); - } if (isInThread() == false) { pa_threaded_mainloop_lock(__mpMainloop); + if (pa_stream_is_corked(__mpStream)) { + AUDIO_IO_LOGW("stream is corked...do uncork here first!!!!"); + pa_operation_unref(pa_stream_cork(__mpStream, 0, NULL, this)); + } + ret = pa_stream_write(__mpStream, data, length, NULL, 0LL, PA_SEEK_RELATIVE); pa_threaded_mainloop_unlock(__mpMainloop); } else { + if (pa_stream_is_corked(__mpStream)) { + AUDIO_IO_LOGW("stream is corked...do uncork here first!!!!"); + pa_operation_unref(pa_stream_cork(__mpStream, 0, NULL, this)); + } + if (__mIsFirstStream) { const pa_buffer_attr* attr = pa_stream_get_buffer_attr(__mpStream); uint32_t prebuf = attr->prebuf;