From: Hokwon Song Date: Mon, 21 Oct 2013 08:01:33 +0000 (+0000) Subject: Merge "Fix alarm defect for applaunch based logic." into tizen_2.2 X-Git-Tag: submit/tizen/20131210.080830^2^2~47 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bd43b5b4458a053152a591fa7d86aad4686c1f2c;hp=ec902df0b2d6ae5e32061a8f2ceea9979640940c;p=platform%2Fframework%2Fnative%2Fappfw.git Merge "Fix alarm defect for applaunch based logic." into tizen_2.2 --- diff --git a/src/system/FSys_AlarmManager.cpp b/src/system/FSys_AlarmManager.cpp index 7ddeb62..bf61df0 100644 --- a/src/system/FSys_AlarmManager.cpp +++ b/src/system/FSys_AlarmManager.cpp @@ -86,6 +86,29 @@ _AlarmManager::~_AlarmManager() alarm_cancel_all(); } +int alarm_callback(alarm_id_t alarmId, void *user_param) +{ + _AlarmManager* pAlarmManager = _AlarmManager::GetInstance(); + pAlarmManager->OnAlarmExpired((int)alarmId); + return 0; +} + +result +_AlarmManager::Construct(void) +{ + int errorCode; + Tizen::App::App* pApp = null; + pApp = Tizen::App::App::GetInstance(); + String appId = pApp->GetAppId(); + std::unique_ptr pAppId(_StringConverter::CopyToCharArrayN(appId)); + + errorCode = alarmmgr_init(pAppId.get()); + SysTryReturnResult(NID_SYS, errorCode == ALARMMGR_RESULT_SUCCESS, E_SYSTEM, "It is failed to init alarmmgr. error [%d]", errorCode); + errorCode = alarmmgr_set_cb(alarm_callback, null); + SysTryReturnResult(NID_SYS, errorCode == ALARMMGR_RESULT_SUCCESS, E_SYSTEM, "It is failed to set cb to alarmmgr. error [%d]", errorCode); + return E_SUCCESS; +} + _AlarmManager* _AlarmManager::GetInstance(void) { @@ -100,11 +123,13 @@ _AlarmManager::GetInstance(void) void _AlarmManager::InitSingleton(void) { - _AlarmManager* pAlarmManager = new (std::nothrow) _AlarmManager(); + result r = E_SUCCESS; + std::unique_ptr<_AlarmManager> pAlarmManager(new (std::nothrow) _AlarmManager()); SysTryReturnVoidResult(NID_SYS, pAlarmManager, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY)); - - __pAlarmManager = pAlarmManager; + r = pAlarmManager->Construct(); + SysTryReturnVoidResult(NID_SYS, r == E_SUCCESS, E_SYSTEM, "It is failed to construct alarm manager."); + __pAlarmManager = pAlarmManager.release(); std::atexit(DestroySingleton); } @@ -163,7 +188,7 @@ _AlarmManager::ReserveAlarm(Tizen::Base::String appId, Tizen::Base::DateTime sta ret = alarmmgr_set_type(pAlarmInfo, ALARM_TYPE_NOLAUNCH); SysTryCatch(NID_SYS, ret == ALARMMGR_RESULT_SUCCESS, r = E_SYSTEM, r, "It is failed to set repeat mode"); - ret = alarmmgr_add_alarm_appsvc_with_localtime(pAlarmInfo,(void *)pBundle, &reservedAlarmId); + ret = alarmmgr_add_alarm_with_localtime(pAlarmInfo, null, &reservedAlarmId); SysTryCatch(NID_SYS, ret == ALARMMGR_RESULT_SUCCESS, r = E_SYSTEM, r, "Alarm creation failed!!! Alrmgr error code is %d", ret); CATCH: diff --git a/src/system/FSys_RuntimeInfoImpl.cpp b/src/system/FSys_RuntimeInfoImpl.cpp index 04a688b..b74a1c4 100644 --- a/src/system/FSys_RuntimeInfoImpl.cpp +++ b/src/system/FSys_RuntimeInfoImpl.cpp @@ -397,11 +397,15 @@ _RuntimeInfoImpl::GetDirectorySize(const char* path) fileLength = strlen(appIdPath.get()) + 29; pFileName = (char*)malloc(fileLength); + SysTryCatch(NID_SYS, pFileName, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "It is not enough memory."); + ret = sprintf(pFileName, "/tmp/size_of_directory_%s.tmp", appIdPath.get()); SysTryCatch(NID_SYS, ret > 0, E_SYSTEM, E_SYSTEM, "It is failed to write file path."); commandLength = strlen(pFileName) + 8; pCommand = (char*) malloc(commandLength); + SysTryCatch(NID_SYS, pCommand, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "It is not enough memory."); + ret = sprintf(pCommand, "rm -rf %s", pFileName); SysTryCatch(NID_SYS, ret > 0, E_SYSTEM, E_SYSTEM, "It is failed to write remove pCommand."); @@ -415,6 +419,8 @@ _RuntimeInfoImpl::GetDirectorySize(const char* path) commandLength = strlen(pFileName) + strlen(path) + 16; pCommand = (char*)malloc(commandLength); + SysTryCatch(NID_SYS, pCommand, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "It is not enough memory."); + ret = sprintf(pCommand, "du -skb -P %s >> %s", path, pFileName); SysTryCatch(NID_SYS, ret > 0, E_SYSTEM, E_SYSTEM, "It is failed to write du pCommand."); @@ -440,7 +446,7 @@ CATCH: } if (pCommand) { - free(pFileName); + free(pCommand); } if (pFile) { diff --git a/src/system/inc/FSys_AlarmManager.h b/src/system/inc/FSys_AlarmManager.h index 9fea083..66cc3eb 100644 --- a/src/system/inc/FSys_AlarmManager.h +++ b/src/system/inc/FSys_AlarmManager.h @@ -33,9 +33,9 @@ class _AlarmManager { private: _AlarmManager(); - ~_AlarmManager(); -public: +public: + ~_AlarmManager(); result RegisterAlarm(_AlarmImpl* pAlarmImpl); result UnregisterAlarm(_AlarmImpl* pAlarmImpl); result UpdateAlarm(_AlarmImpl* pAlarmImpl); @@ -45,6 +45,7 @@ public: static _AlarmManager* GetInstance(void); private: + result Construct(void); int ReserveAlarm(Tizen::Base::String appId, Tizen::Base::DateTime startTime, int period); result AddAlarmList(int alarmId, int period, Tizen::Base::String appId, Tizen::Base::DateTime* endTime); result RemoveAlarmList(int alarmId);