Remove floating surfaces when activate surface
[apps/agl-service-windowmanager.git] / src / applist.cpp
index 99f7fe4..b5c1681 100644 (file)
@@ -91,7 +91,7 @@ unsigned AppList::currentRequestNumber() const
     return this->current_req;
 }
 
-WMError AppList::lookUpFloatingSurface(unsigned pid, unsigned *surface)
+WMError AppList::popFloatingSurface(unsigned pid, unsigned *surface)
 {
     WMError ret = WMError::NO_ENTRY;
 
@@ -108,7 +108,7 @@ WMError AppList::lookUpFloatingSurface(unsigned pid, unsigned *surface)
     return ret;
 }
 
-WMError AppList::lookUpFloatingSurface(const std::string &appid, unsigned *surface)
+WMError AppList::popFloatingSurface(const std::string &appid, unsigned *surface)
 {
     HMI_ERROR("wm", "This function is not implemented");
     return WMError::SUCCESS;
@@ -124,6 +124,19 @@ void AppList::addFloatingSurface(unsigned surface, unsigned pid)
     this->floating_surfaces.push_back(fsurface);
 }
 
+void AppList::removeFloatingSurface(unsigned surface)
+{
+    for (auto itr = this->floating_surfaces.begin(); itr != this->floating_surfaces.end(); ++itr)
+    {
+        if (surface == itr->surface_id)
+        {
+            HMI_DEBUG("wm", "Erase surface %d", itr->surface_id);
+            itr = this->floating_surfaces.erase(itr);
+            break;
+        }
+    }
+}
+
 WMError AppList::appendRole(const std::string &id, const std::string &role, unsigned surface)
 {
     WMError wm_err = WMError::NO_ENTRY;