Merge sandbox source code to master 15/12315/2 5.99.1 5.99.2 flounder/5.99.1 flounder/5.99.2 flounder_5.99.1 flounder_5.99.2
authorzheng_wenlong <wenlong_zheng@nexty-ele.com>
Tue, 5 Dec 2017 03:46:31 +0000 (12:46 +0900)
committerZheng Wenlong <wenlong_zheng@nexty-ele.com>
Fri, 8 Dec 2017 00:58:43 +0000 (00:58 +0000)
    Modify libwindowmanager's requestSurface api.
    Change failed log to HMI_ERROR.
    Delete global variable gWindow.
    Delete split window code.

Change-Id: I83df68f2ae3d34d7589370df4010f5b297662f69
Signed-off-by: zheng_wenlong <wenlong_zheng@nexty-ele.com>
sample/simple-egl/src/simple-egl.cpp

index 8be9d2e..be694d7 100644 (file)
@@ -47,7 +47,7 @@
 #include <unistd.h>
 #include <time.h>
 
-#include "libwindowmanager.h"
+#include <libwindowmanager.h>
 #include <libhomescreen.hpp>
 
 #include <ilm/ivi-application-client-protocol.h>
@@ -64,7 +64,6 @@ string app_name = string("Navigation");
 
 LibHomeScreen* hs;
 LibWindowmanager *wm;
-bool gIsDraw = false;
 
 static const struct wl_interface *types[] = {
         NULL,
@@ -149,7 +148,7 @@ struct window {
        EGLSurface egl_surface;
        struct wl_callback *callback;
        int fullscreen, opaque, buffer_size, frame_sync;
-} *gWindow;
+};
 
 static const char *vert_shader_text =
        "uniform mat4 rotation;\n"
@@ -224,7 +223,7 @@ init_egl(struct display *display, struct window *window)
        }
        free(configs);
        if (display->egl.conf == NULL) {
-               HMI_DEBUG("simple-egl","did not find config with buffer size %d",
+               HMI_ERROR("simple-egl","did not find config with buffer size %d",
                        window->buffer_size);
                exit(EXIT_FAILURE);
        }
@@ -272,7 +271,7 @@ create_shader(struct window *window, const char *source, GLenum shader_type)
                char log[1000];
                GLsizei len;
                glGetShaderInfoLog(shader, 1000, &len, log);
-               HMI_DEBUG("simple-egl","Error: compiling %s: %*s",
+               HMI_ERROR("simple-egl","Error: compiling %s: %*s",
                        shader_type == GL_VERTEX_SHADER ? "vertex" : "fragment",
                        len, log);
                exit(1);
@@ -301,7 +300,7 @@ init_gl(struct window *window)
                char log[1000];
                GLsizei len;
                glGetProgramInfoLog(program, 1000, &len, log);
-               HMI_DEBUG("simple-egl","Error: linking:%*s", len, log);
+               HMI_ERROR("simple-egl","Error: linking:%*s", len, log);
                exit(1);
        }
 
@@ -327,7 +326,7 @@ create_ivi_surface(struct window *window, struct display *display)
                                               id_ivisurf, window->surface);
 
        if (window->ivi_surface == NULL) {
-               HMI_DEBUG("simple-egl","Failed to create ivi_client_surface");
+               HMI_ERROR("simple-egl","Failed to create ivi_client_surface");
                abort();
        }
 
@@ -396,19 +395,7 @@ redraw(void *data, struct wl_callback *callback, uint32_t time)
                {  0,    0.5 }
        };
 
