fix segmentation fault error
[apps/agl-service-homescreen.git] / src / hs-apprecover.cpp
index adc8a3a..e3a84c6 100644 (file)
@@ -90,7 +90,6 @@ int HS_AppRecover::init(afb_api_t api)
  */
 void HS_AppRecover::startRecovery(afb_api_t api)
 {
-    this->addListenAppId(_listen_all);
     HS_ClientManager::instance()->addListener(this);
 
     for(auto &key : HS_Config::keys_recover_type) {
@@ -142,6 +141,7 @@ void HS_AppRecover::notify(afb_api_t api, std::string appid)
     AFB_INFO("recover appid=[%s].", appid.c_str());
     auto it = m_recovering_set.find(appid);
     if(it != m_recovering_set.end()) {
+        this->removeListenAppId(appid);
         m_recovering_set.erase(appid);
         auto ip = m_recover_apps_list.find(appid);
         if(ip != m_recover_apps_list.end()
@@ -216,6 +216,7 @@ void HS_AppRecover::screenUpdated(struct json_object *obj)
  */
 void HS_AppRecover::startApplication(afb_api_t api, const std::string &appid)
 {
+    this->addListenAppId(appid);
     HS_AfmMainProxy afm_proxy;
     afm_proxy.start(api,  HS_AppInfo::instance()->getAppProperty(appid, _keyId));
 }