From 6fa258d884724480286b7a3fed25bf0c5fbb681b Mon Sep 17 00:00:00 2001 From: Kisub Song Date: Tue, 4 Sep 2012 14:01:45 +0900 Subject: [PATCH] Update change log and spec for wrt-plugins-tizen_0.2.77 Changed Modules : Contact [Version] 0.2.77 [Project] GT-I8800, Public [Title] SEL Verification [Team] WebAPI [BinType] PDA [Customer] Open [Issue#] N_SE-8584 [Problem] Lock-up when the change listener callback invoked. [Cause] The change listener callback invoked on the main thread. [Solution] Changed to pass event to contact thread. [SCMRequest] N/A --- debian/changelog | 8 +++++ packaging/wrt-plugins-tizen.spec | 2 +- src/platform/Tizen/Contact/AddressBook.cpp | 8 ++--- src/platform/Tizen/Contact/AddressBook.h | 2 +- ...er.cpp => ContactsSvcChangeListenerManager.cpp} | 40 ++++++++++++++-------- ...anager.h => ContactsSvcChangeListenerManager.h} | 24 +++++++++---- src/platform/Tizen/Contact/config.cmake | 2 +- 7 files changed, 57 insertions(+), 29 deletions(-) rename src/platform/Tizen/Contact/{ContactListenerManager.cpp => ContactsSvcChangeListenerManager.cpp} (82%) rename src/platform/Tizen/Contact/{ContactListenerManager.h => ContactsSvcChangeListenerManager.h} (74%) diff --git a/debian/changelog b/debian/changelog index 21d6c3e..ad39c40 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +wrt-plugins-tizen (0.2.77) unstable; urgency=low + + * Bug fix on Power and MediaContent + * Git : slp/pkgs/w/wrt-plugins-tizen + * Tag : wrt-plugins-tizen_0.2.77 + + -- Kisub Song Tue, 04 Sep 2012 13:57:20 +0900 + wrt-plugins-tizen (0.2.76) unstable; urgency=low * Bug fix on Power and MediaContent diff --git a/packaging/wrt-plugins-tizen.spec b/packaging/wrt-plugins-tizen.spec index 74cab58..760ad48 100755 --- a/packaging/wrt-plugins-tizen.spec +++ b/packaging/wrt-plugins-tizen.spec @@ -1,6 +1,6 @@ Name: wrt-plugins-tizen Summary: JavaScript plugins for WebRuntime -Version: 0.2.76 +Version: 0.2.77 Release: 0 Group: TO_BE_FILLED License: TO_BE_FILLED diff --git a/src/platform/Tizen/Contact/AddressBook.cpp b/src/platform/Tizen/Contact/AddressBook.cpp index 86dc699..b751dc0 100755 --- a/src/platform/Tizen/Contact/AddressBook.cpp +++ b/src/platform/Tizen/Contact/AddressBook.cpp @@ -62,7 +62,7 @@ AddressBook::~AddressBook() { if(m_addressBookEmitters.size() != 0) { - ContactListenerManagerSingleton::Instance().unregisterAppListChangedCallbacks(this); + ContactsSvcChangeListenerManagerSingleton::Instance().unregisterAppListChangedCallbacks(this); } } @@ -676,12 +676,12 @@ void AddressBook::OnRequestReceived(const EventAddressBookAddChangeListenerPtr & { LogDebug("Watch registered initially"); - ContactListenerManagerSingleton::Instance().registerAppListChangedCallbacks(this, m_id); + ContactsSvcChangeListenerManagerSingleton::Instance().registerAppListChangedCallbacks(this, m_id); } m_addressBookEmitters.attach(emitter); - long id = ContactListenerManagerSingleton::Instance().getWatchIdAndInc(); + long id = ContactsSvcChangeListenerManagerSingleton::Instance().getWatchIdAndInc(); m_watchIdMap[id] = emitter->getId(); event->setId(id); @@ -732,7 +732,7 @@ void AddressBook::OnRequestReceived(const EventAddressBookRemoveChangeListenerPt { LogDebug("No watcher is registered. unsubscribing from contact service."); - ContactListenerManagerSingleton::Instance().unregisterAppListChangedCallbacks(this); + ContactsSvcChangeListenerManagerSingleton::Instance().unregisterAppListChangedCallbacks(this); } event->setResult(true); diff --git a/src/platform/Tizen/Contact/AddressBook.h b/src/platform/Tizen/Contact/AddressBook.h index 846d596..6be7e35 100755 --- a/src/platform/Tizen/Contact/AddressBook.h +++ b/src/platform/Tizen/Contact/AddressBook.h @@ -32,7 +32,7 @@ #include #include -#include "ContactListenerManager.h" +#include "ContactsSvcChangeListenerManager.h" namespace TizenApis { namespace Platform { diff --git a/src/platform/Tizen/Contact/ContactListenerManager.cpp b/src/platform/Tizen/Contact/ContactsSvcChangeListenerManager.cpp similarity index 82% rename from src/platform/Tizen/Contact/ContactListenerManager.cpp rename to src/platform/Tizen/Contact/ContactsSvcChangeListenerManager.cpp index b2bab60..f8de0be 100644 --- a/src/platform/Tizen/Contact/ContactListenerManager.cpp +++ b/src/platform/Tizen/Contact/ContactsSvcChangeListenerManager.cpp @@ -14,13 +14,13 @@ * limitations under the License. */ /* - * @file ContactListenerManager.cpp + * @file ContactsSvcChangeListenerManager.cpp * @author Kisub Song (kisubs.song@samsung.com) * @version 0.1 * @brief */ -#include "ContactListenerManager.h" +#include "ContactsSvcChangeListenerManager.h" #include @@ -33,7 +33,7 @@ #include "ContactObjectP2AConverter.h" #include "query-svc/query-service.h" -IMPLEMENT_SINGLETON(TizenApis::Platform::Contact::ContactListenerManager) +IMPLEMENT_SINGLETON(TizenApis::Platform::Contact::ContactsSvcChangeListenerManager) namespace TizenApis { namespace Platform { @@ -43,14 +43,15 @@ using namespace std; using namespace WrtDeviceApis::Commons; using namespace TizenApis::Api::Contact; -ContactListenerManager::ContactListenerManager() : +ContactsSvcChangeListenerManager::ContactsSvcChangeListenerManager() : + EventRequestReceiver< EventInvokeChangeListener >(ThreadEnum::CONTACT_THREAD), m_callbackRegistered(false), m_latestVersion(0), m_watchIdAcc(0) { } -ContactListenerManager::~ContactListenerManager() +ContactsSvcChangeListenerManager::~ContactsSvcChangeListenerManager() { if(m_callbackRegistered) { @@ -58,7 +59,7 @@ ContactListenerManager::~ContactListenerManager() } } -void ContactListenerManager::registerAppListChangedCallbacks(IContactEventCallbacks *callbacks, int addressBookId) +void ContactsSvcChangeListenerManager::registerAppListChangedCallbacks(IContactEventCallbacks *callbacks, int addressBookId) { if(callbacks == NULL) { @@ -77,7 +78,7 @@ void ContactListenerManager::registerAppListChangedCallbacks(IContactEventCallba m_callbacks[addressBookId] = callbacks; } -void ContactListenerManager::unregisterAppListChangedCallbacks(IContactEventCallbacks *callbacks) +void ContactsSvcChangeListenerManager::unregisterAppListChangedCallbacks(IContactEventCallbacks *callbacks) { if(callbacks == NULL) { @@ -112,7 +113,7 @@ void ContactListenerManager::unregisterAppListChangedCallbacks(IContactEventCall } } -void ContactListenerManager::unregisterAppListChangedCallbacks(int addressBookId) +void ContactsSvcChangeListenerManager::unregisterAppListChangedCallbacks(int addressBookId) { if(m_callbacks.size() == 0) { @@ -135,24 +136,33 @@ void ContactListenerManager::unregisterAppListChangedCallbacks(int addressBookId } } -long ContactListenerManager::getWatchIdAndInc() +long ContactsSvcChangeListenerManager::getWatchIdAndInc() { return ++m_watchIdAcc; } -void ContactListenerManager::contactsSvcEventCallback(void *data) +void ContactsSvcChangeListenerManager::contactsSvcEventCallback(void *data) { + // This callback is to be called from main thread. if(data == NULL) { LogWarning("contacts-service listener passed NULL user_data"); return; } - ContactListenerManager *contactListenerMgr = static_cast(data); + ContactsSvcChangeListenerManager *contactListenerMgr = static_cast(data); contactListenerMgr->contactsSvcEventCallback(); } -void ContactListenerManager::contactsSvcEventCallback() +void ContactsSvcChangeListenerManager::contactsSvcEventCallback() +{ + EventInvokeChangeListenerPtr event(new EventInvokeChangeListener()); + + event->setForAsynchronousCall(NULL); + EventRequestReceiver< EventInvokeChangeListener >::PostRequest(event); +} + +void ContactsSvcChangeListenerManager::OnRequestReceived(const EventInvokeChangeListenerPtr &event) { LogDebug("entered"); if(!m_callbackRegistered) @@ -257,7 +267,7 @@ void ContactListenerManager::contactsSvcEventCallback() m_latestVersion = get_contact_version(); } -void ContactListenerManager::registerContactSvcChangedCallbacks() +void ContactsSvcChangeListenerManager::registerContactSvcChangedCallbacks() { int errorCode = 0; @@ -288,7 +298,7 @@ void ContactListenerManager::registerContactSvcChangedCallbacks() m_callbackRegistered = true; } -void ContactListenerManager::unregisterContactSvcChangedCallbacks() +void ContactsSvcChangeListenerManager::unregisterContactSvcChangedCallbacks() { int errorCode = 0; @@ -319,7 +329,7 @@ void ContactListenerManager::unregisterContactSvcChangedCallbacks() m_callbackRegistered = false; } -IContactEventCallbacks* ContactListenerManager::getContactEventCallbacks(int id) +IContactEventCallbacks* ContactsSvcChangeListenerManager::getContactEventCallbacks(int id) { if(m_callbacks.find(id) == m_callbacks.end()) return NULL; diff --git a/src/platform/Tizen/Contact/ContactListenerManager.h b/src/platform/Tizen/Contact/ContactsSvcChangeListenerManager.h similarity index 74% rename from src/platform/Tizen/Contact/ContactListenerManager.h rename to src/platform/Tizen/Contact/ContactsSvcChangeListenerManager.h index ab03eb1..b481a13 100644 --- a/src/platform/Tizen/Contact/ContactListenerManager.h +++ b/src/platform/Tizen/Contact/ContactsSvcChangeListenerManager.h @@ -14,7 +14,7 @@ * limitations under the License. */ /* - * @file ContactListenerManager.h + * @file ContactsSvcChangeListenerManager.h * @author Kisub Song (kisubs.song@samsung.com) * @version 0.1 * @brief @@ -28,6 +28,8 @@ #include #include #include +#include +#include #include @@ -38,7 +40,7 @@ namespace Contact { class IContactEventCallbacks { public: - friend class ContactListenerManager; + friend class ContactsSvcChangeListenerManager; IContactEventCallbacks() {} ~IContactEventCallbacks() {} @@ -49,11 +51,18 @@ protected: virtual void onContactEventRemoved(TizenApis::Api::Contact::StringArrayPtr &contactIds) = 0; }; -class ContactListenerManager +class EventInvokeChangeListener : + public WrtDeviceApis::Commons::IEvent +{ +}; +typedef DPL::SharedPtr EventInvokeChangeListenerPtr; + +class ContactsSvcChangeListenerManager : + public WrtDeviceApis::Commons::EventRequestReceiver< EventInvokeChangeListener > { public: - ContactListenerManager(); - virtual ~ContactListenerManager(); + ContactsSvcChangeListenerManager(); + virtual ~ContactsSvcChangeListenerManager(); // Can throw InvalidArgumentException or PlatformException void registerAppListChangedCallbacks(IContactEventCallbacks *callbacks, int addressBookId); @@ -67,6 +76,7 @@ public: private: static void contactsSvcEventCallback(void *data); void contactsSvcEventCallback(); + virtual void OnRequestReceived(const EventInvokeChangeListenerPtr &event); void registerContactSvcChangedCallbacks(); void unregisterContactSvcChangedCallbacks(); @@ -83,10 +93,10 @@ private: long m_watchIdAcc; public: - friend class DPL::Singleton; + friend class DPL::Singleton; }; -typedef DPL::Singleton ContactListenerManagerSingleton; +typedef DPL::Singleton ContactsSvcChangeListenerManagerSingleton; } // Contact } // Platform diff --git a/src/platform/Tizen/Contact/config.cmake b/src/platform/Tizen/Contact/config.cmake index 5756ca1..d1dbcf2 100755 --- a/src/platform/Tizen/Contact/config.cmake +++ b/src/platform/Tizen/Contact/config.cmake @@ -26,8 +26,8 @@ set(SRCS_PLATFORM_IMPLEMENTATION_CONTACT ${CURRENT_PATH}/ContactObjectP2AConverter.cpp ${CURRENT_PATH}/ContactSearchEngine.cpp ${CURRENT_PATH}/ContactFilterValidator.cpp + ${CURRENT_PATH}/ContactsSvcChangeListenerManager.cpp ${CURRENT_PATH}/ContactsSvcWrapper.cpp - ${CURRENT_PATH}/ContactListenerManager.cpp ${CURRENT_PATH}/ContactUtility.cpp ${CURRENT_PATH}/ContactDownloadManager.cpp ${CURRENT_PATH}/query-svc/query-svc.c -- 2.7.4