Enlightenment CVS committal
Author : tsauerbeck
Project : e17
Module : libs/ecore
Dir : e17/libs/ecore/src/lib/ecore
Modified Files:
Ecore.h ecore_main.c ecore_private.h
Log Message:
Added ECORE_FD_ERROR to go w/ ECORE_FD_READ AND _WRITE. I couldn't trigger the error
'event' though, which makes me wonder whether i missed something
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore/Ecore.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- Ecore.h 3 Feb 2004 19:49:46 -0000 1.4
+++ Ecore.h 24 Feb 2004 19:45:01 -0000 1.5
@@ -23,7 +23,8 @@
enum _Ecore_Fd_Handler_Flags
{
ECORE_FD_READ = 1, /**< Fd Read mask */
- ECORE_FD_WRITE = 2 /**< Fd Write mask */
+ ECORE_FD_WRITE = 2, /**< Fd Write mask */
+ ECORE_FD_ERROR = 4 /**< Fd Error mask */
};
typedef enum _Ecore_Fd_Handler_Flags Ecore_Fd_Handler_Flags;
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore/ecore_main.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- ecore_main.c 20 Feb 2004 07:06:25 -0000 1.4
+++ ecore_main.c 24 Feb 2004 19:45:01 -0000 1.5
@@ -104,6 +104,7 @@
fdh->flags = flags;
fdh->read_active = 0;
fdh->write_active = 0;
+ fdh->error_active = 0;
fdh->delete_me = 0;
fdh->func = func;
fdh->data = (void *)data;
@@ -182,6 +183,7 @@
ret = 0;
if ((flags & ECORE_FD_READ) && (fd_handler->read_active)) ret = 1;
if ((flags & ECORE_FD_WRITE) && (fd_handler->write_active)) ret = 1;
+ if ((flags & ECORE_FD_ERROR) && (fd_handler->error_active)) ret = 1;
return ret;
}
@@ -231,7 +233,7 @@
_ecore_main_select(double timeout)
{
struct timeval tv, *t;
- fd_set rfds, wfds;
+ fd_set rfds, wfds, exfds;
int max_fd;
int ret;
Ecore_List *l;
@@ -256,6 +258,7 @@
max_fd = 0;
FD_ZERO(&rfds);
FD_ZERO(&wfds);
+ FD_ZERO(&exfds);
for (l = (Ecore_List *)fd_handlers; l; l = l->next)
{
Ecore_Fd_Handler *fdh;
@@ -271,9 +274,14 @@
FD_SET(fdh->fd, &wfds);
if (fdh->fd > max_fd) max_fd = fdh->fd;
}
+ if (fdh->flags & ECORE_FD_ERROR)
+ {
+ FD_SET(fdh->fd, &exfds);
+ if (fdh->fd > max_fd) max_fd = fdh->fd;
+ }
}
if (_ecore_signal_count_get()) return -1;
- ret = select(max_fd + 1, &rfds, &wfds, NULL, t);
+ ret = select(max_fd + 1, &rfds, &wfds, &exfds, t);
if (ret < 0)
{
if (errno == EINTR) return -1;
@@ -291,6 +299,8 @@
fdh->read_active = 1;
if (FD_ISSET(fdh->fd, &wfds))
fdh->write_active = 1;
+ if (FD_ISSET(fdh->fd, &exfds))
+ fdh->error_active = 1;
}
}
_ecore_main_fd_handlers_cleanup();
@@ -333,7 +343,7 @@
fdh = (Ecore_Fd_Handler *)l;
if (!fdh->delete_me)
{
- if ((fdh->read_active) || (fdh->write_active))
+ if ((fdh->read_active) || (fdh->write_active) || (fdh->error_active))
{
if (!fdh->func(fdh->data, fdh))
{
@@ -342,6 +352,7 @@
}
fdh->read_active = 0;
fdh->write_active = 0;
+ fdh->error_active = 0;
}
}
}
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore/ecore_private.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- ecore_private.h 19 Jan 2004 19:31:21 -0000 1.3
+++ ecore_private.h 24 Feb 2004 19:45:01 -0000 1.4
@@ -38,7 +38,8 @@
enum _Ecore_Fd_Handler_Flags
{
ECORE_FD_READ = 1,
- ECORE_FD_WRITE = 2
+ ECORE_FD_WRITE = 2,
+ ECORE_FD_ERROR = 4
};
typedef enum _Ecore_Fd_Handler_Flags Ecore_Fd_Handler_Flags;
@@ -97,6 +98,7 @@
Ecore_Fd_Handler_Flags flags;
int read_active : 1;
int write_active : 1;
+ int error_active : 1;
int delete_me : 1;
int (*func) (void *data, Ecore_Fd_Handler *fd_handler);
void *data;
-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs