{
Evas_Object *o;
Eina_List *screens;
+ unsigned int r, g, b, a;
+ Evas_Render_Op opmode;
TRACE_DS_BEGIN(COMP_CANVAS:INIT);
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);
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);
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 */
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
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
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;
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())
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();
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.");
+ }
+}