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<appsvc_result_val>(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);
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;
}
break;
}
- const bool isService = _AppInfo::GetAppType() & _APP_TYPE_SERVICE_APP;
-
- //resArg.Print();
- r = _Aul::SendResult(resArg.GetBundle(), static_cast<appsvc_result_val>(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);
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<appsvc_result_val>(ret), _AppInfo::IsSubMode(), isService);
+ SysLog(NID_APP, "Sent AppControl event for %d.", reqId);
+
+ return r;
+ }
+}
+
+
AppId
_AppControlProviderManagerImpl::GetClientAppId(RequestId reqId) const
{