Add new function to applist
[apps/agl-service-windowmanager.git] / src / applist.cpp
index 7c554e9..8c13f5f 100644 (file)
@@ -42,6 +42,13 @@ void AppList::addClient(const string &appid, const string &role)
     client_dump();
 }
 
+void AppList::addClient(const std::string &appid, unsigned layer, unsigned surface, const std::string &role)
+{
+    shared_ptr<WMClient> client = std::make_shared<WMClient>(appid, layer, surface, role);
+    client_list[appid] = client;
+    client_dump();
+}
+
 void AppList::removeClient(const string &appid)
 {
     client_list.erase(appid);
@@ -53,6 +60,19 @@ bool AppList::contains(const string &appid)
     return (client_list.end() != result) ? true : false;
 }
 
+void AppList::removeSurface(unsigned surface_id){
+    // This function may be very slow
+    bool ret = false;
+    for (auto &x : client_list)
+    {
+        ret = x.second->removeSurfaceIfExist(surface_id);
+        if(ret){
+            HMI_DEBUG("wm", "remove surface %d from Client %s finish", surface_id, x.second->appID().c_str());
+            break;
+        }
+    }
+}
+
 /**
  * @brief  get WMClient object. Before call this function, must call "contains"
  * to check the key is contained, otherwise, you have to take care of std::out_of_range.
@@ -248,7 +268,7 @@ void AppList::client_dump()
     for (const auto &x : client_list)
     {
         const auto &y = x.second;
-        DUMP("APPID : %s", y->appID().c_str());
+        y->dumpInfo();
     }
     DUMP("======= client dump end=====");
 }