From: Joohyun Kim Date: Fri, 2 Aug 2013 08:41:49 +0000 (+0900) Subject: Fix Exception issue on Add and remove event listener X-Git-Tag: submit/tizen/20131210.080830^2^2~201^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=50960c2e0b2f3a0db5b5e3126000a690ddf7e136;p=platform%2Fframework%2Fnative%2Fappfw.git Fix Exception issue on Add and remove event listener Change-Id: Ie3f80209b2ec543dd8adad21394b4451b2160a12 Signed-off-by: Joohyun Kim --- diff --git a/src/system/FSys_SettingClientEx.cpp b/src/system/FSys_SettingClientEx.cpp index 96cb239..bcaa8bc 100644 --- a/src/system/FSys_SettingClientEx.cpp +++ b/src/system/FSys_SettingClientEx.cpp @@ -1001,10 +1001,13 @@ _SettingClientEx::AddSettingEventListener(ISettingEventListener& listener) SysTryReturnResult(NID_SYS, pSettingEvent != null, E_SYSTEM, "listener event is not ready."); result r = pSettingEvent->AddSettingEventListener(listener); - if (r == E_INVALID_OPERATION) + + if (r == E_OBJ_ALREADY_EXIST) { - r = E_SYSTEM; + SysLogException(NID_SYS, E_OBJ_ALREADY_EXIST, "It is already registered."); + return E_OBJ_ALREADY_EXIST; } + SysTryReturnResult(NID_SYS, r == E_SUCCESS, E_SYSTEM, "It is failed to add event listener."); r = SubscribeEvent(); @@ -1021,7 +1024,13 @@ _SettingClientEx::RemoveSettingEventListener(ISettingEventListener& listener) SysTryReturnResult(NID_SYS, pSettingEvent != null, E_SYSTEM, "listener event is not ready."); result r = pSettingEvent->RemoveSettingEventListener(listener); - SysTryReturnResult(NID_SYS, r == E_SUCCESS, E_SYSTEM, "It is failed to remove event listener."); + + if (r == E_OBJ_NOT_FOUND) + { + SysLogException(NID_SYS, E_OBJ_NOT_FOUND, "It is not registered."); + return E_OBJ_NOT_FOUND; + } + SysTryReturnResult(NID_SYS, r == E_SUCCESS, E_SYSTEM, "It is failed to remove event listener.[%s]", GetErrorMessage(r)); r = SubscribeEvent(); SysTryReturnResult(NID_SYS, r == E_SUCCESS, r, "It is failed to request to remove event listener."); diff --git a/src/system/FSys_SettingClientEx.h b/src/system/FSys_SettingClientEx.h index 38bbfa2..bd0f082 100644 --- a/src/system/FSys_SettingClientEx.h +++ b/src/system/FSys_SettingClientEx.h @@ -69,6 +69,10 @@ public: result RemoveSettingEventListener(ISettingEventListener& listener) { result r = RemoveListener(listener); + if(r == E_OBJ_NOT_FOUND) + { + return E_OBJ_NOT_FOUND; + } SysTryReturnResult(NID_SYS, __count > 0, E_SYSTEM, "Listenr count[%d] is error.", __count); if(r == E_SUCCESS) {