From: jungmin76.park Date: Wed, 10 Jul 2013 13:51:02 +0000 (+0900) Subject: fix not to retry, when osp-appwidget-service isn't running nor system isn't initializing. X-Git-Tag: accepted/tizen/20130912.150013^2~34^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e2ac41b46720fd85b9dca589914b85abce46a6f4;p=platform%2Fframework%2Fnative%2Fshell.git fix not to retry, when osp-appwidget-service isn't running nor system isn't initializing. Change-Id: Ibd315baa18a67e34bfe9a6f8d69e8b9353f34cb5 Signed-off-by: jungmin76.park --- diff --git a/src/FShell_AppWidgetManagerProxy.cpp b/src/FShell_AppWidgetManagerProxy.cpp index 3dda585..0df926d 100644 --- a/src/FShell_AppWidgetManagerProxy.cpp +++ b/src/FShell_AppWidgetManagerProxy.cpp @@ -24,6 +24,8 @@ #include #include #include +#include +#include #include #include #include "FShell_AppWidgetProviderManagerImpl.h" @@ -33,7 +35,8 @@ namespace Tizen { namespace Shell { namespace { -const char IPC_SERVER_NAME[] = "osp.shell.ipcserver.appwidgetmanager"; +static const wchar_t _APPID_OSP_APPWIDGET_SERVICE[] = L"gi2qxenosh.osp-appwidget-service"; +static const char IPC_SERVER_NAME[] = "osp.shell.ipcserver.appwidgetmanager"; }; using namespace Tizen::Io; @@ -80,34 +83,42 @@ _AppWidgetManagerProxy::GetInstance() return __pAppWidgetProxy.get(); } +bool IsSystemInitializing(void) +{ + static const wchar_t _BOOT_STATUS_KEY[] = L"http://tizen.org/runtime/system.status"; + static const wchar_t _BOOT_STATUS_INITIALIZING[] = L"initializing"; + + String status; + Tizen::System::RuntimeInfo::GetValue(_BOOT_STATUS_KEY, status); + + if (status == _BOOT_STATUS_INITIALIZING) + { + return true; + } + + return false; +} + result _AppWidgetManagerProxy::Construct(void) { - SysLog(NID_SHELL, "Enter."); + bool isServiceRunning = Tizen::App::AppManager::GetInstance()->IsRunning(_APPID_OSP_APPWIDGET_SERVICE); + bool canConstruct = ( isServiceRunning || IsSystemInitializing() ) ? true : false; + if (canConstruct == false) + { + SysLog(NID_SHELL, "%ls is not running.", _APPID_OSP_APPWIDGET_SERVICE); + return E_SYSTEM; + } std::unique_ptr<_IpcClient> pIpcClient(new (std::nothrow) _IpcClient() ); SysTryReturnResult(NID_SHELL, pIpcClient, E_OUT_OF_MEMORY, "_IpcClient creation failed."); - const int MAX_TRY_COUNT = 2; - const int TRY_SLEEP_TIME = 65; + result r = pIpcClient->Construct(IPC_SERVER_NAME, this); + SysTryReturnResult(NID_SHELL, !IsFailed(r), E_SYSTEM, "[%s] Failed to connect service.(%s)", GetErrorMessage(r), IPC_SERVER_NAME); - int count = 0; - while (true) - { - result r = pIpcClient->Construct(IPC_SERVER_NAME, this); - if (r == E_SUCCESS) - { - SysLog(NID_APP, "Succeeded in connecting service(%s)", IPC_SERVER_NAME); - __pIpcClient = pIpcClient.release(); - return E_SUCCESS; - } + __pIpcClient = pIpcClient.release(); - SysTryReturn(NID_APP, ++count < MAX_TRY_COUNT, E_SYSTEM, r, "[%s] Failed to connect service.(%s)", GetErrorMessage(r), IPC_SERVER_NAME); - - Tizen::Base::Runtime::Thread::Sleep(TRY_SLEEP_TIME); - } - - SysLog(NID_SHELL, "Exit."); + SysLog(NID_SHELL, "Succeeded in connecting service(%s)", IPC_SERVER_NAME); return E_SUCCESS; } diff --git a/src/FShell_AppWidgetProviderManagerImpl.cpp b/src/FShell_AppWidgetProviderManagerImpl.cpp index 75a29fc..28bd420 100644 --- a/src/FShell_AppWidgetProviderManagerImpl.cpp +++ b/src/FShell_AppWidgetProviderManagerImpl.cpp @@ -198,10 +198,10 @@ _AppWidgetProviderManagerImpl::IsPackagedWithTPK(const AppId& appId) { String packageId = _PackageManagerImpl::GetPackageIdByAppId(appId); std::unique_ptr pInfo( _PackageManagerImpl::GetInstance()->GetPackageInfoN(packageId) ); - SysTryReturn(NID_APP, pInfo != null, false, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()) ); + SysTryReturn(NID_SHELL, pInfo != null, false, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()) ); const _PackageInfoImpl* pPkgInfo = _PackageInfoImpl::GetInstance(pInfo.get()); - SysTryReturn(NID_APP, pPkgInfo != null, false, E_SYSTEM, "Invalid PackageInfo instance."); + SysTryReturn(NID_SHELL, pPkgInfo != null, false, E_SYSTEM, "Invalid PackageInfo instance."); static const String TPK_TYPE = L"tpk"; if( pPkgInfo && pPkgInfo->GetAppType() == TPK_TYPE ) @@ -727,8 +727,7 @@ _AppWidgetProviderManagerImpl::RemoveAppWidget(const String& instanceId, int pro AppWidgetProvider* pAppWidgetProvider = null; __appwidgetProviders.GetValue(instanceId, pAppWidgetProvider); - result r = __appwidgetProviders.Remove(instanceId); - SysLog(NID_SHELL, "%s", GetErrorMessage(r) ); + __appwidgetProviders.Remove(instanceId); if (pAppWidgetProvider != null) { @@ -1094,10 +1093,10 @@ void _AppWidgetManagerEvent::FireImpl(Tizen::Base::Runtime::IEventListener& listener, const Tizen::Base::Runtime::IEventArg& arg) { _AppWidgetManagerEventListener* pListener = dynamic_cast<_AppWidgetManagerEventListener*>(&listener); - SysTryReturnVoidResult(NID_APP, pListener != null, E_INVALID_STATE, "Invalid listener : listener(0x%x), arg(0x%x)", &listener, &arg); + SysTryReturnVoidResult(NID_SHELL, pListener != null, E_INVALID_STATE, "Invalid listener : listener(0x%x), arg(0x%x)", &listener, &arg); const _AppWidgetManagerEventArg* pEventArg = dynamic_cast(&arg); - SysTryReturnVoidResult(NID_APP, pEventArg != null, E_INVALID_STATE, "Invalid arg : listener(0x%x), arg(0x%x)", &listener, &arg); + SysTryReturnVoidResult(NID_SHELL, pEventArg != null, E_INVALID_STATE, "Invalid arg : listener(0x%x), arg(0x%x)", &listener, &arg); pListener->OnAppWidgetManagerEventRecieved(pEventArg->GetOperation(), pEventArg->GetExtra());