-       static const GLfloat verts_sub[3][2] = {
-               { -0.25, -0.5 },
-               {  0.25, -0.5 },
-               {  0,    0.5 }
-       };
-
-       static const GLfloat colors_H[3][3] = {
-               { 1, 1, 1 },
-               { 1, 1, 1 },
-               { 1, 1, 1 }
-       };
-
-       static const GLfloat colors_N[3][3] = {
+       static const GLfloat colors[3][3] = {
                { 1, 0, 0 },
                { 0, 1, 0 },
                { 0, 0, 1 }
@@ -465,20 +452,8 @@ redraw(void *data, struct wl_callback *callback, uint32_t time)
        glClearColor(0.0, 0.0, 0.0, 0.5);
        glClear(GL_COLOR_BUFFER_BIT);
 
-       if(window->geometry.height == 1488)
-       {
-               glVertexAttribPointer(window->gl.pos, 2, GL_FLOAT, GL_FALSE, 0, verts);
-       }
-       else
-       {
-               glVertexAttribPointer(window->gl.pos, 2, GL_FLOAT, GL_FALSE, 0, verts_sub);
-       }
-       if(app_name == string("HVAC")){
-               glVertexAttribPointer(window->gl.col, 3, GL_FLOAT, GL_FALSE, 0, colors_H);
-       }
-       else{
-               glVertexAttribPointer(window->gl.col, 3, GL_FLOAT, GL_FALSE, 0, colors_N);
-       }
+       glVertexAttribPointer(window->gl.pos, 2, GL_FLOAT, GL_FALSE, 0, verts);
+       glVertexAttribPointer(window->gl.col, 3, GL_FLOAT, GL_FALSE, 0, colors);
        glEnableVertexAttribArray(window->gl.pos);
        glEnableVertexAttribArray(window->gl.col);
 
@@ -548,49 +523,24 @@ signal_int(int signum)
 }
 
 int
-init_wm(LibWindowmanager *wm)
+init_wm(LibWindowmanager *wm, struct window *window)
 {
        HMI_DEBUG("simple-egl","called");
-       char* surfaceIdStr;
 
        if (wm->init(port, token.c_str()) != 0) {
-               HMI_DEBUG("simple-egl","wm init failed. ");
-               return -1;
+               HMI_ERROR("simple-egl","wm init failed. ");
+               return -1;
        }
 
        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) {
-               HMI_DEBUG("simple-egl","wm request surface failed ");
+       g_id_ivisurf = wm->requestSurface(obj);
+       if (g_id_ivisurf < 0) {
+               HMI_ERROR("simple-egl","wm request surface failed ");
                return -1;
        }
-
-       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));
-               HMI_DEBUG("simple-egl","Surface %s got activated! ", 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));
-               HMI_DEBUG("simple-egl","Surface %s got inactivated!", 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));
-               HMI_DEBUG("simple-egl","Surface %s got visibled!", 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));
-               HMI_DEBUG("simple-egl","Surface %s got invisibled!", label);
-               gIsDraw = false;
-       });
-
-       wm->set_event_handler(LibWindowmanager::Event_SyncDraw, [wm](json_object *object) {
+       HMI_DEBUG("simple-egl","IVI_SURFACE_ID: %d ", g_id_ivisurf);
+       wm->set_event_handler(LibWindowmanager::Event_SyncDraw, [wm, window](json_object *object) {
                const char *label = json_object_get_string(
                        json_object_object_get(object, wm->kKeyDrawingName));
                const char *area = json_object_get_string(
@@ -598,42 +548,25 @@ init_wm(LibWindowmanager *wm)
 
                HMI_DEBUG("simple-egl","Surface %s got syncDraw! Area: %s. ", label, area);
                if ((wm->kStrLayoutNormal + "." + wm->kStrAreaFull) == std::string(area)) {
-                       HMI_DEBUG("simple-egl","Layout:%s x:%d y:%d w:%d h:%d ", area, 0, 0, 1080, 1488);
-                       wl_egl_window_resize(gWindow->native, 1080, 1488, 0, 0);
-                       gWindow->geometry.width = 1080;
-                       gWindow->geometry.height = 1488;
+                       wl_egl_window_resize(window->native, 1080, 1488, 0, 0);
+                       window->geometry.width = 1080;
+                       window->geometry.height = 1488;
                }
                else if ((wm->kStrLayoutSplit + "." + wm->kStrAreaMain) == std::string(area) ||
                                 (wm->kStrLayoutSplit + "." + wm->kStrAreaSub) == std::string(area)) {
-                       HMI_DEBUG("simple-egl","Layout:%s x:%d y:%d w:%d h:%d ", area, 0, 0, 1080, 744);
-                       wl_egl_window_resize(gWindow->native, 1080, 744, 0, 0);
-                       gWindow->geometry.width = 1080;
-                       gWindow->geometry.height = 744;
+                       wl_egl_window_resize(window->native, 1080, 744, 0, 0);
+                       window->geometry.width = 1080;
+                       window->geometry.height = 744;
                }
 
-               if (!gWindow->fullscreen)
-                       gWindow->window_size = gWindow->geometry;
-               gIsDraw = true;
+               if (!window->fullscreen)
+                       window->window_size = window->geometry;
                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, [wm](json_object *object) {
-               const char *label = json_object_get_string(
-                       json_object_object_get(object, wm->kKeyDrawingName));
-               HMI_DEBUG("simple-egl","Surface %s got flushdraw! ", label);
-       });
-
-       do
-       {
-        surfaceIdStr = getenv("QT_IVI_SURFACE_ID");
-       } while (surfaceIdStr == NULL);
-
-       g_id_ivisurf = atoi(surfaceIdStr);
-       HMI_DEBUG("simple-egl","IVI_SURFACE_ID: %d ", g_id_ivisurf);
-
        return 0;
 }
 
@@ -641,7 +574,7 @@ int
 init_hs(LibHomeScreen* hs){
        if(hs->init(port, token)!=0)
        {
-               HMI_DEBUG("simple-egl","homescreen init failed. ");
+               HMI_ERROR("simple-egl","homescreen init failed. ");
                return -1;
        }
 
@@ -655,17 +588,10 @@ init_hs(LibHomeScreen* hs){
                        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"));
-                       gIsDraw = false;
                        wm->activateSurface(obj);
                }
        });
 
-       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"));
-        HMI_DEBUG("simple-egl","Event_OnScreenMessage display_message = %s ", display_message);
-       });
-
        return 0;
 }
 
