#define SM_UNREF_FOR_STREAM_INFO(x_count, x_return) \
{ \
x_count--; \
- if (!x_count) { \
- /* send signal to other framework to release internal focus */ \
- x_return = mm_sound_send_signal(MM_SOUND_SIGNAL_RELEASE_INTERNAL_FOCUS, 0); \
- if (x_return) \
- LOGW("failed to send signal for stream info creation, ret(0x%x)", x_return); \
- } \
} \
#define SM_STRNCPY(dst,src,size,err) \
for (i = 0; i < SOUND_STREAM_DIRECTION_MAX; i++) {
if (vstream_h->pa_stream[i]) {
pa_stream_disconnect(vstream_h->pa_stream[i]);
+
+ /* wait for terminated state of the stream */
+ for (;;) {
+ pa_stream_state_t state;
+ state = pa_stream_get_state(vstream_h->pa_stream[i]);
+ if (state == PA_STREAM_TERMINATED) {
+ break;
+ }
+ pa_threaded_mainloop_wait(vstream_h->pa_mainloop);
+ }
+
pa_stream_unref(vstream_h->pa_stream[i]);
vstream_h->pa_stream[i] = NULL;
}