diff options
author | Gilbok Lee <gilbok.lee@samsung.com> | 2016-11-16 14:22:27 +0900 |
---|---|---|
committer | Gilbok Lee <gilbok.lee@samsung.com> | 2016-11-16 14:22:27 +0900 |
commit | d9dae815bc892a0d166cc80b871a057694f15de4 (patch) | |
tree | 4de4f28fe2e1796b5e308d7d9a2345812ecf9368 /src | |
parent | 062b0d8767898f9a04a3493f0b051aef36b51f11 (diff) | |
download | libmm-radio-d9dae815bc892a0d166cc80b871a057694f15de4.tar.gz libmm-radio-d9dae815bc892a0d166cc80b871a057694f15de4.tar.bz2 libmm-radio-d9dae815bc892a0d166cc80b871a057694f15de4.zip |
Fixed deadlock and doesn't change state after scan_stop.
[Version] 0.2.12
[Profile] Mobile, Wearable
[Issue Type] Fix bugs
Change-Id: I5637f4843d0a4a24edb0fb9a2beda9ce38d5780a
Diffstat (limited to 'src')
-rw-r--r-- | src/mm_radio_priv_emulator.c | 6 | ||||
-rw-r--r-- | src/mm_radio_priv_hal.c | 6 |
2 files changed, 4 insertions, 8 deletions
diff --git a/src/mm_radio_priv_emulator.c b/src/mm_radio_priv_emulator.c index 3c7f67d..d86b969 100644 --- a/src/mm_radio_priv_emulator.c +++ b/src/mm_radio_priv_emulator.c @@ -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(); diff --git a/src/mm_radio_priv_hal.c b/src/mm_radio_priv_hal.c index 09c5229..109e6dc 100644 --- a/src/mm_radio_priv_hal.c +++ b/src/mm_radio_priv_hal.c @@ -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(); |