diff --git a/src/bin/e_randr2.c b/src/bin/e_randr2.c index 1df08cd2b..8145cbffb 100644 --- a/src/bin/e_randr2.c +++ b/src/bin/e_randr2.c @@ -34,6 +34,7 @@ static Eina_List *_ev_handlers = NULL; static Ecore_Timer *_screen_delay_timer = NULL; static Eina_Bool event_screen = EINA_FALSE; static Eina_Bool event_ignore = EINA_FALSE; +static Eina_Bool initted = EINA_FALSE; ///////////////////////////////////////////////////////////////////////// E_API E_Config_Randr2 *e_randr2_cfg = NULL; @@ -55,6 +56,7 @@ e_randr2_init(void) if (!E_EVENT_RANDR_CHANGE) E_EVENT_RANDR_CHANGE = ecore_event_type_new(); if ((!e_comp->screen) || (!e_comp->screen->available) || (!e_comp->screen->available())) return EINA_FALSE; + initted = EINA_TRUE; // create data descriptors for config storage _e_randr2_cfg_screen_edd = E_CONFIG_DD_NEW("E_Config_Randr2_Screen", E_Config_Randr2_Screen); @@ -123,6 +125,8 @@ e_randr2_init(void) EINTERN int e_randr2_shutdown(void) { + if (!initted) return 0; + initted = EINA_FALSE; _animated_apply_abort(); // nuke any screen config delay handler if (_screen_delay_timer) ecore_timer_del(_screen_delay_timer); @@ -143,6 +147,12 @@ e_randr2_shutdown(void) return 1; } +E_API void +e_randr2_stop(void) +{ + e_randr2_shutdown(); +} + E_API Eina_Bool e_randr2_config_save(void) { diff --git a/src/bin/e_randr2.h b/src/bin/e_randr2.h index 2c44a205f..5f9f0b371 100644 --- a/src/bin/e_randr2.h +++ b/src/bin/e_randr2.h @@ -132,6 +132,8 @@ extern E_API int E_EVENT_RANDR_CHANGE; EINTERN Eina_Bool e_randr2_init(void); EINTERN int e_randr2_shutdown(void); +E_API void e_randr2_stop(void); + E_API Eina_Bool e_randr2_config_save(void); E_API void e_randr2_config_apply(void); E_API void e_randr2_screeninfo_update(void); @@ -141,6 +143,6 @@ E_API E_Config_Randr2_Screen *e_randr2_config_screen_find(E_Randr2_Screen *s, E_ E_API void e_randr2_screens_setup(int rw, int rh); E_API E_Randr2_Screen *e_randr2_screen_id_find(const char *id); E_API double e_randr2_screen_dpi_get(E_Randr2_Screen *s); -E_API void e_randr2_screen_modes_sort(E_Randr2_Screen *s); +E_API void e_randr2_screen_modes_sort(E_Randr2_Screen *s); #endif #endif diff --git a/src/modules/wl_x11/e_mod_main.c b/src/modules/wl_x11/e_mod_main.c index 277ff9d40..a22ff5121 100644 --- a/src/modules/wl_x11/e_mod_main.c +++ b/src/modules/wl_x11/e_mod_main.c @@ -66,6 +66,7 @@ e_modapi_init(E_Module *m) e_comp_wl->dmabuf_disable = EINA_TRUE; + if (managed) e_randr2_stop(); return m; }