X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fwindow_manager.cpp;h=62bbbcb59089b6360359ab9481070580ca8a7d43;hb=5c74a62af029d1138416a76a6d44d1711ce97ff6;hp=bba753177ef496c622cc9d510c90a85136f31a4d;hpb=9302f3a5e63cbc83f019cbeff13cc1279d9cfeae;p=apps%2Fagl-service-windowmanager-2017.git diff --git a/src/window_manager.cpp b/src/window_manager.cpp index bba7531..62bbbcb 100644 --- a/src/window_manager.cpp +++ b/src/window_manager.cpp @@ -185,12 +185,12 @@ int WindowManager::init() // This protocol needs the output, so lets just add our mapping here... this->controller->add_proxy_to_id_mapping( - this->outputs.back()->proxy.get(), + this->outputs.front()->proxy.get(), wl_proxy_get_id(reinterpret_cast( - this->outputs.back()->proxy.get()))); + this->outputs.front()->proxy.get()))); // Create screen - this->controller->create_screen(this->outputs.back()->proxy.get()); + this->controller->create_screen(this->outputs.front()->proxy.get()); // Set display to controller this->controller->display = this->display; @@ -434,14 +434,14 @@ void WindowManager::api_activate_surface(char const *appid, char const *drawing_ } auto client = g_app_list.lookUpClient(id); - unsigned srfc = client->surfaceID(role); + unsigned srfc = client->surfaceID(); if(srfc == 0) { HMI_ERROR("wm", "role sould be set with surface"); reply("role sould be set with surface"); return; } - g_app_list.removeFloatingSurface(client->surfaceID(role)); + g_app_list.removeFloatingSurface(client->surfaceID()); Task task = Task::TASK_ALLOCATE; unsigned req_num = 0; @@ -684,8 +684,6 @@ void WindowManager::send_event(char const *evname, char const *label, char const */ void WindowManager::surface_created(uint32_t surface_id) { - // For set role function - HMI_DEBUG("wm", "Get surface's owner"); this->controller->get_surface_properties(surface_id, IVI_WM_PARAM_SIZE); auto layer_id = this->layers.get_layer_id(surface_id); @@ -716,18 +714,34 @@ void WindowManager::surface_properties(unsigned surface_id, unsigned pid) json_object *response; afb_service_call_sync("afm-main", "runners", nullptr, &response); - // pick up appid from pid from application manager - std::string appid; + // retrieve appid from pid from application manager + std::string appid = ""; if(response == nullptr) { HMI_ERROR("wm", "No runners"); } else { + // check appid then add it to the client HMI_INFO("wm", "Runners:%s", json_object_get_string(response)); + int size = json_object_array_length(response); + for(int i = 0; i < size; i++) + { + json_object *j = json_object_array_get_idx(response, i); + const char* id = jh::getStringFromJson(j, "id"); + int runid = jh::getIntFromJson(j, "runid"); + if(id && (runid > 0)) + { + if(runid == pid) + { + appid = id; + break; + } + } + } } + json_object_put(response); - // check appid then add it to the client g_app_list.addFloatingSurface(appid, surface_id, pid); } @@ -1223,7 +1237,7 @@ WMError WindowManager::startTransition(unsigned req_num) if (g_app_list.contains(x.appid)) { auto client = g_app_list.lookUpClient(x.appid); - this->deactivate(client->surfaceID(x.role)); + this->deactivate(client->surfaceID()); } } ret = NO_LAYOUT_CHANGE; @@ -1451,7 +1465,7 @@ WMError WindowManager::layoutChange(const WMAction &action) return WMError::SUCCESS; } auto client = g_app_list.lookUpClient(action.appid); - unsigned surface = client->surfaceID(action.role); + unsigned surface = client->surfaceID(); if (surface == 0) { HMI_SEQ_ERROR(g_app_list.currentRequestNumber(), @@ -1470,7 +1484,7 @@ WMError WindowManager::visibilityChange(const WMAction &action) return WMError::NOT_REGISTERED; } auto client = g_app_list.lookUpClient(action.appid); - unsigned surface = client->surfaceID(action.role); + unsigned surface = client->surfaceID(); if(surface == 0) { HMI_SEQ_ERROR(g_app_list.currentRequestNumber(), @@ -1517,7 +1531,7 @@ WMError WindowManager::changeCurrentState(unsigned req_num) return WMError::NOT_REGISTERED; } auto client = g_app_list.lookUpClient(action.appid); - auto pCurState = *this->layers.get_layout_state((int)client->surfaceID(action.role)); + auto pCurState = *this->layers.get_layout_state((int)client->surfaceID()); if(pCurState == nullptr) { HMI_SEQ_ERROR(req_num, "Counldn't find current status"); @@ -1531,7 +1545,7 @@ WMError WindowManager::changeCurrentState(unsigned req_num) for (const auto &action : actions) { auto client = g_app_list.lookUpClient(action.appid); - auto pLayerCurState = *this->layers.get_layout_state((int)client->surfaceID(action.role)); + auto pLayerCurState = *this->layers.get_layout_state((int)client->surfaceID()); if (pLayerCurState == nullptr) { HMI_SEQ_ERROR(req_num, "Counldn't find current status"); @@ -1541,7 +1555,7 @@ WMError WindowManager::changeCurrentState(unsigned req_num) if (action.visible != TaskVisible::INVISIBLE) { - surface = (int)client->surfaceID(action.role); + surface = (int)client->surfaceID(); HMI_SEQ_INFO(req_num, "Change %s surface : %d, state visible area : %s", action.role.c_str(), surface, action.area.c_str()); // visible == true -> layout changes