Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/lib/ecore_x


Modified Files:
        Ecore_X.h Makefile.am ecore_x.c ecore_x_events.c 
        ecore_x_private.h 
Added Files:
        ecore_x_screensaver.c 


Log Message:


minimal xscreensaver wrapping so it can be used for lock
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/Ecore_X.h,v
retrieving revision 1.157
retrieving revision 1.158
diff -u -3 -r1.157 -r1.158
--- Ecore_X.h   3 Feb 2006 21:42:38 -0000       1.157
+++ Ecore_X.h   3 Mar 2006 04:01:15 -0000       1.158
@@ -254,6 +254,7 @@
 typedef struct _Ecore_X_Event_Xdnd_Finished            
Ecore_X_Event_Xdnd_Finished;
 typedef struct _Ecore_X_Event_Client_Message           
Ecore_X_Event_Client_Message;
 typedef struct _Ecore_X_Event_Window_Shape             
Ecore_X_Event_Window_Shape;
+typedef struct _Ecore_X_Event_Screensaver_Notify       
Ecore_X_Event_Screensaver_Notify;
 typedef struct _Ecore_X_Event_Sync_Counter             
Ecore_X_Event_Sync_Counter;
 typedef struct _Ecore_X_Event_Sync_Alarm               
Ecore_X_Event_Sync_Alarm;
 typedef struct _Ecore_X_Event_Screen_Change            
Ecore_X_Event_Screen_Change;
@@ -644,6 +645,13 @@
    Ecore_X_Time    time;
 };
 
