Ensure wm_subscribe returns the correct value
[apps/agl-service-windowmanager.git] / src / window_manager.cpp
index f9070f6..7fc47c3 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2017 TOYOTA MOTOR CORPORATION
+ * Copyright (c) 2019 Konsulko Group
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -492,6 +493,7 @@ bool WindowManager::api_subscribe(afb_req_t req, EventType event_id)
     if(event_id < Event_Val_Min || event_id > Event_Val_Max)
     {
         HMI_ERROR("not defined in Window Manager", event_id);
+        free(appid);
         return ret;
     }
     HMI_INFO("%s subscribe %s : %d", appid, kListEventName[event_id].c_str(), event_id);
@@ -508,17 +510,17 @@ bool WindowManager::api_subscribe(afb_req_t req, EventType event_id)
     else if(appid)
     {
         string id = appid;
-        free(appid);
         if(!g_app_list.contains(id))
         {
             g_app_list.addClient(id);
         }
-        g_app_list.lookUpClient(id)->subscribe(req, kListEventName[event_id]);
+        ret = g_app_list.lookUpClient(id)->subscribe(req, kListEventName[event_id]);
     }
     else
     {
         HMI_ERROR("appid is not set");
     }
+    free(appid);
     return ret;
 }
 
@@ -713,7 +715,8 @@ void WindowManager::processError(WMError error)
 
 unsigned WindowManager::generateLayerForClient(const string& role)
 {
-    unsigned lid = this->lc->getNewLayerID(role);
+    string l_name;
+    unsigned lid = this->lc->getNewLayerID(role, &l_name);
     if (lid == 0)
     {
         // register drawing_name as fallback and make it displayed.
@@ -724,7 +727,10 @@ unsigned WindowManager::generateLayerForClient(const string& role)
             return lid;
         }
     }
-    this->lc->createNewLayer(lid);
+
+    // TODO: remote layer name is fixed
+    this->lc->createNewLayer(lid, ("Remote" == l_name));
+
     // add client into the db
     return lid;
 }