Added config values sleep_for_dri, create_wm_ready and comp canvas background bg set 25/68825/6
authorMinJeong Kim <minjjj.kim@samsung.com>
Wed, 4 May 2016 07:21:36 +0000 (16:21 +0900)
committerMinJeong Kim <minjjj.kim@samsung.com>
Wed, 11 May 2016 05:47:41 +0000 (14:47 +0900)
Change-Id: Iffc73212c18ed1baa2ff5b384d634db5b5aea5ff

src/bin/e_comp_canvas.c
src/bin/e_config.c
src/bin/e_config.h
src/bin/e_main.c

index e56147f..485bb92 100644 (file)
@@ -143,6 +143,8 @@ e_comp_canvas_init(int w, int h)
 {
    Evas_Object *o;
    Eina_List *screens;
+   unsigned int r, g, b, a;
+   Evas_Render_Op opmode;
 
    TRACE_DS_BEGIN(COMP_CANVAS:INIT);
 
@@ -150,6 +152,19 @@ e_comp_canvas_init(int w, int h)
    e_comp->w = w;
    e_comp->h = h;
 
+   r = g = b = 0;
+   a = 255;
+   opmode = EVAS_RENDER_BLEND;
+
+   if (e_config)
+     {
+        r = e_config->comp_canvas_bg.r;
+        g = e_config->comp_canvas_bg.g;
+        b = e_config->comp_canvas_bg.b;
+        a = e_config->comp_canvas_bg.a;
+        opmode = e_config->comp_canvas_bg.opmode;
+     }
+
    if (e_first_frame)
      evas_event_callback_add(e_comp->evas, EVAS_CALLBACK_RENDER_POST, _e_comp_canvas_cb_first_frame, NULL);
    o = evas_object_rectangle_add(e_comp->evas);
@@ -157,7 +172,8 @@ e_comp_canvas_init(int w, int h)
    evas_object_layer_set(o, E_LAYER_BOTTOM);
    evas_object_move(o, 0, 0);
    evas_object_resize(o, e_comp->w, e_comp->h);
-   evas_object_color_set(o, 0, 0, 0, 255);
+   evas_object_color_set(o, r, g, b, a);
+   evas_object_render_op_set(o, opmode);
    evas_object_name_set(o, "comp->bg_blank_object");
    evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, (Evas_Object_Event_Cb)_e_comp_canvas_cb_mouse_down, NULL);
    evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, (Evas_Object_Event_Cb)_e_comp_canvas_cb_mouse_up, NULL);
index 1642f38..e2277ce 100644 (file)
@@ -200,6 +200,13 @@ _e_config_edd_init(Eina_Bool old)
    E_CONFIG_VAL(D, T, wl_sock_access.owner, STR);
    E_CONFIG_VAL(D, T, wl_sock_access.group, STR);
    E_CONFIG_VAL(D, T, wl_sock_access.permissions, INT);
+   E_CONFIG_VAL(D, T, sleep_for_dri, INT);
+   E_CONFIG_VAL(D, T, create_wm_ready, INT);
+   E_CONFIG_VAL(D, T, comp_canvas_bg.r, UCHAR);
+   E_CONFIG_VAL(D, T, comp_canvas_bg.g, UCHAR);
+   E_CONFIG_VAL(D, T, comp_canvas_bg.b, UCHAR);
+   E_CONFIG_VAL(D, T, comp_canvas_bg.a, UCHAR);
+   E_CONFIG_VAL(D, T, comp_canvas_bg.opmode, INT);
 }
 
 /* externally accessible functions */
@@ -369,6 +376,13 @@ e_config_load(void)
    E_CONFIG_LIMIT(e_config->keyboard.repeat_delay, -1, 1000); // 1 second
    E_CONFIG_LIMIT(e_config->keyboard.repeat_rate, -1, 1000); // 1 second
    E_CONFIG_LIMIT(e_config->use_cursor_timer, 0, 1);
+   E_CONFIG_LIMIT(e_config->sleep_for_dri, 0, 1);
+   E_CONFIG_LIMIT(e_config->create_wm_ready, 0, 1);
+   E_CONFIG_LIMIT(e_config->comp_canvas_bg.r, 0, 255);
+   E_CONFIG_LIMIT(e_config->comp_canvas_bg.g, 0, 255);
+   E_CONFIG_LIMIT(e_config->comp_canvas_bg.b, 0, 255);
+   E_CONFIG_LIMIT(e_config->comp_canvas_bg.a, 0, 255);
+   E_CONFIG_LIMIT(e_config->comp_canvas_bg.opmode, 0, 11);
 }
 
 E_API int
index b4088a1..c262e28 100644 (file)
@@ -133,6 +133,13 @@ struct _E_Config
       const char   *group;
       unsigned int  permissions;
    } wl_sock_access;
+   int                       sleep_for_dri;
+   int                       create_wm_ready;
+   struct
+   {
+      unsigned char r, g, b, a;
+      int opmode;
+   } comp_canvas_bg;
 };
 
 struct _E_Config_Desklock_Background
index a5f7343..f357994 100644 (file)
@@ -83,6 +83,7 @@ static void      _e_main_desk_restore(void);
 static void      _e_main_modules_load(Eina_Bool safe_mode);
 static Eina_Bool _e_main_cb_idle_before(void *data EINA_UNUSED);
 static Eina_Bool _e_main_cb_idle_after(void *data EINA_UNUSED);
+static void      _e_main_create_wm_ready(void);
 
 /* local variables */
 static Eina_Bool really_know = EINA_FALSE;
@@ -574,6 +575,17 @@ main(int argc, char **argv)
    e_zone_init();
    e_desk_init();
 
+   if (e_config->sleep_for_dri)
+     {
+        while(access("/dev/dri/card0", F_OK) != 0)
+          {
+             struct timespec req, rem;
+             req.tv_sec = 0;
+             req.tv_nsec = 50000000L;
+             nanosleep(&req, &rem);
+          }
+     }
+
    TRACE_DS_BEGIN(MAIN:SCREEN INIT);
    TS("Screens Init");
    if (!_e_main_screens_init())
@@ -662,6 +674,9 @@ main(int argc, char **argv)
 
    TS("MAIN LOOP AT LAST");
 
+   if (e_config->create_wm_ready)
+     _e_main_create_wm_ready();
+
    TRACE_DS_END();
    if (!setjmp(x_fatal_buff))
      ecore_main_loop_begin();
@@ -1243,3 +1258,34 @@ _e_main_cb_idle_after(void *data EINA_UNUSED)
 
    return ECORE_CALLBACK_RENEW;
 }
+
+static void
+_e_main_create_wm_ready(void)
+{
+   FILE *_wmready_checker = NULL;
+
+   _wmready_checker = fopen("/run/.wm_ready", "wb");
+   if (_wmready_checker)
+     {
+        TS("[WM] WINDOW MANAGER is READY!!!");
+        fclose(_wmready_checker);
+
+        /*TODO: Next lines should be removed. */
+        FILE *_tmp_wm_ready_checker;
+        _tmp_wm_ready_checker = fopen("/tmp/.wm_ready", "wb");
+
+        if (_tmp_wm_ready_checker)
+          {
+             TS("[WM] temporary wm_ready path is created.");
+             fclose(_tmp_wm_ready_checker);
+          }
+        else
+          {
+             TS("[WM] temporary wm_ready path create failed.");
+          }
+     }
+   else
+     {
+        TS("[WM] WINDOW MANAGER is READY. BUT, failed to create .wm_ready file.");
+     }
+}