Wait for terminated state of the stream in sound_nanager_stop_virtual_stream() 17/41117/2
authorSangchul Lee <sc11.lee@samsung.com>
Fri, 15 May 2015 05:14:31 +0000 (14:14 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Wed, 8 Jul 2015 05:37:50 +0000 (14:37 +0900)
Change-Id: I88b8d860667500fefae63e32dff340da9c020801

include/sound_manager_private.h
packaging/capi-media-sound-manager.spec
src/sound_manager_internal.c

index f82a568e9deed023ebe5cca31543b242e2571c79..5dc250637273868eef876d252c428e16ddd24901 100644 (file)
@@ -98,12 +98,6 @@ if( pthread_mutex_unlock( x_mutex ) ) { \
 #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) \
index 3f4f74fb0c1f6568400b4010209ed9936f7f6643..745d836692d37bfe36fc17d262840ad57c9e1dd4 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       capi-media-sound-manager
 Summary:    Sound Manager library
-Version:    0.3.7
+Version:    0.3.8
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index bbddeffcc3c6ce3274954ff157daf8d9368fc27d..d058f9fff669d3afc3c619b8632420f3417c8109 100644 (file)
@@ -365,6 +365,17 @@ int sound_manager_stop_virtual_stream (virtual_sound_stream_h virtual_stream)
        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;
                }