From a808e19371d52296de3e0f8b2df334dba1707946 Mon Sep 17 00:00:00 2001 From: Young Ik Cho Date: Tue, 29 Oct 2013 19:31:52 +0900 Subject: [PATCH] fix first AppControl result handling Change-Id: I267d40ceaabe429abfd345f7c957320c1ea3e360 Signed-off-by: Young Ik Cho --- packaging/osp-appfw.spec | 1 - src/app/FApp_AppControlProviderManagerImpl.cpp | 48 ++++++++++++++++++++------ src/app/FApp_AppControlProviderManagerImpl.h | 8 +++-- 3 files changed, 43 insertions(+), 14 deletions(-) diff --git a/packaging/osp-appfw.spec b/packaging/osp-appfw.spec index 8d447b4..255266f 100644 --- a/packaging/osp-appfw.spec +++ b/packaging/osp-appfw.spec @@ -207,7 +207,6 @@ chmod 444 /opt/usr/etc/clocale.list %{_includedir}/osp/security/* %{_includedir}/osp/system/* %{_includedir}/osp/text/* -%{_includedir}/osp/server/appfw/* %{_includedir}/osp/server/* %{_libdir}/pkgconfig/osp-appfw.pc %{_libdir}/pkgconfig/osp-appfw-server.pc diff --git a/src/app/FApp_AppControlProviderManagerImpl.cpp b/src/app/FApp_AppControlProviderManagerImpl.cpp index 71aa878..1bc79a9 100644 --- a/src/app/FApp_AppControlProviderManagerImpl.cpp +++ b/src/app/FApp_AppControlProviderManagerImpl.cpp @@ -78,15 +78,14 @@ _AppControlProviderManagerImpl::SendAppControlResult(RequestId reqId, const ILis result r = resArg.ConstructResult(arg, pResultList); if (IsFailed(r)) { + // erase _AppArg after sending the result back to the caller + pAppMgr->__resultManager.RemoveItem(reqId); + SysPropagate(NID_APP, r); return r; } - const bool isService = _AppInfo::GetAppType() & _APP_TYPE_SERVICE_APP; - - //resArg.Print(); - r = _Aul::SendResult(resArg.GetBundle(), static_cast(0), _AppInfo::IsSubMode(), isService); - SysLog(NID_APP, "Sent AppControl event for %d.", reqId); + r = SendAppControlResultPrimitive(reqId, resArg, 0); // erase _AppArg after sending the result back to the caller pAppMgr->__resultManager.RemoveItem(reqId); @@ -110,6 +109,9 @@ _AppControlProviderManagerImpl::SendAppControlResult(RequestId reqId, AppCtrlRes result r = resArg.ConstructResult(arg, pResultMap); if (IsFailed(r)) { + // erase _AppArg after sending the result back to the caller + pAppMgr->__resultManager.RemoveItem(reqId); + SysPropagate(NID_APP, r); return r; } @@ -138,11 +140,7 @@ _AppControlProviderManagerImpl::SendAppControlResult(RequestId reqId, AppCtrlRes break; } - const bool isService = _AppInfo::GetAppType() & _APP_TYPE_SERVICE_APP; - - //resArg.Print(); - r = _Aul::SendResult(resArg.GetBundle(), static_cast(res), _AppInfo::IsSubMode(), isService); - SysLog(NID_APP, "Sent AppControl event for %d.", reqId); + r = SendAppControlResultPrimitive(reqId, resArg, res); // erase _AppArg after sending the result back to the caller pAppMgr->__resultManager.RemoveItem(reqId); @@ -150,6 +148,36 @@ _AppControlProviderManagerImpl::SendAppControlResult(RequestId reqId, AppCtrlRes return r; } + +result +_AppControlProviderManagerImpl::SendAppControlResultPrimitive(RequestId reqId, _AppArg& arg, int ret) +{ + static bool firstRequestSent = false; + + if (reqId == 0 && firstRequestSent) + { + SysLog(NID_APP, "Sent main AppControl request already."); + + return E_SUCCESS; + } + else + { + if (reqId == 0) + { + firstRequestSent = true; + } + + const bool isService = _AppInfo::GetAppType() & _APP_TYPE_SERVICE_APP; + + //resArg.Print(); + result r = _Aul::SendResult(arg.GetBundle(), static_cast(ret), _AppInfo::IsSubMode(), isService); + SysLog(NID_APP, "Sent AppControl event for %d.", reqId); + + return r; + } +} + + AppId _AppControlProviderManagerImpl::GetClientAppId(RequestId reqId) const { diff --git a/src/app/FApp_AppControlProviderManagerImpl.h b/src/app/FApp_AppControlProviderManagerImpl.h index 58448ae..13db532 100644 --- a/src/app/FApp_AppControlProviderManagerImpl.h +++ b/src/app/FApp_AppControlProviderManagerImpl.h @@ -27,7 +27,6 @@ #include #include #include -#include namespace Tizen { namespace Base { @@ -36,12 +35,14 @@ class ByteBuffer; }} namespace Tizen { namespace Base { namespace Collection { class IList; } } } +namespace Tizen { namespace Base { namespace Collection { class IMap; } } } namespace Tizen { namespace App { class AppControlProviderManager; class IAppControlProviderEventListener; +class _AppArg; /** * @class _AppControlProviderManagerImpl @@ -50,7 +51,6 @@ class IAppControlProviderEventListener; * The %_AppControlProviderManagerImpl class manages all the application controls. */ class _AppControlProviderManagerImpl - : public Tizen::Base::Object { public: @@ -81,7 +81,7 @@ private: /** * This is the destructor for this class. */ - virtual ~_AppControlProviderManagerImpl(void); + ~_AppControlProviderManagerImpl(void); /** * This is the default copy constructor for this class. @@ -93,6 +93,8 @@ private: */ _AppControlProviderManagerImpl& operator =(const _AppControlProviderManagerImpl& rhs); + result SendAppControlResultPrimitive(RequestId reqId, _AppArg& arg, int ret); + friend class AppControlProviderManager; }; -- 2.7.4