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);