utility to query for fullscreen in current/all zones.
keeping local count of borders is too error prone, instead query it. Right now the count is being done for the current zone only, I guess this is the best policy. SVN revision: 54793
This commit is contained in:
parent
07f4fc0cd3
commit
d374b7ccb8
|
@ -62,14 +62,6 @@ static int _e_desklock_user_idle = 0;
|
|||
static double _e_desklock_autolock_time = 0.0;
|
||||
static E_Dialog *_e_desklock_ask_presentation_dia = NULL;
|
||||
static int _e_desklock_ask_presentation_count = 0;
|
||||
static Ecore_Event_Handler *_e_desklock_handler_border_fullscreen = NULL;
|
||||
static Ecore_Event_Handler *_e_desklock_handler_border_unfullscreen = NULL;
|
||||
static Ecore_Event_Handler *_e_desklock_handler_border_remove = NULL;
|
||||
static Ecore_Event_Handler *_e_desklock_handler_border_iconify = NULL;
|
||||
static Ecore_Event_Handler *_e_desklock_handler_border_uniconify = NULL;
|
||||
static Ecore_Event_Handler *_e_desklock_handler_border_desk_set = NULL;
|
||||
static Ecore_Event_Handler *_e_desklock_handler_desk_show = NULL;
|
||||
static int _e_desklock_fullscreen_count = 0;
|
||||
|
||||
/***********************************************************************/
|
||||
|
||||
|
@ -96,9 +88,6 @@ static char *_desklock_auth_get_current_host(void);
|
|||
#endif
|
||||
|
||||
static void _e_desklock_ask_presentation_mode(void);
|
||||
static Eina_Bool _e_desklock_handler_border_fullscreen_check_cb(void *data __UNUSED__, int type __UNUSED__, void *event);
|
||||
static Eina_Bool _e_desklock_handler_border_desk_set_cb(void *data __UNUSED__, int type __UNUSED__, void *event);
|
||||
static Eina_Bool _e_desklock_handler_desk_show_cb(void *data __UNUSED__, int type __UNUSED__, void *event);
|
||||
|
||||
EAPI int E_EVENT_DESKLOCK = 0;
|
||||
|
||||
|
@ -109,34 +98,6 @@ e_desklock_init(void)
|
|||
_e_desklock_idle_poller = ecore_poller_add(ECORE_POLLER_CORE, 256,
|
||||
_e_desklock_cb_idle_poller, NULL);
|
||||
|
||||
if (!_e_desklock_handler_border_fullscreen)
|
||||
_e_desklock_handler_border_fullscreen = ecore_event_handler_add
|
||||
(E_EVENT_BORDER_FULLSCREEN, _e_desklock_handler_border_fullscreen_check_cb, NULL);
|
||||
|
||||
if (!_e_desklock_handler_border_unfullscreen)
|
||||
_e_desklock_handler_border_unfullscreen = ecore_event_handler_add
|
||||
(E_EVENT_BORDER_UNFULLSCREEN, _e_desklock_handler_border_fullscreen_check_cb, NULL);
|
||||
|
||||
if (!_e_desklock_handler_border_remove)
|
||||
_e_desklock_handler_border_remove = ecore_event_handler_add
|
||||
(E_EVENT_BORDER_REMOVE, _e_desklock_handler_border_fullscreen_check_cb, NULL);
|
||||
|
||||
if (!_e_desklock_handler_border_iconify)
|
||||
_e_desklock_handler_border_iconify = ecore_event_handler_add
|
||||
(E_EVENT_BORDER_ICONIFY, _e_desklock_handler_border_fullscreen_check_cb, NULL);
|
||||
|
||||
if (!_e_desklock_handler_border_uniconify)
|
||||
_e_desklock_handler_border_uniconify = ecore_event_handler_add
|
||||
(E_EVENT_BORDER_UNICONIFY, _e_desklock_handler_border_fullscreen_check_cb, NULL);
|
||||
|
||||
if (!_e_desklock_handler_border_desk_set)
|
||||
_e_desklock_handler_border_desk_set = ecore_event_handler_add
|
||||
(E_EVENT_BORDER_DESK_SET, _e_desklock_handler_border_desk_set_cb, NULL);
|
||||
|
||||
if (!_e_desklock_handler_desk_show)
|
||||
_e_desklock_handler_desk_show = ecore_event_handler_add
|
||||
(E_EVENT_DESK_SHOW, _e_desklock_handler_desk_show_cb, NULL);
|
||||
|
||||
if (e_config->desklock_background)
|
||||
e_filereg_register(e_config->desklock_background);
|
||||
|
||||
|
@ -148,48 +109,6 @@ e_desklock_init(void)
|
|||
EAPI int
|
||||
e_desklock_shutdown(void)
|
||||
{
|
||||
if (_e_desklock_handler_border_fullscreen)
|
||||
{
|
||||
ecore_event_handler_del(_e_desklock_handler_border_fullscreen);
|
||||
_e_desklock_handler_border_fullscreen = NULL;
|
||||
}
|
||||
|
||||
if (_e_desklock_handler_border_unfullscreen)
|
||||
{
|
||||
ecore_event_handler_del(_e_desklock_handler_border_unfullscreen);
|
||||
_e_desklock_handler_border_unfullscreen = NULL;
|
||||
}
|
||||
|
||||
if (_e_desklock_handler_border_remove)
|
||||
{
|
||||
ecore_event_handler_del(_e_desklock_handler_border_remove);
|
||||
_e_desklock_handler_border_remove = NULL;
|
||||
}
|
||||
|
||||
if (_e_desklock_handler_border_iconify)
|
||||
{
|
||||
ecore_event_handler_del(_e_desklock_handler_border_iconify);
|
||||
_e_desklock_handler_border_iconify = NULL;
|
||||
}
|
||||
|
||||
if (_e_desklock_handler_border_uniconify)
|
||||
{
|
||||
ecore_event_handler_del(_e_desklock_handler_border_uniconify);
|
||||
_e_desklock_handler_border_uniconify = NULL;
|
||||
}
|
||||
|
||||
if (_e_desklock_handler_border_desk_set)
|
||||
{
|
||||
ecore_event_handler_del(_e_desklock_handler_border_desk_set);
|
||||
_e_desklock_handler_border_desk_set = NULL;
|
||||
}
|
||||
|
||||
if (_e_desklock_handler_desk_show)
|
||||
{
|
||||
ecore_event_handler_del(_e_desklock_handler_desk_show);
|
||||
_e_desklock_handler_desk_show = NULL;
|
||||
}
|
||||
|
||||
e_desklock_hide();
|
||||
if (e_config->desklock_background)
|
||||
e_filereg_deregister(e_config->desklock_background);
|
||||
|
@ -215,7 +134,7 @@ _user_wallpaper_get(void)
|
|||
EAPI int
|
||||
e_desklock_show_autolocked(void)
|
||||
{
|
||||
if (_e_desklock_fullscreen_count > 0) return 0;
|
||||
if (e_util_fullscreen_curreny_any()) return 0;
|
||||
if (_e_desklock_autolock_time < 1.0)
|
||||
_e_desklock_autolock_time = ecore_loop_time_get();
|
||||
return e_desklock_show();
|
||||
|
@ -955,7 +874,7 @@ static Eina_Bool
|
|||
_e_desklock_cb_idle_poller(void *data __UNUSED__)
|
||||
{
|
||||
if ((e_config->desklock_autolock_idle) && (!e_config->mode.presentation) &&
|
||||
(_e_desklock_fullscreen_count <= 0))
|
||||
(!e_util_fullscreen_curreny_any()))
|
||||
{
|
||||
double idle, max;
|
||||
|
||||
|
@ -1094,33 +1013,3 @@ _e_desklock_ask_presentation_mode(void)
|
|||
|
||||
_e_desklock_ask_presentation_dia = dia;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_e_desklock_handler_border_fullscreen_check_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||
{
|
||||
E_Event_Border_Fullscreen *ev = event;
|
||||
|
||||
_e_desklock_fullscreen_count = ev->border->desk->fullscreen_borders;
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_e_desklock_handler_border_desk_set_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||
{
|
||||
E_Event_Border_Desk_Set *ev = event;
|
||||
|
||||
if (ev->border->desk->visible)
|
||||
_e_desklock_fullscreen_count = ev->border->desk->fullscreen_borders;
|
||||
else if (ev->desk->visible)
|
||||
_e_desklock_fullscreen_count = ev->desk->fullscreen_borders;
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_e_desklock_handler_desk_show_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||
{
|
||||
E_Event_Desk_Show *ev = event;
|
||||
|
||||
_e_desklock_fullscreen_count = ev->desk->fullscreen_borders;
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
}
|
||||
|
|
|
@ -8,7 +8,6 @@ static Ecore_Event_Handler *_e_dpms_handler_border_iconify = NULL;
|
|||
static Ecore_Event_Handler *_e_dpms_handler_border_uniconify = NULL;
|
||||
static Ecore_Event_Handler *_e_dpms_handler_border_desk_set = NULL;
|
||||
static Ecore_Event_Handler *_e_dpms_handler_desk_show = NULL;
|
||||
static int _e_dpms_fullscreen_count = 0;
|
||||
|
||||
static Eina_Bool
|
||||
_e_dpms_handler_config_mode_cb(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
|
||||
|
@ -18,34 +17,22 @@ _e_dpms_handler_config_mode_cb(void *data __UNUSED__, int type __UNUSED__, void
|
|||
}
|
||||
|
||||
static Eina_Bool
|
||||
_e_dpms_handler_border_fullscreen_check_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||
_e_dpms_handler_border_fullscreen_check_cb(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
|
||||
{
|
||||
E_Event_Border_Fullscreen *ev = event;
|
||||
|
||||
_e_dpms_fullscreen_count = ev->border->desk->fullscreen_borders;
|
||||
e_dpms_init();
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_e_dpms_handler_border_desk_set_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||
_e_dpms_handler_border_desk_set_cb(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
|
||||
{
|
||||
E_Event_Border_Desk_Set *ev = event;
|
||||
|
||||
if (ev->border->desk->visible)
|
||||
_e_dpms_fullscreen_count = ev->border->desk->fullscreen_borders;
|
||||
else if (ev->desk->visible)
|
||||
_e_dpms_fullscreen_count = ev->desk->fullscreen_borders;
|
||||
e_dpms_init();
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_e_dpms_handler_desk_show_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||
_e_dpms_handler_desk_show_cb(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
|
||||
{
|
||||
E_Event_Desk_Show *ev = event;
|
||||
|
||||
_e_dpms_fullscreen_count = ev->desk->fullscreen_borders;
|
||||
e_dpms_init();
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
}
|
||||
|
@ -57,7 +44,7 @@ e_dpms_init(void)
|
|||
int enabled;
|
||||
|
||||
enabled = ((e_config->dpms_enable) && (!e_config->mode.presentation) &&
|
||||
(_e_dpms_fullscreen_count <= 0));
|
||||
(!e_util_fullscreen_curreny_any()));
|
||||
|
||||
if (!_e_dpms_handler_config_mode)
|
||||
_e_dpms_handler_config_mode = ecore_event_handler_add
|
||||
|
|
|
@ -11,7 +11,6 @@ static Ecore_Event_Handler *_e_screensaver_handler_border_desk_set = NULL;
|
|||
static Ecore_Event_Handler *_e_screensaver_handler_desk_show = NULL;
|
||||
static E_Dialog *_e_screensaver_ask_presentation_dia = NULL;
|
||||
static int _e_screensaver_ask_presentation_count = 0;
|
||||
static int _e_screensaver_fullscreen_count = 0;
|
||||
|
||||
static Eina_Bool
|
||||
_e_screensaver_handler_config_mode_cb(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
|
||||
|
@ -148,34 +147,22 @@ _e_screensaver_handler_screensaver_notify_cb(void *data __UNUSED__, int type __U
|
|||
}
|
||||
|
||||
static Eina_Bool
|
||||
_e_screensaver_handler_border_fullscreen_check_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||
_e_screensaver_handler_border_fullscreen_check_cb(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
|
||||
{
|
||||
E_Event_Border_Fullscreen *ev = event;
|
||||
|
||||
_e_screensaver_fullscreen_count = ev->border->desk->fullscreen_borders;
|
||||
e_screensaver_init();
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_e_screensaver_handler_border_desk_set_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||
_e_screensaver_handler_border_desk_set_cb(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
|
||||
{
|
||||
E_Event_Border_Desk_Set *ev = event;
|
||||
|
||||
if (ev->border->desk->visible)
|
||||
_e_screensaver_fullscreen_count = ev->border->desk->fullscreen_borders;
|
||||
else if (ev->desk->visible)
|
||||
_e_screensaver_fullscreen_count = ev->desk->fullscreen_borders;
|
||||
e_screensaver_init();
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_e_screensaver_handler_desk_show_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||
_e_screensaver_handler_desk_show_cb(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
|
||||
{
|
||||
E_Event_Desk_Show *ev = event;
|
||||
|
||||
_e_screensaver_fullscreen_count = ev->desk->fullscreen_borders;
|
||||
e_screensaver_init();
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
}
|
||||
|
@ -222,7 +209,7 @@ e_screensaver_init(void)
|
|||
(E_EVENT_DESK_SHOW, _e_screensaver_handler_desk_show_cb, NULL);
|
||||
|
||||
if ((e_config->screensaver_enable) && (!e_config->mode.presentation) &&
|
||||
(_e_screensaver_fullscreen_count <= 0))
|
||||
(!e_util_fullscreen_curreny_any()))
|
||||
timeout = e_config->screensaver_timeout;
|
||||
|
||||
interval = e_config->screensaver_interval;
|
||||
|
|
|
@ -1560,3 +1560,54 @@ e_util_module_config_check(const char *module_name, int conf, int epoch, int ver
|
|||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whenever the current manager/container/zone have fullscreen windows.
|
||||
*/
|
||||
EAPI Eina_Bool
|
||||
e_util_fullscreen_curreny_any(void)
|
||||
{
|
||||
E_Manager *man = e_manager_current_get();
|
||||
E_Container *con = e_container_current_get(man);
|
||||
E_Zone *zone = e_zone_current_get(con);
|
||||
E_Desk *desk;
|
||||
|
||||
if ((zone) && (zone->fullscreen > 0)) return EINA_TRUE;
|
||||
desk = e_desk_current_get(zone);
|
||||
if ((desk) && (desk->fullscreen_borders > 0)) return EINA_TRUE;
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whenever any manager/container/zone have fullscreen windows.
|
||||
*/
|
||||
EAPI Eina_Bool
|
||||
e_util_fullscreen_any(void)
|
||||
{
|
||||
E_Zone *zone;
|
||||
Eina_List *lm, *lc, *lz;
|
||||
E_Container *con;
|
||||
E_Manager *man;
|
||||
E_Desk *desk;
|
||||
int x, y;
|
||||
|
||||
EINA_LIST_FOREACH(e_manager_list(), lm, man)
|
||||
{
|
||||
EINA_LIST_FOREACH(man->containers, lc, con)
|
||||
{
|
||||
EINA_LIST_FOREACH(con->zones, lz, zone)
|
||||
{
|
||||
if (zone->fullscreen > 0) return EINA_TRUE;
|
||||
|
||||
for (x = 0; x < zone->desk_x_count; x++)
|
||||
for (y = 0; y < zone->desk_y_count; y++)
|
||||
{
|
||||
desk = e_desk_at_xy_get(zone, x, y);
|
||||
if ((desk) && (desk->fullscreen_borders > 0))
|
||||
return EINA_TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
|
|
@ -76,5 +76,8 @@ EAPI void e_util_image_import_cancel(E_Util_Image_Import_
|
|||
|
||||
EAPI int e_util_container_desk_count_get(E_Container *con);
|
||||
|
||||
EAPI Eina_Bool e_util_fullscreen_curreny_any(void);
|
||||
EAPI Eina_Bool e_util_fullscreen_any(void);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue