Fixed deadlock and doesn't change state after scan_stop. 70/98070/1
authorGilbok Lee <gilbok.lee@samsung.com>
Wed, 16 Nov 2016 05:22:27 +0000 (14:22 +0900)
committerGilbok Lee <gilbok.lee@samsung.com>
Wed, 16 Nov 2016 05:22:27 +0000 (14:22 +0900)
[Version] 0.2.12
[Profile] Mobile, Wearable
[Issue Type] Fix bugs

Change-Id: I5637f4843d0a4a24edb0fb9a2beda9ce38d5780a

packaging/libmm-radio.spec
src/mm_radio_priv_emulator.c
src/mm_radio_priv_hal.c

index 08170a3..ae6750e 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       libmm-radio
 Summary:    Multimedia Framework Radio Library
-Version:    0.2.11
+Version:    0.2.12
 Release:    0
 Group:      System/Libraries
 License:    Apache-2.0
index 3c7f67d..d86b969 100644 (file)
@@ -838,14 +838,10 @@ int _mmradio_stop_scan(mm_radio_t * radio)
        radio->stop_scan = true;
 
        if (radio->scan_thread > 0) {
-               pthread_cancel(radio->scan_thread);
                pthread_join(radio->scan_thread, NULL);
                radio->scan_thread = 0;
        }
 
-       MMRADIO_SET_STATE(radio, MM_RADIO_STATE_READY);
-       MMRADIO_POST_MSG(radio, MM_MESSAGE_RADIO_SCAN_STOP, NULL);
-
        MMRADIO_LOG_FLEAVE();
 
        return MM_ERROR_NONE;
@@ -944,6 +940,8 @@ void __mmradio_scan_thread(mm_radio_t * radio)
 
        if (!radio->stop_scan)
                MMRADIO_POST_MSG(radio, MM_MESSAGE_RADIO_SCAN_FINISH, NULL);
+       else
+               MMRADIO_POST_MSG(radio, MM_MESSAGE_RADIO_SCAN_STOP, NULL);
 
        MMRADIO_LOG_FLEAVE();
 
index 09c5229..109e6dc 100644 (file)
@@ -824,14 +824,10 @@ int _mmradio_stop_scan(mm_radio_t *radio)
                        MMRADIO_LOG_ERROR("trylock is failed but Not EBUSY. ret: %d", ret);
                }
                MMRADIO_LOG_DEBUG("pthread_join scan_thread");
-               pthread_cancel(radio->scan_thread);
                pthread_join(radio->scan_thread, NULL);
                radio->scan_thread = 0;
        }
 
-       MMRADIO_SET_STATE(radio, MM_RADIO_STATE_READY);
-       MMRADIO_POST_MSG(radio, MM_MESSAGE_RADIO_SCAN_STOP, NULL);
-
        MMRADIO_LOG_FLEAVE();
 
        return MM_ERROR_NONE;
@@ -989,6 +985,8 @@ FINISHED_ERR:
 
        if (!radio->stop_scan)
                MMRADIO_POST_MSG(radio, MM_MESSAGE_RADIO_SCAN_FINISH, NULL);
+       else
+               MMRADIO_POST_MSG(radio, MM_MESSAGE_RADIO_SCAN_STOP, NULL);
 
        MMRADIO_LOG_FLEAVE();