send showWindow event when app start over
[apps/agl-service-homescreen.git] / src / hs-clientmanager.cpp
index 4a17b72..89b0ae2 100644 (file)
@@ -17,6 +17,7 @@
 #include <cstring>
 #include <algorithm>
 #include "hs-clientmanager.h"
+#include "hs-apprecover.h"
 
 static const char _homescreen[] = "homescreen";
 
@@ -37,7 +38,7 @@ static void cbRemoveClientCtxt(void *data)
  * None
  *
  */
-HS_ClientManager::HS_ClientManager() : app_recover(nullptr)
+HS_ClientManager::HS_ClientManager()
 {
 }
 
@@ -187,7 +188,7 @@ int HS_ClientManager::handleRequest(afb_req_t request, const char *verb, const c
                 appid2ctxt[appid] = createClientCtxt(request, appid);
                 HS_Client* client = addClient(request, appid);
                 ret = client->handleRequest(request, "subscribe");
-                registerApplication(appid);
+                checkRegisterApp(std::string(appid));
             }
             else {
                 AFB_NOTICE("not exist session");
@@ -235,19 +236,24 @@ int HS_ClientManager::pushEvent(const char *event, struct json_object *param, st
 }
 
 /**
- * register recovered application
+ * check register application
  *
  * #### Parameters
- *  - appid : application id
+ *  - appid : register application's id
  *
  * #### Return
  * None
  *
  */
-void HS_ClientManager::registerApplication(std::string appid)
+void HS_ClientManager::checkRegisterApp(const std::string &appid)
 {
-    if(app_recover != nullptr && app_recover->registerRecoveredApp(appid)) {
-        delete app_recover;
-        app_recover = nullptr;
+    if(HS_AppRecover::instance()->registerRecoveredApp(appid)) {
+        AFB_NOTICE("register recover application.");
+        return;
+    }
+
+    if(startup_appid == appid) {
+        startup_appid.clear();
+        pushEvent("showWindow", nullptr, appid);
     }
 }
\ No newline at end of file