diff options
Diffstat (limited to 'src/main.cpp')
-rw-r--r-- | src/main.cpp | 102 |
1 files changed, 11 insertions, 91 deletions
diff --git a/src/main.cpp b/src/main.cpp index 91dd622..6b4fef6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -18,10 +18,8 @@ #include <algorithm> #include <mutex> #include <json.h> -#include "../include/json.hpp" #include "window_manager.hpp" #include "json_helper.hpp" -#include "wayland_ivi_wm.hpp" extern "C" { @@ -42,10 +40,10 @@ typedef struct WMClientCtxt struct afb_instance { - std::unique_ptr<wl::display> display; wm::WindowManager wmgr; - afb_instance() : display{new wl::display}, wmgr{this->display.get()} {} + afb_instance() : wmgr() {} + ~afb_instance() = default; int init(); }; @@ -58,78 +56,11 @@ int afb_instance::init() return this->wmgr.init(); } -int display_event_callback(sd_event_source *evs, int /*fd*/, uint32_t events, - void * /*data*/) -{ - ; - - if ((events & EPOLLHUP) != 0) - { - HMI_ERROR("The compositor hung up, dying now."); - delete g_afb_instance; - g_afb_instance = nullptr; - goto error; - } - - if ((events & EPOLLIN) != 0u) - { - { - g_afb_instance->wmgr.display->read_events(); - g_afb_instance->wmgr.set_pending_events(); - } - { - // We want do dispatch pending wayland events from within - // the API context - afb_service_call("windowmanager", "ping", json_object_new_object(), - [](void *c, int st, json_object *j) {}, nullptr); - } - } - - return 0; - -error: - sd_event_source_unref(evs); - if (getenv("WINMAN_EXIT_ON_HANGUP") != nullptr) - { - exit(1); - } - return -1; -} - int _binding_init() { HMI_NOTICE("WinMan ver. %s", WINMAN_VERSION_STRING); - if (g_afb_instance != nullptr) - { - HMI_ERROR("Wayland context already initialized?"); - return 0; - } - - if (getenv("XDG_RUNTIME_DIR") == nullptr) - { - HMI_ERROR("Environment variable XDG_RUNTIME_DIR not set"); - goto error; - } - - { - // wait until wayland compositor starts up. - int cnt = 0; - g_afb_instance = new afb_instance; - while (!g_afb_instance->display->ok()) - { - cnt++; - if (20 <= cnt) - { - HMI_ERROR("Could not connect to compositor"); - goto error; - } - HMI_ERROR("Wait to start weston ..."); - sleep(1); - delete g_afb_instance; - g_afb_instance = new afb_instance; - } - } + g_afb_instance = new afb_instance; if (g_afb_instance->init() == -1) { @@ -137,17 +68,6 @@ int _binding_init() goto error; } - { - int ret = sd_event_add_io(afb_daemon_get_event_loop(), nullptr, - g_afb_instance->display->get_fd(), EPOLLIN, - display_event_callback, g_afb_instance); - if (ret < 0) - { - HMI_ERROR("Could not initialize afb_instance event handler: %d", -ret); - goto error; - } - } - atexit([] { delete g_afb_instance; }); return 0; @@ -565,7 +485,7 @@ void windowmanager_list_drawing_names(afb_req req) noexcept { std::lock_guard<std::mutex> guard(binding_m); - if (g_afb_instance == nullptr) + /* if (g_afb_instance == nullptr) { afb_req_fail(req, "failed", "Binding not initialized, did the compositor die?"); return; @@ -588,7 +508,7 @@ void windowmanager_list_drawing_names(afb_req req) noexcept { afb_req_fail_f(req, "failed", "Uncaught exception while calling list_drawing_names: %s", e.what()); return; - } + } */ } void windowmanager_ping(afb_req req) noexcept @@ -619,7 +539,7 @@ void windowmanager_debug_status(afb_req req) noexcept { std::lock_guard<std::mutex> guard(binding_m); - if (g_afb_instance == nullptr) + /* if (g_afb_instance == nullptr) { afb_req_fail(req, "failed", "Binding not initialized, did the compositor die?"); return; @@ -639,14 +559,14 @@ void windowmanager_debug_status(afb_req req) noexcept { afb_req_fail_f(req, "failed", "Uncaught exception while calling debug_status: %s", e.what()); return; - } + } */ } void windowmanager_debug_layers(afb_req req) noexcept { std::lock_guard<std::mutex> guard(binding_m); - if (g_afb_instance == nullptr) + /* if (g_afb_instance == nullptr) { afb_req_fail(req, "failed", "Binding not initialized, did the compositor die?"); return; @@ -662,14 +582,14 @@ void windowmanager_debug_layers(afb_req req) noexcept { afb_req_fail_f(req, "failed", "Uncaught exception while calling debug_layers: %s", e.what()); return; - } + } */ } void windowmanager_debug_surfaces(afb_req req) noexcept { std::lock_guard<std::mutex> guard(binding_m); - if (g_afb_instance == nullptr) + /* if (g_afb_instance == nullptr) { afb_req_fail(req, "failed", "Binding not initialized, did the compositor die?"); return; @@ -691,7 +611,7 @@ void windowmanager_debug_surfaces(afb_req req) noexcept { afb_req_fail_f(req, "failed", "Uncaught exception while calling debug_surfaces: %s", e.what()); return; - } + } */ } void windowmanager_debug_terminate(afb_req req) noexcept |