@@ -683,12 +609,8 @@ main(int argc, char **argv)
        window.window_size = window.geometry;
        window.buffer_size = 32;
        window.frame_sync = 1;
-       gWindow = &window;
 
-       if(argc > 2)
-       {
-               if(string(argv[0]).find("hvac") != string::npos)
-                       app_name = string("HVAC");
+       if(argc > 2){
                port = strtol(argv[1], NULL, 10);
                token = argv[2];
        }
@@ -707,9 +629,7 @@ main(int argc, char **argv)
        init_egl(&display, &window);
 
        wm = new LibWindowmanager();
-       hs = new LibHomeScreen();
-       
-       if(init_wm(wm)!=0){
+       if(init_wm(wm, &window)!=0){
                fini_egl(&display);
                if (display.ivi_application)
                        ivi_application_destroy(display.ivi_application);
@@ -720,6 +640,7 @@ main(int argc, char **argv)
                return -1;
        }
 
+       hs = new LibHomeScreen();
        if(init_hs(hs)!=0){
                fini_egl(&display);
                if (display.ivi_application)
@@ -740,8 +661,7 @@ main(int argc, char **argv)
        sigint.sa_flags = SA_RESETHAND;
        sigaction(SIGINT, &sigint, NULL);
 
-       wl_display_dispatch_pending(display.display);
-       redraw(&window, NULL, 0);
+       eglSwapBuffers(window.display->egl.dpy, window.egl_surface);
        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"));
@@ -753,14 +673,7 @@ main(int argc, char **argv)
         * queued up as a side effect. */
        while (running) {
                wl_display_dispatch_pending(display.display);
-               if(!gIsDraw) {
-                       usleep(100000);
-                       continue;
-               }
-               else
-               {
-                       redraw(&window, NULL, 0);
-               }
+               redraw(&window, NULL, 0);
        }
 
        HMI_DEBUG("simple-egl","simple-egl exiting! ");