Remove pid in args in setRole
[apps/agl-service-windowmanager.git] / src / main.cpp
index 7677f14..b0c9415 100644 (file)
 #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,96 +56,18 @@ 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("wm", "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("wm", "WinMan ver. %s", WINMAN_VERSION_STRING);
-
-    if (g_afb_instance != nullptr)
-    {
-        HMI_ERROR("wm", "Wayland context already initialized?");
-        return 0;
-    }
-
-    if (getenv("XDG_RUNTIME_DIR") == nullptr)
-    {
-        HMI_ERROR("wm", "Environment variable XDG_RUNTIME_DIR not set");
-        goto error;
-    }
+    HMI_NOTICE("WinMan ver. %s", WINMAN_VERSION_STRING);
 
-    {
-        // 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("wm", "Could not connect to compositor");
-                goto error;
-            }
-            HMI_ERROR("wm", "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)
     {
-        HMI_ERROR("wm", "Could not connect to compositor");
+        HMI_ERROR("Could not connect to compositor");
         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("wm", "Could not initialize afb_instance event handler: %d", -ret);
-            goto error;
-        }
-    }
-
     atexit([] { delete g_afb_instance; });
 
     return 0;
@@ -166,7 +86,7 @@ int binding_init() noexcept
     }
     catch (std::exception &e)
     {
-        HMI_ERROR("wm", "Uncaught exception in binding_init(): %s", e.what());
+        HMI_ERROR("Uncaught exception in binding_init(): %s", e.what());
     }
     return -1;
 }
@@ -178,7 +98,7 @@ static void cbRemoveClientCtxt(void *data)
     {
         return;
     }
-    HMI_DEBUG("wm", "remove app %s", ctxt->name.c_str());
+    HMI_DEBUG("remove app %s", ctxt->name.c_str());
 
     // Policy Manager does not know this app was killed,
     // so notify it by deactivate request.
@@ -198,7 +118,7 @@ static void createSecurityContext(afb_req req, const char* appid, const char* ro
         // Create Security Context at first time
         const char *new_role = g_afb_instance->wmgr.convertRoleOldToNew(role);
         WMClientCtxt *ctxt = new WMClientCtxt(appid, new_role);
-        HMI_DEBUG("wm", "create session for %s", ctxt->name.c_str());
+        HMI_DEBUG("create session for %s", ctxt->name.c_str());
         afb_req_session_set_LOA(req, 1);
         afb_req_context_set(req, ctxt, cbRemoveClientCtxt);
     }
@@ -303,7 +223,6 @@ void windowmanager_setrole(afb_req req) noexcept
     }
     try
     {
-        unsigned pid = 0;
         char const *appid = afb_req_get_application_id(req);
         json_object *jreq = afb_req_json(req);
 
@@ -315,15 +234,7 @@ void windowmanager_setrole(afb_req req) noexcept
         }
         char const *a_role = json_object_get_string(j_role);
 
-        json_object *j_pid = nullptr;
-        if (json_object_object_get_ex(jreq, "pid", &j_pid))
-        {
-            HMI_DEBUG("wm", "PID is set");
-            char const *a_pid = json_object_get_string(j_pid);
-            pid = std::stol(a_pid);
-        }
-
-        auto ret = g_afb_instance->wmgr.api_set_role(appid, a_role, pid);
+        auto ret = g_afb_instance->wmgr.api_set_role(appid, a_role);
         if (!ret)
         {
             afb_req_fail(req, "failed", "Couldn't register");
@@ -373,7 +284,7 @@ void windowmanager_activatewindow(afb_req req) noexcept
             [&req](const char *errmsg) {
                 if (errmsg != nullptr)
                 {
-                    HMI_ERROR("wm", errmsg);
+                    HMI_ERROR(errmsg);
                     afb_req_fail(req, "failed", errmsg);
                     return;
                 }
@@ -382,7 +293,7 @@ void windowmanager_activatewindow(afb_req req) noexcept
     }
     catch (std::exception &e)
     {
-        HMI_WARNING("wm", "failed: Uncaught exception while calling activatesurface: %s", e.what());
+        HMI_WARNING("failed: Uncaught exception while calling activatesurface: %s", e.what());
         g_afb_instance->wmgr.exceptionProcessForTransition();
         return;
     }
@@ -412,7 +323,7 @@ void windowmanager_deactivatewindow(afb_req req) noexcept
             [&req](const char *errmsg) {
                 if (errmsg != nullptr)
                 {
-                    HMI_ERROR("wm", errmsg);
+                    HMI_ERROR(errmsg);
                     afb_req_fail(req, "failed", errmsg);
                     return;
                 }
@@ -421,7 +332,7 @@ void windowmanager_deactivatewindow(afb_req req) noexcept
     }
     catch (std::exception &e)
     {
-        HMI_WARNING("wm", "failed: Uncaught exception while calling deactivatesurface: %s", e.what());
+        HMI_WARNING("failed: Uncaught exception while calling deactivatesurface: %s", e.what());
         g_afb_instance->wmgr.exceptionProcessForTransition();
         return;
     }
@@ -452,7 +363,7 @@ void windowmanager_enddraw(afb_req req) noexcept
     }
     catch (std::exception &e)
     {
-        HMI_WARNING("wm", "failed: Uncaught exception while calling enddraw: %s", e.what());
+        HMI_WARNING("failed: Uncaught exception while calling enddraw: %s", e.what());
         g_afb_instance->wmgr.exceptionProcessForTransition();
         return;
     }
@@ -565,7 +476,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 +499,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
@@ -600,26 +511,17 @@ void windowmanager_ping(afb_req req) noexcept
         afb_req_fail(req, "failed", "Binding not initialized, did the compositor die?");
         return;
     }
-
-    try
+    else
     {
-
-        g_afb_instance->wmgr.api_ping();
-
         afb_req_success(req, NULL, "success");
     }
-    catch (std::exception &e)
-    {
-        afb_req_fail_f(req, "failed", "Uncaught exception while calling ping: %s", e.what());
-        return;
-    }
 }
 
 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 +541,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 +564,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 +593,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
@@ -723,14 +625,14 @@ 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},
-    {"setrole", windowmanager_setrole, 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},
+    {"requestSurface", windowmanager_requestsurface, nullptr, nullptr, AFB_SESSION_NONE},
+    {"requestSurfaceXdg", windowmanager_requestsurfacexdg, nullptr, nullptr, AFB_SESSION_NONE},
+    {"setRole", windowmanager_setrole, 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},