X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fwindow_manager.cpp;h=28692caa50b745eeebac85d6e94a9ccdb5ed03b8;hb=b9eac3cd4c955a84f1b381f15dc6d3f53035a309;hp=24b6f30d2b3e10babab3660dbec49b16ef576bb9;hpb=c1d85371b1eb693128cf9553c356ea77e609d9a3;p=apps%2Fagl-service-windowmanager.git diff --git a/src/window_manager.cpp b/src/window_manager.cpp index 24b6f30..28692ca 100644 --- a/src/window_manager.cpp +++ b/src/window_manager.cpp @@ -1,5 +1,6 @@ /* * Copyright (c) 2017 TOYOTA MOTOR CORPORATION + * Copyright (c) 2018 Konsulko Group * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +20,7 @@ #include "window_manager.hpp" #include "json_helper.hpp" +#include "util.hpp" #include "applist.hpp" extern "C" @@ -123,17 +125,7 @@ WindowManager::WindowManager(wl::display *d) id_alloc{}, pending_events(false) { - char const *path_layers_json = getenv("AFM_APP_INSTALL_DIR"); - std::string path; - if (!path_layers_json) - { - HMI_ERROR("wm", "AFM_APP_INSTALL_DIR is not defined"); - path = std::string(path_layers_json); - } - else - { - path = std::string(path_layers_json) + std::string("/etc/layers.json"); - } + std::string path(get_file_path("layers.json")); try { @@ -202,13 +194,19 @@ int WindowManager::init() this->controller->chooks = &this->chooks; // This protocol needs the output, so lets just add our mapping here... - this->controller->add_proxy_to_id_mapping( - this->outputs.front()->proxy.get(), - wl_proxy_get_id(reinterpret_cast( - this->outputs.front()->proxy.get()))); - - // Create screen - this->controller->create_screen(this->outputs.front()->proxy.get()); + if(!this->outputs.empty()) { + // FIXME : Work around to avoid signal 11. Window Manager can't handle hotplug. + this->controller->add_proxy_to_id_mapping( + this->outputs.front()->proxy.get(), + wl_proxy_get_id(reinterpret_cast( + this->outputs.front()->proxy.get()))); + + // Create screen + this->controller->create_screen(this->outputs.front()->proxy.get()); + } + else { + HMI_WARNING("wm", "No output object. Window Manager can't handle screen"); + } // Set display to controller this->controller->display = this->display; @@ -657,6 +655,10 @@ void WindowManager::startTransitionWrapper(std::vector &actions) { bool found; auto const &surface_id = this->lookup_id(act.role.c_str()); + if(surface_id == nullopt) + { + goto proc_remove_request; + } std::string appid = g_app_list.getAppID(*surface_id, act.role, &found); if (!found) { @@ -1367,19 +1369,7 @@ const char* WindowManager::convertRoleOldToNew(char const *old_role) int WindowManager::loadOldRoleDb() { - // Get afm application installed dir - char const *afm_app_install_dir = getenv("AFM_APP_INSTALL_DIR"); - HMI_DEBUG("wm", "afm_app_install_dir:%s", afm_app_install_dir); - - std::string file_name; - if (!afm_app_install_dir) - { - HMI_ERROR("wm", "AFM_APP_INSTALL_DIR is not defined"); - } - else - { - file_name = std::string(afm_app_install_dir) + std::string("/etc/old_roles.db"); - } + std::string file_name(get_file_path("old_roles.db")); // Load old_role.db json_object* json_obj;