Update of /cvsroot/alsa/alsa-oss/oss-redir In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25512/oss-redir
Modified Files: oss-redir.c oss-redir.h Log Message: - a try to let OSS mmap mode work with dmix plugin - call avail_update in GETIPTR and GETOPTR functions (fixme) - fixed/enhanced semantics of select_prepare (should work now) Index: oss-redir.c =================================================================== RCS file: /cvsroot/alsa/alsa-oss/oss-redir/oss-redir.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- oss-redir.c 14 Feb 2004 18:42:18 -0000 1.6 +++ oss-redir.c 18 Feb 2004 20:17:05 -0000 1.7 @@ -50,10 +50,10 @@ void * (*oss_pcm_mmap)(void *start, size_t length, int prot, int flags, int fd, off_t offset); int (*oss_pcm_munmap)(void *start, size_t length); int (*oss_pcm_ioctl)(int fd, unsigned long int request, ...); -int (*oss_pcm_select_prepare)(int fd, fd_set *readfds, fd_set *writefds, fd_set *exceptfds); +int (*oss_pcm_select_prepare)(int fd, int fmode, fd_set *readfds, fd_set *writefds, fd_set *exceptfds); int (*oss_pcm_select_result)(int fd, fd_set *readfds, fd_set *writefds, fd_set *exceptfds); int (*oss_pcm_poll_fds)(int fd); -int (*oss_pcm_poll_prepare)(int fd, struct pollfd *ufds); +int (*oss_pcm_poll_prepare)(int fd, int fmode, struct pollfd *ufds); int (*oss_pcm_poll_result)(int fd, struct pollfd *ufds); static int (*x_oss_mixer_open)(const char *pathname, int flags); @@ -75,21 +75,21 @@ return 0; } -static int native_pcm_select_prepare(int fd, fd_set *readfds, fd_set *writefds, fd_set *exceptfds) +static int native_pcm_select_prepare(int fd, int fmode, fd_set *readfds, fd_set *writefds, fd_set *exceptfds) { if (fd < 0) return -EINVAL; - if (readfds) { + if ((fmode & O_ACCMODE) != O_WRONLY && readfds) { FD_SET(fd, readfds); if (exceptfds) FD_SET(fd, exceptfds); } - if (writefds) { + if ((fmode & O_ACCMODE) != O_RDONLY && writefds) { FD_SET(fd, writefds); if (exceptfds) FD_SET(fd, exceptfds); } - return 0; + return fd; } static int native_pcm_select_result(int fd, fd_set *readfds, fd_set *writefds, fd_set *exceptfds) @@ -114,13 +114,14 @@ return 1; } -static int native_pcm_poll_prepare(int fd, struct pollfd *ufds) +static int native_pcm_poll_prepare(int fd, int fmode, struct pollfd *ufds) { if (fd < 0) return -EINVAL; ufds->fd = fd; - ufds->events = POLLIN | POLLOUT | POLLERR; - return 0; + ufds->events = ((fmode & O_ACCMODE) == O_WRONLY ? 0 : POLLIN) | + ((fmode & O_ACCMODE) == O_RDONLY ? 0 : POLLOUT) | POLLERR; + return 1; } static int native_pcm_poll_result(int fd, struct pollfd *ufds) Index: oss-redir.h =================================================================== RCS file: /cvsroot/alsa/alsa-oss/oss-redir/oss-redir.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- oss-redir.h 12 Feb 2004 17:16:07 -0000 1.5 +++ oss-redir.h 18 Feb 2004 20:17:05 -0000 1.6 @@ -41,10 +41,10 @@ extern void * (*oss_pcm_mmap)(void *start, size_t length, int prot, int flags, int fd, off_t offset); extern int (*oss_pcm_munmap)(void *start, size_t length); extern int (*oss_pcm_ioctl)(int fd, unsigned long int request, ...); -extern int (*oss_pcm_select_prepare)(int fd, fd_set *readfds, fd_set *writefds, fd_set *exceptfds); +extern int (*oss_pcm_select_prepare)(int fd, int fmode, fd_set *readfds, fd_set *writefds, fd_set *exceptfds); extern int (*oss_pcm_select_result)(int fd, fd_set *readfds, fd_set *writefds, fd_set *exceptfds); extern int (*oss_pcm_poll_fds)(int fd); -extern int (*oss_pcm_poll_prepare)(int fd, struct pollfd *ufds); +extern int (*oss_pcm_poll_prepare)(int fd, int fmode, struct pollfd *ufds); extern int (*oss_pcm_poll_result)(int fd, struct pollfd *ufds); extern int oss_mixer_open(const char *pathname, int flags, ...); ------------------------------------------------------- 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 _______________________________________________ Alsa-cvslog mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-cvslog