From: Przemyslaw Ciezkowski
Date: Thu, 21 May 2015 13:50:31 +0000 (+0200)
Subject: [FMRadio] Prevent duplicating FMRadioManager
X-Git-Tag: submit/tizen_mobile/20150612.133019^2~2^2~137^2
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=48767a7a29151f69060808fdc761f58da4379ff3;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git
[FMRadio] Prevent duplicating FMRadioManager
std::bind was copying whole object.
[Verification]
Fixes crash in FMRadioScanCallback_onfinished
Change-Id: I2736ef4ca4c28c80c9a9a4bb1c556870bc58e62f
Signed-off-by: Przemyslaw Ciezkowski
---
diff --git a/src/radio/radio_manager.cc b/src/radio/radio_manager.cc
index ffe2fbe4..d9c66422 100755
--- a/src/radio/radio_manager.cc
+++ b/src/radio/radio_manager.cc
@@ -142,8 +142,8 @@ void ScanStartCallback(int frequency, void* user_data) {
&FMRadioManager::PostMessage, &data->manager_, event.serialize()));
}
-void PostAsyncSuccess(FMRadioManager& manager, double callbackId, picojson::value* event) {
- manager.PostResultSuccess(callbackId, event);
+void PostAsyncSuccess(FMRadioManager* manager, double callbackId, picojson::value* event) {
+ manager->PostResultSuccess(callbackId, event);
delete event;
}
@@ -163,7 +163,7 @@ void ScanCompleteCallback(void* user_data) {
obj.insert(std::make_pair("frequencies", picojson::value(frequencies)));
common::TaskQueue::GetInstance().Async(std::bind(&PostAsyncSuccess,
- data->manager_, data->callback_id_, event));
+ &data->manager_, data->callback_id_, event));
delete data;
}
diff --git a/src/radio/radio_manager.h b/src/radio/radio_manager.h
index 916c4d72..d843cd1b 100755
--- a/src/radio/radio_manager.h
+++ b/src/radio/radio_manager.h
@@ -23,6 +23,8 @@ class RadioInstance;
class FMRadioManager {
public:
explicit FMRadioManager(RadioInstance& instance);
+ // FMRadioManager destroys radio_h in destructor, so it cannot be copyable
+ FMRadioManager(const FMRadioManager& other) = delete;
~FMRadioManager();
common::PlatformResult Start(double freq);