forked from enlightenment/efl
add in custom screen blank enable/disable in ecore-x so we can do e17
based on this release of efl. SVN revision: 75714
This commit is contained in:
parent
3b197e9a54
commit
3faee27bd8
|
@ -865,3 +865,8 @@
|
|||
2012-08-18 Carsten Haitzler (The Rasterman)
|
||||
|
||||
* Add xkb change events patch from trac.
|
||||
|
||||
2012-08-27 Carsten Haitzler (The Rasterman)
|
||||
|
||||
* Add ecore_x custom blanker screensaver enable/disable - cant
|
||||
do e17 properly without so add in even in freeze.
|
||||
|
|
|
@ -1707,7 +1707,9 @@ EAPI int ecore_x_screensaver_expose_get(void);
|
|||
EAPI void ecore_x_screensaver_interval_set(int timeout);
|
||||
EAPI int ecore_x_screensaver_interval_get(void);
|
||||
EAPI void ecore_x_screensaver_event_listen_set(Eina_Bool on);
|
||||
|
||||
EAPI Eina_Bool ecore_x_screensaver_custom_blanking_enable(void); /** @since 1.7 */
|
||||
EAPI Eina_Bool ecore_x_screensaver_custom_blanking_disable(void); /** @since 1.7 */
|
||||
|
||||
/* FIXME: these funcs need categorising */
|
||||
|
||||
typedef struct _Ecore_X_Window_Attributes
|
||||
|
|
|
@ -1995,7 +1995,8 @@ _ecore_xcb_event_handle_screensaver_notify(xcb_generic_event_t *event)
|
|||
|
||||
e->win = ev->window;
|
||||
e->on = EINA_FALSE;
|
||||
if (ev->state == XCB_SCREENSAVER_STATE_ON) e->on = EINA_TRUE;
|
||||
if ((ev->state == XCB_SCREENSAVER_STATE_ON) ||
|
||||
(ev->state == XCB_SCREENSAVER_STATE_CYCLE)) e->on = EINA_TRUE;
|
||||
e->time = ev->time;
|
||||
|
||||
ecore_event_add(ECORE_X_EVENT_SCREENSAVER_NOTIFY, e, NULL, NULL);
|
||||
|
|
|
@ -324,7 +324,9 @@ ecore_x_screensaver_event_listen_set(Eina_Bool on)
|
|||
root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
|
||||
if (on)
|
||||
xcb_screensaver_select_input(_ecore_xcb_conn, root,
|
||||
XCB_SCREENSAVER_EVENT_NOTIFY_MASK);
|
||||
XCB_SCREENSAVER_EVENT_NOTIFY_MASK |
|
||||
XCB_SCREENSAVER_EVENT_CYCLE_MASK
|
||||
);
|
||||
else
|
||||
xcb_screensaver_select_input(_ecore_xcb_conn, root, 0);
|
||||
#endif
|
||||
|
@ -336,3 +338,34 @@ ecore_x_screensaver_event_available_get(void)
|
|||
return _screensaver_avail;
|
||||
}
|
||||
|
||||
EAPI Eina_Bool
|
||||
ecore_x_screensaver_custom_blanking_enable(void)
|
||||
{
|
||||
#ifdef ECORE_XCB_SCREENSAVER
|
||||
uint32_t mask_list[9];
|
||||
|
||||
xcb_screensaver_set_attributes_checked
|
||||
(_ecore_xcb_conn,
|
||||
((xcb_screen_t *)_ecore_xcb_screen)->root,
|
||||
-9999, -9999, 1, 1, 0,
|
||||
XCB_WINDOW_CLASS_INPUT_ONLY.
|
||||
XCB_COPY_FROM_PARENT, XCB_COPY_FROM_PARENT,
|
||||
0, mask_list);
|
||||
return EINA_TRUE;
|
||||
#else
|
||||
return EINA_FALSE;
|
||||
#endif
|
||||
}
|
||||
|
||||
EAPI Eina_Bool
|
||||
ecore_x_screensaver_custom_blanking_disable(void)
|
||||
{
|
||||
#ifdef ECORE_XCB_SCREENSAVER
|
||||
xcb_screensaver_unset_attributes_checked
|
||||
(_ecore_xcb_conn,
|
||||
((xcb_screen_t *)_ecore_xcb_screen)->root);
|
||||
return EINA_TRUE;
|
||||
#else
|
||||
return EINA_FALSE;
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -2007,7 +2007,8 @@ _ecore_x_event_handle_screensaver_notify(XEvent *xevent)
|
|||
return;
|
||||
|
||||
e->win = screensaver_event->window;
|
||||
if (screensaver_event->state == ScreenSaverOn)
|
||||
if ((screensaver_event->state == ScreenSaverOn) ||
|
||||
(screensaver_event->state == ScreenSaverCycle))
|
||||
e->on = EINA_TRUE;
|
||||
else
|
||||
e->on = EINA_FALSE;
|
||||
|
|
|
@ -162,7 +162,8 @@ ecore_x_screensaver_event_listen_set(Eina_Bool on)
|
|||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
||||
root = DefaultRootWindow(_ecore_x_disp);
|
||||
if (on)
|
||||
XScreenSaverSelectInput(_ecore_x_disp, root, ScreenSaverNotifyMask);
|
||||
XScreenSaverSelectInput(_ecore_x_disp, root,
|
||||
ScreenSaverNotifyMask | ScreenSaverCycle);
|
||||
else
|
||||
XScreenSaverSelectInput(_ecore_x_disp, root, 0);
|
||||
#else
|
||||
|
@ -171,3 +172,33 @@ ecore_x_screensaver_event_listen_set(Eina_Bool on)
|
|||
#endif /* ifdef ECORE_XSS */
|
||||
}
|
||||
|
||||
|
||||
EAPI Eina_Bool
|
||||
ecore_x_screensaver_custom_blanking_enable(void)
|
||||
{
|
||||
#ifdef ECORE_XSS
|
||||
XSetWindowAttributes attr;
|
||||
|
||||
XScreenSaverSetAttributes(_ecore_x_disp,
|
||||
DefaultRootWindow(_ecore_x_disp),
|
||||
-9999, -9999, 1, 1, 0,
|
||||
CopyFromParent, InputOnly, CopyFromParent,
|
||||
0, &attr);
|
||||
return EINA_TRUE;
|
||||
#else
|
||||
return EINA_FALSE;
|
||||
#endif /* ifdef ECORE_XSS */
|
||||
}
|
||||
|
||||
EAPI Eina_Bool
|
||||
ecore_x_screensaver_custom_blanking_disable(void)
|
||||
{
|
||||
#ifdef ECORE_XSS
|
||||
XScreenSaverUnsetAttributes(_ecore_x_disp,
|
||||
DefaultRootWindow(_ecore_x_disp));
|
||||
return EINA_TRUE;
|
||||
#else
|
||||
return EINA_FALSE;
|
||||
#endif /* ifdef ECORE_XSS */
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue