aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/window_manager.cpp2
-rw-r--r--src/wm_layer_control.cpp8
-rw-r--r--src/wm_layer_control.hpp1
3 files changed, 11 insertions, 0 deletions
diff --git a/src/window_manager.cpp b/src/window_manager.cpp
index 41fc5c8..e4083d5 100644
--- a/src/window_manager.cpp
+++ b/src/window_manager.cpp
@@ -821,6 +821,8 @@ void WindowManager::surface_properties(unsigned surface_id, unsigned pid)
void WindowManager::removeClient(const string &appid)
{
HMI_DEBUG("Remove clinet %s from list", appid.c_str());
+ auto client = g_app_list.lookUpClient(appid);
+ this->lc->terminateApp(client);
g_app_list.removeClient(appid);
}
diff --git a/src/wm_layer_control.cpp b/src/wm_layer_control.cpp
index 9756d5e..30c37f9 100644
--- a/src/wm_layer_control.cpp
+++ b/src/wm_layer_control.cpp
@@ -428,6 +428,14 @@ WMError LayerControl::visibilityChange(const WMAction& action)
return ret;
}
+void LayerControl::terminateApp(const shared_ptr<WMClient> client)
+{
+ for(auto& l : this->wm_layers)
+ {
+ l->terminateApp(client->layerID());
+ }
+}
+
void LayerControl::dispatchCreateEvent(ilmObjectType object, unsigned id, bool created)
{
if (ILM_SURFACE == object)
diff --git a/src/wm_layer_control.hpp b/src/wm_layer_control.hpp
index 3bf219a..7cccfa0 100644
--- a/src/wm_layer_control.hpp
+++ b/src/wm_layer_control.hpp
@@ -80,6 +80,7 @@ class LayerControl
void undoUpdate();
WMError layoutChange(const WMAction& action);
WMError visibilityChange(const WMAction &action);
+ void terminateApp(const std::shared_ptr<WMClient> client);
// Don't use this function.
void dispatchCreateEvent(ilmObjectType object, unsigned id, bool created);