summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGilbok Lee <gilbok.lee@samsung.com>2016-11-16 14:22:27 +0900
committerGilbok Lee <gilbok.lee@samsung.com>2016-11-16 14:22:27 +0900
commitd9dae815bc892a0d166cc80b871a057694f15de4 (patch)
tree4de4f28fe2e1796b5e308d7d9a2345812ecf9368 /src
parent062b0d8767898f9a04a3493f0b051aef36b51f11 (diff)
downloadlibmm-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.c6
-rw-r--r--src/mm_radio_priv_hal.c6
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();