New API: setRenderOrder
[apps/agl-service-windowmanager.git] / src / applist.cpp
index 93c90ac..888ab71 100644 (file)
@@ -73,10 +73,10 @@ void AppList::addClient(const string &appid, unsigned layer, unsigned surface, c
     this->clientDump();
 }
 
-void AppList::addClient(const string &appid, unsigned layer, const string& layer_name, unsigned surface, const string &role)
+void AppList::addClient(const string &appid, unsigned layer, const string &role)
 {
     std::lock_guard<std::mutex> lock(this->mtx);
-    shared_ptr<WMClient> client = std::make_shared<WMClient>(appid, layer, layer_name, surface, role);
+    shared_ptr<WMClient> client = std::make_shared<WMClient>(appid, layer, role);
     this->app2client[appid] = client;
     this->clientDump();
 }
@@ -140,7 +140,14 @@ void AppList::removeSurface(unsigned surface){
  */
 shared_ptr<WMClient> AppList::lookUpClient(const string &appid)
 {
-    return this->app2client.at(appid);
+    if(this->app2client.count(appid) != 0)
+    {
+        return this->app2client.at(appid);
+    }
+    else
+    {
+        return nullptr;
+    }
 }
 
 /**
@@ -167,7 +174,7 @@ int AppList::countClient() const
  * @return    AppID
  * @attention If AppID is not found, param found will be false.
  */
-string AppList::getAppID(unsigned surface, const string& role, bool* found) const
+/* string AppList::getAppID(unsigned surface, const string& role, bool* found) const
 {
     *found = false;
     for (const auto &x : this->app2client)
@@ -178,6 +185,19 @@ string AppList::getAppID(unsigned surface, const string& role, bool* found) cons
         }
     }
     return string("");
+} */
+
+string AppList::getAppID(unsigned surface, bool* found) const
+{
+    *found = false;
+    for (const auto &x : this->app2client)
+    {
+        if(x.second->surfaceID() == surface){
+            *found = true;
+            return x.second->appID();
+        }
+    }
+    return string("");
 }
 
 WMError AppList::popFloatingSurface(unsigned pid, unsigned *surface)