From d934fc525f6be873a56c54dd97d0aa8f5fead910 Mon Sep 17 00:00:00 2001 From: Derk-Jan Hartman Date: Wed, 6 Aug 2008 16:58:02 +0200 Subject: [PATCH] poll(): ifndef HAVE_POLL means we don't use poll(), not that it doesn't exist. In OSX poll() is broken for sockets, so we don't use it. Since poll is a kernel function in OSX however, the kernel implementation was used whenever we used poll(), instead of VLCs private poll() which was the intended behaviour. Renamed poll() to vlc_poll() to prevent this. This fixes #1687, receiving SAPs on Mac OS X. --- include/vlc_fixups.h | 4 ++++ include/vlc_network.h | 2 +- src/extras/libc.c | 7 ++++++- src/libvlc.h | 4 ++++ src/libvlccore.sym | 2 +- src/network/poll.c | 2 +- 6 files changed, 17 insertions(+), 4 deletions(-) diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h index df250fc818..1c20492ba8 100644 --- a/include/vlc_fixups.h +++ b/include/vlc_fixups.h @@ -235,4 +235,8 @@ typedef void *locale_t; #define N_(str) gettext_noop (str) #define gettext_noop(str) (str) +#ifndef HAVE_POLL +#define poll vlc_poll +#endif + #endif /* !LIBVLC_FIXUPS_H */ diff --git a/include/vlc_network.h b/include/vlc_network.h index aca2b0a704..bdba45fb3e 100644 --- a/include/vlc_network.h +++ b/include/vlc_network.h @@ -181,7 +181,7 @@ struct pollfd int revents; }; - VLC_EXPORT (int, poll, (struct pollfd *fds, unsigned nfds, int timeout)); + VLC_EXPORT (int, vlc_poll, (struct pollfd *fds, unsigned nfds, int timeout)); #endif #ifdef WIN32 diff --git a/src/extras/libc.c b/src/extras/libc.c index f58f05fe77..77db6ef6d2 100644 --- a/src/extras/libc.c +++ b/src/extras/libc.c @@ -58,7 +58,12 @@ # include # include # include -# include +#ifdef HAVE_POLL +# include +#else +#undef _poll +#include +#endif #endif #if defined(WIN32) || defined(UNDER_CE) diff --git a/src/libvlc.h b/src/libvlc.h index 0c7c295846..6c1f281b3d 100644 --- a/src/libvlc.h +++ b/src/libvlc.h @@ -322,4 +322,8 @@ void vlc_rewinddir (void *); # define rewinddir vlc_rewinddir #endif +#ifndef HAVE_POLL +# define _poll vlc_poll +#endif + #endif diff --git a/src/libvlccore.sym b/src/libvlccore.sym index 0d4039d49a..51184a68b4 100644 --- a/src/libvlccore.sym +++ b/src/libvlccore.sym @@ -278,7 +278,7 @@ playlist_ServicesDiscoveryRemove playlist_TreeMove __pl_Release __pl_Yield -poll +vlc_poll resolve_xml_special_chars sdp_AddAttribute sdp_AddMedia diff --git a/src/network/poll.c b/src/network/poll.c index df92479e03..7af929b0cb 100644 --- a/src/network/poll.c +++ b/src/network/poll.c @@ -32,7 +32,7 @@ #include #include -int poll (struct pollfd *fds, unsigned nfds, int timeout) +int vlc_poll (struct pollfd *fds, unsigned nfds, int timeout) { fd_set rdset, wrset, exset; struct timeval tv = { 0, 0 }; -- 2.39.2