sched_yield() after sync read/write to avoid thread starvation 28/112628/4 submit/tizen_3.0/20170207.090553
authorhowon kim <howon.kim@samsung.com>
Thu, 2 Feb 2017 04:40:06 +0000 (13:40 +0900)
committerhowon kim <howon.kim@samsung.com>
Tue, 7 Feb 2017 04:10:14 +0000 (13:10 +0900)
[Version] 0.3.64
[Profile] Common
[Issue Type] BUG

Change-Id: Iaa265baa7d49686c03ab8558277b5f9827ef673e
Signed-off-by: howon kim <howon.kim@samsung.com>
packaging/capi-media-audio-io.spec
src/cpp/CAudioInput.cpp
src/cpp/CAudioOutput.cpp

index 6f632fb297655574cbf1e8641e20626b3c414b07..f348dd69a7b4f552dfde02c8501f5c206619be42 100644 (file)
@@ -1,6 +1,6 @@
 Name:           capi-media-audio-io
 Summary:        An Audio Input & Audio Output library in Tizen Native API
-Version:        0.3.63
+Version:        0.3.64
 Release:        0
 Group:          Multimedia/API
 License:        Apache-2.0
index 565024fc8c1245a90bbbe4159b450fc7ee87a0fa..bb184e172ec549ea80a1e6e255817f0b48a1854a 100644 (file)
@@ -17,6 +17,7 @@
 
 #include <pulse/pulseaudio.h>
 #include "CAudioIODef.h"
+#include <sched.h>
 
 #define RECORDER_PRIVILEGE "http://tizen.org/privilege/recorder"
 #define CLIENT_NAME "AUDIO_IO_PA_CLIENT"
@@ -473,6 +474,7 @@ size_t CAudioInput::read(void* buffer, size_t length) throw(CAudioError) {
         ret = mpPulseAudioClient->read(buffer, length);
 
         internalUnlock();
+        sched_yield();
     } catch (CAudioError e) {
         internalUnlock();
         throw e;
index 4300fea590bfe161e239837a1f838abbb8b3421b..c2a517dac360462aa34c300da1db3f01c1a7b5a7 100644 (file)
@@ -16,6 +16,7 @@
 
 
 #include "CAudioIODef.h"
+#include <sched.h>
 
 using namespace std;
 using namespace tizen_media_audio;
@@ -398,6 +399,7 @@ size_t CAudioOutput::write(const void* buffer, size_t length) throw(CAudioError)
 
         __mIsUsedSyncWrite = false;
         internalUnlock();
+        sched_yield();
     } catch (CAudioError e) {
         __mIsUsedSyncWrite = false;
         internalUnlock();