X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fmain.cpp;h=cc4386cf6732bb10ca6c205f5f94169eb742fbb9;hb=05b4c23fbf153fee1c3bda1450c45d2c66b72bae;hp=36577fe9bf0cfd16672ff579b0fe06cdeaf8b617;hpb=b1f7a756ff0fce7ff38d24b256476902f748be0b;p=apps%2Fagl-service-windowmanager.git diff --git a/src/main.cpp b/src/main.cpp index 36577fe..cc4386c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -56,7 +56,7 @@ int afb_instance::init() return this->wmgr.init(); } -int _binding_init() +static int _binding_init() { HMI_NOTICE("WinMan ver. %s", WINMAN_VERSION_STRING); @@ -78,7 +78,7 @@ error: return -1; } -int binding_init() noexcept +static int binding_init (afb_api_t api) noexcept { try { @@ -102,7 +102,7 @@ static void cbRemoveClientCtxt(void *data) // Policy Manager does not know this app was killed, // so notify it by deactivate request. - g_afb_instance->wmgr.api_deactivate_surface( + g_afb_instance->wmgr.api_deactivate_window( ctxt->name.c_str(), ctxt->role.c_str(), [](const char *) {}); @@ -110,21 +110,20 @@ static void cbRemoveClientCtxt(void *data) delete ctxt; } -static void createSecurityContext(afb_req req, const char* appid, const char* role) +static void createSecurityContext(afb_req_t req, const char* appid, const char* role) { WMClientCtxt *ctxt = (WMClientCtxt *)afb_req_context_get(req); if (!ctxt) { // Create Security Context at first time - const char *new_role = g_afb_instance->wmgr.convertRoleOldToNew(role); - WMClientCtxt *ctxt = new WMClientCtxt(appid, new_role); + WMClientCtxt *ctxt = new WMClientCtxt(appid, role); HMI_DEBUG("create session for %s", ctxt->name.c_str()); afb_req_session_set_LOA(req, 1); afb_req_context_set(req, ctxt, cbRemoveClientCtxt); } } -void windowmanager_requestsurface(afb_req req) noexcept +void windowmanager_requestsurface(afb_req_t req) noexcept { std::lock_guard guard(binding_m); if (g_afb_instance == nullptr) @@ -170,7 +169,7 @@ void windowmanager_requestsurface(afb_req req) noexcept } } -void windowmanager_requestsurfacexdg(afb_req req) noexcept +void windowmanager_requestsurfacexdg(afb_req_t req) noexcept { std::lock_guard guard(binding_m); if (g_afb_instance == nullptr) @@ -223,7 +222,7 @@ void windowmanager_requestsurfacexdg(afb_req req) noexcept } } -void windowmanager_activatewindow(afb_req req) noexcept +void windowmanager_activatewindow(afb_req_t req) noexcept { std::lock_guard guard(binding_m); if (g_afb_instance == nullptr) @@ -251,7 +250,7 @@ void windowmanager_activatewindow(afb_req req) noexcept char* appid = afb_req_get_application_id(req); if(appid) { - g_afb_instance->wmgr.api_activate_surface( + g_afb_instance->wmgr.api_activate_window( appid, a_drawing_name, a_drawing_area, [&req](const char *errmsg) { if (errmsg != nullptr) @@ -273,7 +272,7 @@ void windowmanager_activatewindow(afb_req req) noexcept } } -void windowmanager_deactivatewindow(afb_req req) noexcept +void windowmanager_deactivatewindow(afb_req_t req) noexcept { std::lock_guard guard(binding_m); if (g_afb_instance == nullptr) @@ -294,7 +293,7 @@ void windowmanager_deactivatewindow(afb_req req) noexcept char* appid = afb_req_get_application_id(req); if(appid) { - g_afb_instance->wmgr.api_deactivate_surface( + g_afb_instance->wmgr.api_deactivate_window( appid, a_drawing_name, [&req](const char *errmsg) { if (errmsg != nullptr) @@ -316,7 +315,7 @@ void windowmanager_deactivatewindow(afb_req req) noexcept } } -void windowmanager_enddraw(afb_req req) noexcept +void windowmanager_enddraw(afb_req_t req) noexcept { std::lock_guard guard(binding_m); if (g_afb_instance == nullptr) @@ -350,7 +349,7 @@ void windowmanager_enddraw(afb_req req) noexcept } } -void windowmanager_getdisplayinfo_thunk(afb_req req) noexcept +void windowmanager_getdisplayinfo_thunk(afb_req_t req) noexcept { std::lock_guard guard(binding_m); if (g_afb_instance == nullptr) @@ -377,7 +376,7 @@ void windowmanager_getdisplayinfo_thunk(afb_req req) noexcept } } -void windowmanager_getareainfo_thunk(afb_req req) noexcept +void windowmanager_getareainfo_thunk(afb_req_t req) noexcept { std::lock_guard guard(binding_m); if (g_afb_instance == nullptr) @@ -414,7 +413,7 @@ void windowmanager_getareainfo_thunk(afb_req req) noexcept } } -void windowmanager_wm_subscribe(afb_req req) noexcept +void windowmanager_wm_subscribe(afb_req_t req) noexcept { std::lock_guard guard(binding_m); if (g_afb_instance == nullptr) @@ -432,10 +431,10 @@ void windowmanager_wm_subscribe(afb_req req) noexcept afb_req_fail(req, "failed", "Need char const* argument event"); return; } - int event_id = json_object_get_int(j); - int ret = g_afb_instance->wmgr.api_subscribe(req, event_id); + wm::WindowManager::EventType event_id = (wm::WindowManager::EventType)json_object_get_int(j); + bool ret = g_afb_instance->wmgr.api_subscribe(req, event_id); - if (ret) + if (!ret) { afb_req_fail(req, "failed", "Error: afb_req_subscribe()"); return; @@ -449,38 +448,7 @@ void windowmanager_wm_subscribe(afb_req req) noexcept } } -void windowmanager_list_drawing_names(afb_req req) noexcept -{ - /* std::lock_guard guard(binding_m); - - if (g_afb_instance == nullptr) - { - afb_req_fail(req, "failed", "Binding not initialized, did the compositor die?"); - return; - } - - try - { - - nlohmann::json j = g_afb_instance->wmgr.id_alloc.name2id; - auto ret = wm::Ok(json_tokener_parse(j.dump().c_str())); - if (ret.is_err()) - { - afb_req_fail(req, "failed", ret.unwrap_err()); - return; - } - - afb_req_success(req, ret.unwrap(), "success"); - } - catch (std::exception &e) - { - afb_req_fail_f(req, "failed", "Uncaught exception while calling list_drawing_names: %s", e.what()); - return; - } */ - afb_req_success(req, NULL, "not-implemented"); -} - -void windowmanager_ping(afb_req req) noexcept +void windowmanager_ping(afb_req_t req) noexcept { std::lock_guard guard(binding_m); @@ -495,89 +463,7 @@ void windowmanager_ping(afb_req req) noexcept } } -void windowmanager_debug_status(afb_req req) noexcept -{ - std::lock_guard guard(binding_m); - - /* if (g_afb_instance == nullptr) - { - afb_req_fail(req, "failed", "Binding not initialized, did the compositor die?"); - return; - } - - try - { - - json_object *jr = json_object_new_object(); - json_object_object_add(jr, "surfaces", - to_json(g_afb_instance->wmgr.controller->sprops)); - json_object_object_add(jr, "layers", to_json(g_afb_instance->wmgr.controller->lprops)); - - afb_req_success(req, jr, "success"); - } - catch (std::exception &e) - { - afb_req_fail_f(req, "failed", "Uncaught exception while calling debug_status: %s", e.what()); - return; - } */ - afb_req_fail(req, NULL, "not-implemented"); -} - -void windowmanager_debug_layers(afb_req req) noexcept -{ - /* std::lock_guard guard(binding_m); - - if (g_afb_instance == nullptr) - { - afb_req_fail(req, "failed", "Binding not initialized, did the compositor die?"); - return; - } - - try - { - auto ret = wm::Ok(json_tokener_parse(g_afb_instance->wmgr.layers.to_json().dump().c_str())); - - afb_req_success(req, ret, "success"); - } - catch (std::exception &e) - { - afb_req_fail_f(req, "failed", "Uncaught exception while calling debug_layers: %s", e.what()); - return; - } */ - afb_req_fail(req, NULL, "not-implemented"); -} - -void windowmanager_debug_surfaces(afb_req req) noexcept -{ - /* std::lock_guard guard(binding_m); - - if (g_afb_instance == nullptr) - { - afb_req_fail(req, "failed", "Binding not initialized, did the compositor die?"); - return; - } - - try - { - - auto ret = wm::Ok(to_json(g_afb_instance->wmgr.controller->sprops)); - if (ret.is_err()) - { - afb_req_fail(req, "failed", ret.unwrap_err()); - return; - } - - afb_req_success(req, ret.unwrap(), "success"); - } - catch (std::exception &e) - { - afb_req_fail_f(req, "failed", "Uncaught exception while calling debug_surfaces: %s", e.what()); - return; - } */ - afb_req_fail(req, NULL, "not-implemented"); -} - -void windowmanager_debug_terminate(afb_req req) noexcept +void windowmanager_debug_terminate(afb_req_t req) noexcept { std::lock_guard guard(binding_m); if (g_afb_instance == nullptr) @@ -604,22 +490,30 @@ void windowmanager_debug_terminate(afb_req req) noexcept } } -const struct afb_verb_v2 windowmanager_verbs[] = { - {"requestSurface", windowmanager_requestsurface, nullptr, nullptr, AFB_SESSION_NONE}, - {"requestSurfaceXDG", windowmanager_requestsurfacexdg, nullptr, nullptr, AFB_SESSION_NONE}, - {"activateWindow", windowmanager_activatewindow, nullptr, nullptr, AFB_SESSION_NONE}, - {"deactivateWindow", windowmanager_deactivatewindow, nullptr, nullptr, AFB_SESSION_NONE}, - {"endDraw", windowmanager_enddraw, nullptr, nullptr, AFB_SESSION_NONE}, - {"getDisplayInfo", windowmanager_getdisplayinfo_thunk, nullptr, nullptr, AFB_SESSION_NONE}, - {"getAreaInfo", windowmanager_getareainfo_thunk, nullptr, nullptr, AFB_SESSION_NONE}, - {"wm_subscribe", windowmanager_wm_subscribe, nullptr, nullptr, AFB_SESSION_NONE}, - {"list_drawing_names", windowmanager_list_drawing_names, nullptr, nullptr, AFB_SESSION_NONE}, - {"ping", windowmanager_ping, nullptr, nullptr, AFB_SESSION_NONE}, - {"debug_status", windowmanager_debug_status, nullptr, nullptr, AFB_SESSION_NONE}, - {"debug_layers", windowmanager_debug_layers, nullptr, nullptr, AFB_SESSION_NONE}, - {"debug_surfaces", windowmanager_debug_surfaces, nullptr, nullptr, AFB_SESSION_NONE}, - {"debug_terminate", windowmanager_debug_terminate, nullptr, nullptr, AFB_SESSION_NONE}, - {}}; - -extern "C" const struct afb_binding_v2 afbBindingV2 = { - "windowmanager", nullptr, nullptr, windowmanager_verbs, nullptr, binding_init, nullptr, 0}; +const afb_verb_t windowmanager_verbs[] = { + { .verb = "requestSurface", .callback = windowmanager_requestsurface }, + { .verb = "requestSurfaceXDG", .callback = windowmanager_requestsurfacexdg }, + { .verb = "activateWindow", .callback = windowmanager_activatewindow }, + { .verb = "deactivateWindow", .callback = windowmanager_deactivatewindow }, + { .verb = "endDraw", .callback = windowmanager_enddraw }, + { .verb = "getDisplayInfo", .callback = windowmanager_getdisplayinfo_thunk }, + { .verb = "getAreaInfo", .callback = windowmanager_getareainfo_thunk }, + { .verb = "wm_subscribe", .callback = windowmanager_wm_subscribe }, + { .verb = "ping", .callback = windowmanager_ping }, + { .verb = "debug_terminate", .callback = windowmanager_debug_terminate }, + {} }; + +extern "C" const afb_binding_t afbBindingExport = { + .api = "windowmanager", + .specification = "windowmanager", + .info = "windowmanager", + .verbs = windowmanager_verbs, + .preinit = nullptr, + .init = binding_init, + .onevent = nullptr, + .userdata = nullptr, + .provide_class = nullptr, + .require_class = nullptr, + .require_api = nullptr, + .noconcurrency = 0 +};