[Version] 0.5.8
[Issue Type] Bug Fix
Change-Id: I741348f3ed8fe082d6734dd91d8e79533af1c865
bool __mIsUsedSyncRead;
bool __mIsFirstStream;
bool __mIsDraining;
bool __mIsUsedSyncRead;
bool __mIsFirstStream;
bool __mIsDraining;
Name: capi-media-audio-io
Summary: An Audio Input & Audio Output library in Tizen Native API
Name: capi-media-audio-io
Summary: An Audio Input & Audio Output library in Tizen Native API
Release: 0
Group: Multimedia/API
License: Apache-2.0
Release: 0
Group: Multimedia/API
License: Apache-2.0
__mSyncReadLength(0),
__mIsUsedSyncRead(false),
__mIsFirstStream(false),
__mSyncReadLength(0),
__mIsUsedSyncRead(false),
__mIsFirstStream(false),
+ __mIsDraining(false),
+ __mIsStarted(false) {
}
CPulseAudioClient::~CPulseAudioClient() {
}
CPulseAudioClient::~CPulseAudioClient() {
CPulseAudioClient* pClient = static_cast<CPulseAudioClient*>(user_data);
AUDIO_IO_LOGD("stream %p started.", pClient);
CPulseAudioClient* pClient = static_cast<CPulseAudioClient*>(user_data);
AUDIO_IO_LOGD("stream %p started.", pClient);
+
+ pClient->__mIsStarted = true;
}
void CPulseAudioClient::__streamUnderflowCb(pa_stream* s, void* user_data) {
}
void CPulseAudioClient::__streamUnderflowCb(pa_stream* s, void* user_data) {
CPulseAudioClient* pClient = static_cast<CPulseAudioClient*>(user_data);
AUDIO_IO_LOGD("stream %p UnderFlow...", pClient);
CPulseAudioClient* pClient = static_cast<CPulseAudioClient*>(user_data);
AUDIO_IO_LOGD("stream %p UnderFlow...", pClient);
+
+ pClient->__mIsStarted = false;
}
void CPulseAudioClient::__streamEventCb(pa_stream* s, const char *name, pa_proplist *pl, void *user_data) {
}
void CPulseAudioClient::__streamEventCb(pa_stream* s, const char *name, pa_proplist *pl, void *user_data) {
if (__mDirection == EStreamDirection::STREAM_DIRECTION_PLAYBACK) {
pa_stream_set_started_callback(__mpStream, __streamStartedCb, this);
pa_stream_set_underflow_callback(__mpStream, __streamUnderflowCb, this);
if (__mDirection == EStreamDirection::STREAM_DIRECTION_PLAYBACK) {
pa_stream_set_started_callback(__mpStream, __streamStartedCb, this);
pa_stream_set_underflow_callback(__mpStream, __streamUnderflowCb, this);
// Connect stream with PA Server
// Connect stream with PA Server
+ if (!__mIsStarted) {
+ AUDIO_IO_LOGW("stream not started yet...skip drain");
+ return true;
+ }
+
if (isInThread() == false) {
AUDIO_IO_LOGD("drain");
pa_threaded_mainloop_lock(__mpMainloop);
if (isInThread() == false) {
AUDIO_IO_LOGD("drain");
pa_threaded_mainloop_lock(__mpMainloop);
}
pa_operation_unref(o);
pa_threaded_mainloop_unlock(__mpMainloop);
}
pa_operation_unref(o);
pa_threaded_mainloop_unlock(__mpMainloop);
+ AUDIO_IO_LOGD("drain done");
} else {
AUDIO_IO_LOGD("drain in thread");
pa_operation_unref(pa_stream_drain(__mpStream, __successDrainCbInThread, this));
} else {
AUDIO_IO_LOGD("drain in thread");
pa_operation_unref(pa_stream_drain(__mpStream, __successDrainCbInThread, this));