Modify function argument from char to json 49/11449/9
authorzheng_wenlong <wenlong_zheng@nexty-ele.com>
Mon, 23 Oct 2017 05:46:17 +0000 (14:46 +0900)
committerZheng Wenlong <wenlong_zheng@nexty-ele.com>
Mon, 30 Oct 2017 04:26:09 +0000 (04:26 +0000)
    Change libhomescreen event api from char to json.
    Also modify samples who use this.

BUG-AGL: SPEC-992
Change-Id: Id3986d413f9494019f6b175488dd73de226ba020
Signed-off-by: zheng_wenlong <wenlong_zheng@nexty-ele.com>
include/libhomescreen.hpp
sample/simple-egl/src/simple-egl.cpp
sample/template/main.cpp
sample/template/wmhandler.cpp
src/libhomescreen.cpp

index 5720368..9034dc8 100644 (file)
@@ -38,7 +38,7 @@ public:
     LibHomeScreen(const LibHomeScreen &) = delete;
     LibHomeScreen &operator=(const LibHomeScreen &) = delete;
 
-    using handler_func = std::function<void(const char*)>;
+    using handler_func = std::function<void(json_object*)>;
 
     enum EventType {
         Event_TapShortcut = 1,
index 4494ac8..cfa349c 100644 (file)
@@ -572,42 +572,61 @@ init_wm(LibWindowmanager *wm)
                return -1;
        }
 
