From 3c13e1181592d860699c01ec0902e83d32283a30 Mon Sep 17 00:00:00 2001 From: "kyeongwoo.lee" Date: Fri, 12 Jul 2013 16:17:24 +0900 Subject: [PATCH] Fixed prevent issues Change-Id: I3428232c15910e23813c7a7925a30e11d326d29c --- inc/FShell_AppWidgetContext.h | 40 ++++++++--------- src/FShell_AppWidgetContext.cpp | 78 +++++++++++++++++++++++++++++----- src/FShell_AppWidgetManagerService.cpp | 23 +++++----- 3 files changed, 98 insertions(+), 43 deletions(-) diff --git a/inc/FShell_AppWidgetContext.h b/inc/FShell_AppWidgetContext.h index 412f2f5..2d8ef01 100644 --- a/inc/FShell_AppWidgetContext.h +++ b/inc/FShell_AppWidgetContext.h @@ -55,6 +55,14 @@ extern const int UPDATE_PERIOD_MSEC_MIN; class _AppWidgetContext; class _AppWidgetPopupContext; +enum _ConnectionState +{ + CONNECTION_STATE_NONE = 0, + CONNECTION_STATE_CONNECTING, + CONNECTION_STATE_CONNECTED, + CONNECTION_STATE_DISCONNECTED +}; + //////////////////////////////////////////////// // _AppContext //////////////////////////////////////////////// @@ -63,29 +71,21 @@ class _AppContext { public: - enum ConnectionState - { - NONE = 0, - CONNECTING, - CONNECTED, - DISCONNECTED, - }; - -public: - _AppContext(void):__isWaitingResult(false), __connectionState(NONE){} - ~_AppContext(void){} - ConnectionState GetConnectionState(void) const { return __connectionState; } - void SetConnectionState(ConnectionState state) { __connectionState = state; } - int GetClientId(void) const { return __ipcClientId; } - void SetClientId(int clientId) { __ipcClientId = clientId; } + _AppContext(void); + ~_AppContext(void); -public: - bool __isWaitingResult; - //Tizen::Base::Collection::ArrayListT<_AppWidgetContext*> __appWidetContextList; + _ConnectionState GetConnectionState(void) const; + void SetConnectionState(_ConnectionState state); + int GetClientId(void) const; + void SetClientId(int clientId); + void SetWaitingStatus(bool status); + bool GetWaitingStatus(void) const; private: - ConnectionState __connectionState; - int __ipcClientId; + bool __isWaitingResult; + int __ipcClientId; + _ConnectionState __connectionState; + Tizen::Base::Collection::ArrayListT<_AppWidgetContext*> __appWidetContextList; }; //////////////////////////////////////////////// diff --git a/src/FShell_AppWidgetContext.cpp b/src/FShell_AppWidgetContext.cpp index dcd7445..4e7495e 100644 --- a/src/FShell_AppWidgetContext.cpp +++ b/src/FShell_AppWidgetContext.cpp @@ -68,6 +68,61 @@ const wchar_t APPWIDGET_ON_TOUCH[] = L"http://tizen.org/appcontrol/appwidget/tou const int UPDATE_PERIOD_MSEC_MIN = 1800000; // 30min +////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// _AppContext class +////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +_AppContext::_AppContext(void) + :__isWaitingResult(false) + ,__ipcClientId(0) + ,__connectionState(CONNECTION_STATE_NONE) +{ + +} + +_AppContext::~_AppContext(void) +{ + +} + +_ConnectionState +_AppContext::GetConnectionState(void) const +{ + return __connectionState; +} + +void +_AppContext::SetConnectionState(_ConnectionState state) +{ + __connectionState = state; +} + +int +_AppContext::GetClientId(void) const +{ + return __ipcClientId; +} + +void +_AppContext::SetClientId(int clientId) +{ + __ipcClientId = clientId; +} + +void +_AppContext::SetWaitingStatus(bool status) +{ + __isWaitingResult = status; +} + +bool +_AppContext::GetWaitingStatus(void) const +{ + return __isWaitingResult; +} + +////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// _AppWidgetContext class +////////////////////////////////////////////////////////////////////////////////////////////////////////////////// _AppWidgetContext::_AppWidgetContext(_AppContext* pAppContext, const String& userInfo, const String& providerId, const String& instanceId, int width, int height, int period, int priority) :__isTouchAvailable(false) ,__hasPendingRequest(false) @@ -98,8 +153,11 @@ _AppWidgetContext::_AppWidgetContext(_AppContext* pAppContext, const String& use SystemTime::GetTicks(this->__lastUpdatedTime); - __updateTimer.Construct(*this); - __updateTimer.StartAsRepeatable(__updateMillis); + result r = __updateTimer.Construct(*this); + SysTryReturnVoidResult(NID_SHELL, !IsFailed(r), E_SYSTEM, ""); + + r = __updateTimer.StartAsRepeatable(__updateMillis); + SysTryReturnVoidResult(NID_SHELL, !IsFailed(r), E_SYSTEM, ""); } __pPendingTouchEventList = new (nothrow) ArrayListT(); @@ -353,14 +411,14 @@ _AppWidgetContext::SendPendingEvent(void) if (pEvent == null) { SysLog(NID_SHELL, "SendPendingEvent by IPC [0 existed.]"); - GetAppContext()->__isWaitingResult = false; + GetAppContext()->SetWaitingStatus(false); return E_SYSTEM; } SysLog(NID_SHELL, "SendPendingEvent by IPC [%d existed.]", __pPendingEventList->GetCount()); __pPendingEventList->RemoveAt(0); result r = _AppWidgetRequestHelper::SendIpcRequest(GetClientId(), pEvent->operation, pEvent->pArg); - GetAppContext()->__isWaitingResult = false; + GetAppContext()->SetWaitingStatus(false); delete pEvent; SysTryReturnResult(NID_SHELL, !IsFailed(r), E_SYSTEM, "SendIpcRequest failed."); @@ -383,7 +441,7 @@ _AppWidgetContext::SendPendingTouchEvent(void) void _AppWidgetContext::OnTouchEventReceived(buffer_event event, double timestamp, double x, double y) { - if (__pAppContext->GetConnectionState() == _AppContext::CONNECTED && __isTouchAvailable) + if (__pAppContext->GetConnectionState() == CONNECTION_STATE_CONNECTED && __isTouchAvailable) { SysLog(NID_SHELL, "%d, %f, %f", event, x, y); AppWidgetManagerService::GetInstance()->SendTouchEvent(GetClientId(), GetInstanceId(), event, timestamp, x, y); @@ -413,18 +471,18 @@ _AppWidgetContext::SendRequestToApp(const AppId& appId, const String& operation, { result r = E_SUCCESS; - if ( __pAppContext->GetConnectionState() == _AppContext::NONE || __pAppContext->GetConnectionState() == _AppContext::DISCONNECTED) + if ( __pAppContext->GetConnectionState() == CONNECTION_STATE_NONE || __pAppContext->GetConnectionState() == CONNECTION_STATE_DISCONNECTED) { SysLog(NID_SHELL, "The application is not running."); result r = _AppWidgetRequestHelper::SendAppControlRequest(appId, operation, pArgs); SysTryReturn(NID_SHELL, !IsFailed(r), r, r, "[%s] Failed to SendRequestToApp", GetErrorMessage(r)); - __pAppContext->__isWaitingResult = true; - __pAppContext->SetConnectionState(_AppContext::CONNECTING); + __pAppContext->SetWaitingStatus(true); + __pAppContext->SetConnectionState(CONNECTION_STATE_CONNECTING); } else { - if ( __pAppContext->GetConnectionState() == _AppContext::CONNECTING || __pAppContext->__isWaitingResult == true) + if ( __pAppContext->GetConnectionState() == CONNECTION_STATE_CONNECTING || __pAppContext->GetWaitingStatus() == true) { SysLog(NID_SHELL, "The application is running but IPC is not connected yet."); __pPendingEventList->Add(new (nothrow) PendingEvent(operation, pArgs)); @@ -436,7 +494,7 @@ _AppWidgetContext::SendRequestToApp(const AppId& appId, const String& operation, pArgs->RemoveAll(true); delete pArgs; - __pAppContext->__isWaitingResult = true; + __pAppContext->SetWaitingStatus(true); } } diff --git a/src/FShell_AppWidgetManagerService.cpp b/src/FShell_AppWidgetManagerService.cpp index 009484c..b35982e 100644 --- a/src/FShell_AppWidgetManagerService.cpp +++ b/src/FShell_AppWidgetManagerService.cpp @@ -151,8 +151,13 @@ AppWidgetManagerService::AppWidgetDisconnected(struct event_arg *arg, void* data void AppWidgetManagerService::StartPingTimer(void) { - __pingTimer.Construct(*this); - __pingTimer.StartAsRepeatable(TIMER_DURATION_PING); + result r = E_SUCCESS; + + r = __pingTimer.Construct(*this); + SysTryReturnVoidResult(NID_SHELL, !IsFailed(r), E_SYSTEM, ""); + + r = __pingTimer.StartAsRepeatable(TIMER_DURATION_PING); + SysTryReturnVoidResult(NID_SHELL, !IsFailed(r), E_SYSTEM, ""); } void @@ -205,7 +210,7 @@ AppWidgetManagerService::OnIpcClientConnected(const _IpcServer& server, int clie if (pAppContext) { pAppContext->SetClientId(clientId); - pAppContext->SetConnectionState(_AppContext::CONNECTED); + pAppContext->SetConnectionState(CONNECTION_STATE_CONNECTED); } } @@ -220,7 +225,7 @@ AppWidgetManagerService::OnIpcClientDisconnected(const _IpcServer& server, int c if (pAppContext) { pAppContext->SetClientId(-1); - pAppContext->SetConnectionState(_AppContext::DISCONNECTED); + pAppContext->SetConnectionState(CONNECTION_STATE_DISCONNECTED); } unique_ptr< IMapEnumeratorT > pAppWidgetContextEnum(__appWidgetContextList.GetMapEnumeratorN()); @@ -744,7 +749,7 @@ AppWidgetManagerService::SendResult(const Tizen::App::AppId& appId, const Tizen: pAppWidgetContextEnum->GetValue(pAppWidgetContext); SysSecureTryReturnResult(NID_SHELL, pAppWidgetContext, E_SYSTEM, "pAppWidgetContext is null for (%ls) (%ls)", appId.GetPointer(), instanceId.GetPointer()); - if (pAppWidgetContext->GetAppContext()->GetConnectionState() == _AppContext::NONE) + if (pAppWidgetContext->GetAppContext()->GetConnectionState() == CONNECTION_STATE_NONE) { break; } @@ -804,17 +809,9 @@ AppWidgetManagerService::RequestPendingEvent(void) r = pContext->SendPendingEvent(); if (r == E_SUCCESS) { - (pContext->GetAppContext())->__isWaitingResult = false; SysLog(NID_SHELL, "Found pending event."); break; } - else - { - if (E_DATA_NOT_FOUND) - { - (pContext->GetAppContext())->__isWaitingResult = false; - } - } } return E_SUCCESS; -- 2.7.4