+struct _Ecore_X_Event_Screensaver_Notify
+{
+   Ecore_X_Window  win;
+   int             on;
+   Ecore_X_Time    time;
+};
+
 struct _Ecore_X_Event_Sync_Counter
 {
    Ecore_X_Time    time;
@@ -798,6 +806,7 @@
 EAPI extern int ECORE_X_EVENT_SELECTION_NOTIFY;
 EAPI extern int ECORE_X_EVENT_CLIENT_MESSAGE;
 EAPI extern int ECORE_X_EVENT_WINDOW_SHAPE;
+EAPI extern int ECORE_X_EVENT_SCREENSAVER_NOTIFY;
 EAPI extern int ECORE_X_EVENT_SYNC_COUNTER;
 EAPI extern int ECORE_X_EVENT_SYNC_ALARM;
 EAPI extern int ECORE_X_EVENT_SCREEN_CHANGE;
@@ -1338,7 +1347,12 @@
    
 EAPI int                 ecore_x_xinerama_screen_count_get(void);
 EAPI int                 ecore_x_xinerama_screen_geometry_get(int screen, int 
*x, int *y, int *w, int *h);
-   
+
+EAPI int                 ecore_x_screensaver_event_avaialable_get(void);
+EAPI void                ecore_x_screensaver_timeout_set(double timeout);
+EAPI double              ecore_x_screensaver_timeout_get(void);
+EAPI void                ecore_x_screensaver_event_listen_set(int on);
+       
 /* FIXME: these funcs need categorising */
 
 typedef struct _Ecore_X_Window_Attributes
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/Makefile.am,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -3 -r1.24 -r1.25
--- Makefile.am 13 Aug 2005 22:14:40 -0000      1.24
+++ Makefile.am 3 Mar 2006 04:01:15 -0000       1.25
@@ -5,6 +5,7 @@
 @Xprint_cflags@ \
 @Xinerama_cflags@ \
 @Xrandr_cflags@ \
[EMAIL PROTECTED]@ \
 @x_cflags@ \
 -I$(top_srcdir)/src/lib/ecore \
 -I$(top_srcdir)/src/lib/ecore_txt \
@@ -44,6 +45,7 @@
 ecore_x_pixmap.c \
 ecore_x_gc.c \
 ecore_x_xinerama.c \
+ecore_x_screensaver.c \
 ecore_x_private.h
 
 libecore_x_la_LIBADD = \
@@ -51,6 +53,7 @@
 @Xprint_libs@ \
 @Xinerama_libs@ \
 @Xrandr_libs@ \
[EMAIL PROTECTED]@ \
 @x_ldflags@ \
 @x_libs@ \
 $(top_builddir)/src/lib/ecore/libecore.la \
@@ -76,10 +79,14 @@
 ecore_x_events.c \
 ecore_x_icccm.c \
 ecore_x_netwm.c \
+ecore_x_mwm.c \
+ecore_x_e.c \
 ecore_x_selection.c \
 ecore_x_window.c \
 ecore_x_window_prop.c \
 ecore_x_window_shape.c \
 ecore_x_pixmap.c \
 ecore_x_gc.c \
+ecore_x_xinerama.c \
+ecore_x_screensaver.c \
 ecore_x_private.h
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x.c,v
retrieving revision 1.104
retrieving revision 1.105
diff -u -3 -r1.104 -r1.105
--- ecore_x.c   1 Feb 2006 11:24:49 -0000       1.104
+++ ecore_x.c   3 Mar 2006 04:01:15 -0000       1.105
@@ -17,6 +17,7 @@
 static Ecore_Fd_Handler *_ecore_x_fd_handler_handle = NULL;
 static Ecore_Event_Filter *_ecore_x_filter_handler = NULL;
 static int _ecore_x_event_shape_id = 0;
+static int _ecore_x_event_screensaver_id = 0;
 static int _ecore_x_event_sync_id = 0;
 #ifdef ECORE_XRANDR
 static int _ecore_x_event_randr_id = 0;
@@ -95,6 +96,7 @@
 EAPI int ECORE_X_EVENT_SELECTION_NOTIFY = 0;
 EAPI int ECORE_X_EVENT_CLIENT_MESSAGE = 0;
 EAPI int ECORE_X_EVENT_WINDOW_SHAPE = 0;
+EAPI int ECORE_X_EVENT_SCREENSAVER_NOTIFY = 0;
 EAPI int ECORE_X_EVENT_SYNC_COUNTER = 0;
 EAPI int ECORE_X_EVENT_SYNC_ALARM = 0;
 EAPI int ECORE_X_EVENT_SCREEN_CHANGE = 0;
@@ -150,6 +152,8 @@
 {
    int shape_base = 0;
    int shape_err_base = 0;
+   int screensaver_base = 0;
+   int screensaver_err_base = 0;
    int sync_base = 0;
    int sync_err_base = 0;
 #ifdef ECORE_XRANDR
@@ -171,6 +175,12 @@
      _ecore_x_event_shape_id = shape_base + ShapeNotify;
    if (_ecore_x_event_shape_id >= LASTEvent)
      _ecore_x_event_handlers_num = _ecore_x_event_shape_id + 1;
+#ifdef ECORE_XSS
+   if (XScreenSaverQueryExtension(_ecore_x_disp, &screensaver_base, 
&screensaver_err_base))
+     _ecore_x_event_screensaver_id = screensaver_base + ScreenSaverNotify;
+#endif   
+   if (_ecore_x_event_screensaver_id >= LASTEvent)
+     _ecore_x_event_handlers_num = _ecore_x_event_screensaver_id + 1;
 
    if (XSyncQueryExtension(_ecore_x_disp, &sync_base, &sync_err_base))
      {
@@ -235,6 +245,8 @@
    _ecore_x_event_handlers[ClientMessage]    = 
_ecore_x_event_handle_client_message;
    if (_ecore_x_event_shape_id)
      _ecore_x_event_handlers[_ecore_x_event_shape_id] = 
_ecore_x_event_handle_shape_change;
+   if (_ecore_x_event_screensaver_id)
+     _ecore_x_event_handlers[_ecore_x_event_screensaver_id] = 
_ecore_x_event_handle_screensaver_notify;
    if (_ecore_x_event_sync_id)
      {
        _ecore_x_event_handlers[_ecore_x_event_sync_id + XSyncCounterNotify] =
@@ -281,6 +293,7 @@
        ECORE_X_EVENT_SELECTION_NOTIFY         = ecore_event_type_new();
        ECORE_X_EVENT_CLIENT_MESSAGE           = ecore_event_type_new();
        ECORE_X_EVENT_WINDOW_SHAPE             = ecore_event_type_new();
+       ECORE_X_EVENT_SCREENSAVER_NOTIFY       = ecore_event_type_new();
        ECORE_X_EVENT_SYNC_COUNTER             = ecore_event_type_new();
        ECORE_X_EVENT_SYNC_ALARM               = ecore_event_type_new();
        ECORE_X_EVENT_SCREEN_CHANGE            = ecore_event_type_new();
@@ -550,24 +563,24 @@
    /* Tranverse window tree starting from root, and drag each
     * before the firing squad */
    for (i = 0; i < screens; ++i)
-   {
-      Window root_r;
-      Window parent_r;
-      Window *children_r = NULL;
-      unsigned int num_children = 0;
-
-      while (XQueryTree(_ecore_x_disp, root, &root_r, &parent_r,
-                       &children_r, &num_children) && (num_children > 0))
-      {
-         for (j = 0; j < num_children; ++j)
-         {
-            XKillClient(_ecore_x_disp, children_r[j]);
-         }
-
-         XFree(children_r);
-      }
-   }
-
+     {
+       Window root_r;
+       Window parent_r;
+       Window *children_r = NULL;
+       unsigned int num_children = 0;
+       
+       while (XQueryTree(_ecore_x_disp, root, &root_r, &parent_r,
+                         &children_r, &num_children) && (num_children > 0))
+         {
+            for (j = 0; j < num_children; ++j)
+              {
+                 XKillClient(_ecore_x_disp, children_r[j]);
+              }
+            
+            XFree(children_r);
+         }
+     }
+   
    XUngrabServer(_ecore_x_disp);
    XSync(_ecore_x_disp, False);
 }
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_events.c,v
retrieving revision 1.80
retrieving revision 1.81
diff -u -3 -r1.80 -r1.81
--- ecore_x_events.c    18 Feb 2006 04:35:43 -0000      1.80
+++ ecore_x_events.c    3 Mar 2006 04:01:15 -0000       1.81
@@ -1605,6 +1605,26 @@
 }
 
 void
+_ecore_x_event_handle_screensaver_notify(XEvent *xevent)
+{
+#ifdef ECORE_XSS
+   XScreenSaverNotifyEvent *screensaver_event;
+   Ecore_X_Event_Screensaver_Notify *e;
+   
+   screensaver_event = (XScreenSaverNotifyEvent *)xevent;
+   e = calloc(1, sizeof(Ecore_X_Event_Screensaver_Notify));
+   if (!e) return;
+   e->win = screensaver_event->window;
+   if (screensaver_event->state == ScreenSaverOn)
+     e->on = 1;
+   else 
+     e->on = 0;
+   e->time = screensaver_event->time;
+   ecore_event_add(ECORE_X_EVENT_SCREENSAVER_NOTIFY, e, NULL, NULL);
+#endif   
+}
+
+void
 _ecore_x_event_handle_sync_counter(XEvent *xevent)
 {
    XSyncCounterNotifyEvent *sync_counter_event;
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_private.h,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -3 -r1.51 -r1.52
--- ecore_x_private.h   30 Sep 2005 06:16:49 -0000      1.51
+++ ecore_x_private.h   3 Mar 2006 04:01:15 -0000       1.52
@@ -30,6 +30,9 @@
 #ifdef ECORE_XRANDR
 #include <X11/extensions/Xrandr.h>
 #endif
+#ifdef ECORE_XSS
+#include <X11/extensions/scrnsaver.h>
+#endif
 
 #include "ecore_private.h"
 #include "Ecore_X.h"
@@ -181,6 +184,7 @@
 void _ecore_x_event_handle_client_message(XEvent *xevent);
 void _ecore_x_event_handle_mapping_notify(XEvent *xevent);
 void _ecore_x_event_handle_shape_change(XEvent *xevent);
+void _ecore_x_event_handle_screensaver_notify(XEvent *xevent);
 void _ecore_x_event_handle_sync_counter(XEvent *xevent);
 void _ecore_x_event_handle_sync_alarm(XEvent *xevent);
 #ifdef ECORE_XRANDR




-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to