-       if (wm->requestSurface(app_name.c_str()) != 0) {
+       json_object *obj = json_object_new_object();
+       json_object_object_add(obj, wm->kKeyDrawingName, json_object_new_string(app_name.c_str()));
+       if (wm->requestSurface(obj) != 0) {
                debug_out("************** [SIMPLE EGL] [WM SIMPLE >>>>] wm request surface failed \n");
                return -1;
        }
 
-       wm->set_event_handler(LibWindowmanager::Event_Active, [](char const *label) {
+       wm->set_event_handler(LibWindowmanager::Event_Active, [wm](json_object *object) {
+               const char *label = json_object_get_string(
+                       json_object_object_get(object, wm->kKeyDrawingName));
                debug_out("************** [SIMPLE EGL] [WM SIMPLE >>>>] Surface %s got activated! \n", label);
        });
 
-       wm->set_event_handler(LibWindowmanager::Event_Inactive, [](char const *label) {
+       wm->set_event_handler(LibWindowmanager::Event_Inactive, [wm](json_object *object) {
+               const char *label = json_object_get_string(
+                       json_object_object_get(object, wm->kKeyDrawingName));
                debug_out("************** [SIMPLE EGL] [WM SIMPLE >>>>] Surface %s got inactivated!\n", label);
        });
 
-       wm->set_event_handler(LibWindowmanager::Event_Visible, [wm](char const *label) {
+       wm->set_event_handler(LibWindowmanager::Event_Visible, [wm](json_object *object) {
+               const char *label = json_object_get_string(
+                       json_object_object_get(object, wm->kKeyDrawingName));
                debug_out("************** [SIMPLE EGL] [WM SIMPLE >>>>] Surface %s got visibled!\n", label);
        });
 
-       wm->set_event_handler(LibWindowmanager::Event_Invisible, [](char const *label) {
+       wm->set_event_handler(LibWindowmanager::Event_Invisible, [wm](json_object *object) {
+               const char *label = json_object_get_string(
+                       json_object_object_get(object, wm->kKeyDrawingName));
                debug_out("************** [SIMPLE EGL] [WM SIMPLE >>>>] Surface %s got invisibled!\n", label);
        });
 
-       wm->set_event_handler(LibWindowmanager::Event_SyncDraw, [wm](char const *label) {
+       wm->set_event_handler(LibWindowmanager::Event_SyncDraw, [wm](json_object *object) {
+               const char *label = json_object_get_string(
+                       json_object_object_get(object, wm->kKeyDrawingName));
+               const char *area = json_object_get_string(
+                       json_object_object_get(object, wm->kKeyDrawingArea));
                debug_out("************** [SIMPLE EGL] [WM SIMPLE >>>>] Surface %s got syncdraw!\n", label);
         debug_out("************** [SIMPLE EGL] [WM SIMPLE >>>>] try to endDraw %s \n", app_name.c_str());
-        wm->endDraw(app_name.c_str());
-       });
+               json_object *obj = json_object_new_object();
+               json_object_object_add(obj, wm->kKeyDrawingName, json_object_new_string(app_name.c_str()));
+
+        wm->endDraw(obj);
+    });
 
-       wm->set_event_handler(LibWindowmanager::Event_FlushDraw, [](char const *label) {
+       wm->set_event_handler(LibWindowmanager::Event_FlushDraw, [wm](json_object *object) {
+               const char *label = json_object_get_string(
+                       json_object_object_get(object, wm->kKeyDrawingName));
                debug_out("************** [SIMPLE EGL] [WM SIMPLE >>>>] Surface %s got flushdraw! \n", label);
        });
 
        do
        {
         surfaceIdStr = getenv("QT_IVI_SURFACE_ID");
-       } while (surfaceIdStr == NULL);  
-       
+       } while (surfaceIdStr == NULL);
+
        g_id_ivisurf = atoi(surfaceIdStr);
        debug_out("************** [SIMPLE EGL] [WM SIMPLE >>>>] IVI_SURFACE_ID: %d \n", g_id_ivisurf);
 
@@ -622,16 +641,23 @@ init_hs(LibHomeScreen* hs){
                return -1;
        }
 
-       hs->set_event_handler(LibHomeScreen::Event_TapShortcut, [](const char* application_name){
+       hs->set_event_handler(LibHomeScreen::Event_TapShortcut, [](json_object *object){
+               const char *application_name = json_object_get_string(
+                       json_object_object_get(object, "application_name"));
                debug_out("************** [SIMPLE EGL] [HS SIMPLE >>>>] Event_TapShortcut application_name = %s \n", application_name);
                if(strcmp(application_name, app_name.c_str()) == 0)
                {
                        debug_out("************** [SIMPLE EGL] [HS SIMPLE] try to activesurface %s \n", app_name.c_str());
-                       wm->activateSurface(app_name.c_str());
+                       json_object *obj = json_object_new_object();
+                       json_object_object_add(obj, wm->kKeyDrawingName, json_object_new_string(app_name.c_str()));
+                       json_object_object_add(obj, wm->kKeyDrawingArea, json_object_new_string("normal.full"));
+                       wm->activateSurface(obj);
                }
        });
 
-       hs->set_event_handler(LibHomeScreen::Event_OnScreenMessage, [](const char* display_message){
+       hs->set_event_handler(LibHomeScreen::Event_OnScreenMessage, [](json_object *object){
+               const char *display_message = json_object_get_string(
+                       json_object_object_get(object, "display_message"));
        debug_out("************** [SIMPLE EGL] [HS SIMPLE >>>>] Event_OnScreenMessage display_message = %s \n", display_message);
        });
 
@@ -642,7 +668,7 @@ int
 main(int argc, char **argv)
 {
        struct sigaction sigint;
-    struct window  window  = { 0 };
+       struct window  window  = { 0 };
        struct display display = { 0 };
 
        if(getenv("ENABLE_DEMO_DEBUG"))
@@ -706,7 +732,7 @@ main(int argc, char **argv)
 
        create_surface(&window);
        init_gl(&window);
-       
+
        //Ctrl+C
        sigint.sa_handler = signal_int;
        sigemptyset(&sigint.sa_mask);
@@ -714,8 +740,11 @@ main(int argc, char **argv)
        sigaction(SIGINT, &sigint, NULL);
 
        eglSwapBuffers(display.egl.dpy, window.egl_surface);
-       wm->activateSurface(app_name.c_str());
-       
+       json_object *obj = json_object_new_object();
+       json_object_object_add(obj, wm->kKeyDrawingName, json_object_new_string(app_name.c_str()));
+       json_object_object_add(obj, wm->kKeyDrawingArea, json_object_new_string("normal.full"));
+       wm->activateSurface(obj);
+
        /* The mainloop here is a little subtle.  Redrawing will cause
         * EGL to read events so we can just call
         * wl_display_dispatch_pending() to handle any events that got
index 589d314..831df41 100644 (file)
@@ -90,29 +90,47 @@ int main(int argc, char *argv[])
         }
 
         // Application should call requestSurface at first
-        if (wm->requestSurface(myname.c_str()) != 0) {
+        json_object *obj = json_object_new_object();
+        json_object_object_add(obj, wm->kKeyDrawingName, json_object_new_string(app_name.c_str()));
+        if (wm->requestSurface(obj) != 0) {
             exit(EXIT_FAILURE);
         }
 
         // Set event handlers for each event
-        wm->set_event_handler(LibWindowmanager::Event_Active, [](char const *label) {
+        wm->set_event_handler(LibWindowmanager::Event_Active, [wm](json_object *object) {
+            const char *label = json_object_get_string(
+                json_object_object_get(object, wm->kKeyDrawingName));
             fprintf(stderr, "Surface %s got activated!\n", label);
         });
-        wm->set_event_handler(LibWindowmanager::Event_Inactive, [](char const *label) {
+        wm->set_event_handler(LibWindowmanager::Event_Inactive, [wm](json_object *object) {
+            const char *label = json_object_get_string(
+                json_object_object_get(object, wm->kKeyDrawingName));
             fprintf(stderr, "Surface %s got deactivated!\n", label);
         });
-        wm->set_event_handler(LibWindowmanager::Event_Visible, [](char const *label) {
+        wm->set_event_handler(LibWindowmanager::Event_Visible, [wm](json_object *object) {
+            const char *label = json_object_get_string(
+                json_object_object_get(object, wm->kKeyDrawingName));
             fprintf(stderr, "Surface %s got visible!\n", label);
         });
-        wm->set_event_handler(LibWindowmanager::Event_Invisible, [](char const *label) {
+        wm->set_event_handler(LibWindowmanager::Event_Invisible, [wm](json_object *object) {
+            const char *label = json_object_get_string(
+                json_object_object_get(object, wm->kKeyDrawingName));
             fprintf(stderr, "Surface %s got invisible!\n", label);
         });
-        wm->set_event_handler(LibWindowmanager::Event_SyncDraw, [wm](char const *label) {
-            fprintf(stderr, "Surface %s got syncDraw!\n", label);
+        wm->set_event_handler(LibWindowmanager::Event_SyncDraw, [wm](json_object *object) {
+            const char *label = json_object_get_string(
+                json_object_object_get(object, wm->kKeyDrawingName));
+            const char *area = json_object_get_string(
+                json_object_object_get(object, wm->kKeyDrawingArea));
+                fprintf(stderr, "Surface %s got syncDraw!\n", label);
             // Application should call LibWindowmanager::endDraw() in SyncDraw handler
-            wm->endDraw(label);
+            json_object *obj = json_object_new_object();
+            json_object_object_add(obj, wm->kKeyDrawingName, json_object_new_string(app_name.c_str()));
+            wm->endDraw(obj);
         });
-        wm->set_event_handler(LibWindowmanager::Event_FlushDraw, [](char const *label) {
+        wm->set_event_handler(LibWindowmanager::Event_FlushDraw, [wm](json_object *object) {
+            const char *label = json_object_get_string(
+                json_object_object_get(object, wm->kKeyDrawingName));
             fprintf(stderr, "Surface %s got flushDraw!\n", label);
         });
 
@@ -127,11 +145,16 @@ int main(int argc, char *argv[])
         hs->init(port, token.c_str());
 
         // Set event handler
-        hs->set_event_handler(LibHomeScreen::Event_TapShortcut, [wm](const char* appname) {
+        hs->set_event_handler(LibHomeScreen::Event_TapShortcut, [wm](json_object *object) {
+            const char *appname = json_object_get_string(
+                           json_object_object_get(object, "application_name"));
             if(myname == appname) {
                 qDebug("Surface %s got tapShortcut\n", appname);
                 // Application should call LibWindowmanager::endDraw() in TapShortcut handler
-                wm->activateSurface(myname.c_str());
+                               json_object *obj = json_object_new_object();
+                               json_object_object_add(obj, wm->kKeyDrawingName, json_object_new_string(app_name.c_str()));
+                               json_object_object_add(obj, wm->kKeyDrawingArea, json_object_new_string("normal.full"));
+                wm->activateSurface(obj);
             }
         });
 
index 761915f..9972104 100644 (file)
 #include <unistd.h>
 
 
-void WmHandler::init(LibWindowmanager *p_wm, std::string applabel) 
+void WmHandler::init(LibWindowmanager *p_wm, std::string applabel)
 {
     mp_wm = p_wm;
     m_applabel = applabel;
 }
 
 void WmHandler::slotActivateSurface() {
-    mp_wm->activateSurface(m_applabel.c_str());
+    json_object *obj = json_object_new_object();
+    json_object_object_add(obj, wm->kKeyDrawingName, json_object_new_string(m_applabel.c_str()));
+    json_object_object_add(obj, wm->kKeyDrawingArea, json_object_new_string("normal.full"));
+    mp_wm->activateSurface(obj);
 }
 
-WmHandler::WmHandler(QObject *parent) 
+WmHandler::WmHandler(QObject *parent)
     :QObject(parent)
 {
 }
index 42ab8b1..2f3ef44 100644 (file)
@@ -441,25 +441,15 @@ void LibHomeScreen::on_event(void *closure, const char *event, struct afb_wsj1_m
 
        if (strcasecmp(event_only, LibHomeScreen::event_list[0].c_str()) == 0) {
                auto i = this->handlers.find(Event_TapShortcut);
-
-               struct json_object *json_application_name = json_object_object_get(json_data, "application_name");
-               const char* application_name = json_object_get_string(json_application_name);
-
                if ( i != this->handlers.end() ) {
-                       i->second(application_name);
+                       i->second(json_data);
                }
        }
        else if (strcasecmp(event_only, LibHomeScreen::event_list[1].c_str()) == 0) {
-
                auto i = this->handlers.find(Event_OnScreenMessage);
-
-               struct json_object *json_display_message = json_object_object_get(json_data, "display_message");
-               const char* display_message = json_object_get_string(json_display_message);
-
                if ( i != this->handlers.end() ) {
-                       i->second(display_message);
+                       i->second(json_data);
                }
-
        }
 
        json_object_put(ev_contents);