[vlc-devel] [PATCH 1/2] libacces_mms_plugins: fix linkage on OS/2
KO Myung-Hun
komh78 at gmail.com
Fri Nov 28 04:13:57 CET 2014
Ping ?
KO Myung-Hun wrote:
>
>
> Rémi Denis-Courmont wrote:
>> Le samedi 22 novembre 2014, 18:11:50 KO Myung-Hun a écrit :
>>> +VLC_API int vlc_poll (struct pollfd *fds, unsigned nfds, int timeout);
>>>
>>> -#endif /* LIBVLC_USE_PTHREAD_CANCEL */
>>> +#define poll(u,n,t) vlc_poll(u, n, t)
>>
>> Apparently, I was not clear enough. I do *NOT* want poll() to go through
>> LibVLC on POSIX systems (or any other systems where it would not need to be
>> wrapped).
>>
>
> Fixed.
>
>
>
>
> 0001-libacces_mms_plugins-fix-linkage-on-OS-2.patch
>
>
> From 4142c2b938710613461f82e977843876aeafeff1 Mon Sep 17 00:00:00 2001
> From: KO Myung-Hun <komh at chollian.net>
> Date: Sat, 22 Nov 2014 17:20:32 +0900
> Subject: [PATCH] libacces_mms_plugins: fix linkage on OS/2
>
> -----
> CCLD libaccess_mms_plugin.la
> weakld: error: Unresolved symbol (UNDEF) '_vlc_poll'.
> weakld: info: The symbol is referenced by:
> P:\tmp\ldconv_libaccess_mms_plugin_la-mmstu_38da54703f4316fd10.obj
> Ignoring unresolved externals reported from weak prelinker.
> Error! E2028: _vlc_poll is an undefined reference
> file P:/tmp\ldconv_libaccess_mms_plugin_la-mmstu_38da54703f4316fd10.obj(ldconv_libaccess_mms_plugin_la-mmstu_38da54703f4316fd10.obj): undefined symbol _vlc_poll
> -----
> ---
> include/vlc_threads.h | 25 ++----------------------
> src/Makefile.am | 1 +
> src/extras/poll.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++
> src/libvlccore.sym | 1 +
> 4 files changed, 57 insertions(+), 23 deletions(-)
> create mode 100644 src/extras/poll.c
>
> diff --git a/include/vlc_threads.h b/include/vlc_threads.h
> index 00435cb..94a768d 100644
> --- a/include/vlc_threads.h
> +++ b/include/vlc_threads.h
> @@ -388,32 +388,11 @@ struct vlc_cleanup_t
>
> #endif /* !LIBVLC_USE_PTHREAD_CLEANUP */
>
> -#ifndef LIBVLC_USE_PTHREAD_CANCEL
> /* poll() with cancellation */
> -# ifdef __OS2__
> -int vlc_poll (struct pollfd *fds, unsigned nfds, int timeout);
> -# else
> -static inline int vlc_poll (struct pollfd *fds, unsigned nfds, int timeout)
> -{
> - int val;
> -
> - do
> - {
> - int ugly_timeout = ((unsigned)timeout >= 50) ? 50 : timeout;
> - if (timeout >= 0)
> - timeout -= ugly_timeout;
> -
> - vlc_testcancel ();
> - val = poll (fds, nfds, ugly_timeout);
> - }
> - while (val == 0 && timeout != 0);
> -
> - return val;
> -}
> -# endif
> +VLC_API int vlc_poll (struct pollfd *fds, unsigned nfds, int timeout);
>
> +#ifndef LIBVLC_USE_PTHREAD_CANCEL
> # define poll(u,n,t) vlc_poll(u, n, t)
> -
> #endif /* LIBVLC_USE_PTHREAD_CANCEL */
>
> static inline void vlc_cleanup_lock (void *lock)
> diff --git a/src/Makefile.am b/src/Makefile.am
> index e200669..62fcd21 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -480,6 +480,7 @@ SOURCES_libvlc_common = \
> misc/update_crypto.c \
> misc/xml.c \
> extras/libc.c \
> + extras/poll.c \
> extras/tdestroy.c \
> misc/addons.c \
> misc/filter.c \
> diff --git a/src/extras/poll.c b/src/extras/poll.c
> new file mode 100644
> index 0000000..9f62ca2
> --- /dev/null
> +++ b/src/extras/poll.c
> @@ -0,0 +1,53 @@
> +/*****************************************************************************
> + * poll.c: poll() replacement function for systems without cancelable poll()
> + *****************************************************************************
> + * Copyright (C) 2014 VLC authors and VideoLAN
> + *
> + * Authors: KO Myung-Hun <komh at chollian.net>
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU Lesser General Public License as published by
> + * the Free Software Foundation; either version 2.1 of the License, or
> + * (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public License
> + * along with this program; if not, write to the Free Software Foundation,
> + * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
> + *****************************************************************************/
> +
> +#ifdef HAVE_CONFIG_H
> +# include "config.h"
> +#endif
> +
> +#include <vlc_common.h>
> +#include <vlc_threads.h>
> +
> +/* vlc_poll() for OS/2 is in src/os2/thread.c */
> +#ifndef __OS2__
> +int vlc_poll (struct pollfd *fds, unsigned nfds, int timeout)
> +{
> +# ifndef LIBVLC_USE_PTHREAD_CANCEL
> + int val;
> +
> + do
> + {
> + int ugly_timeout = ((unsigned)timeout >= 50) ? 50 : timeout;
> + if (timeout >= 0)
> + timeout -= ugly_timeout;
> +
> + vlc_testcancel ();
> + val = (poll) (fds, nfds, ugly_timeout);
> + }
> + while (val == 0 && timeout != 0);
> +
> + return val;
> +# else
> + return (poll) (fds, nfds, timeout);
> +# endif
> +}
> +#endif
> diff --git a/src/libvlccore.sym b/src/libvlccore.sym
> index 10e036a..4efcf8b 100644
> --- a/src/libvlccore.sym
> +++ b/src/libvlccore.sym
> @@ -650,3 +650,4 @@ addons_manager_Remove
> addon_entry_New
> addon_entry_Hold
> addon_entry_Release
> +vlc_poll
>
>
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
--
KO Myung-Hun
Using Mozilla SeaMonkey 2.7.2
Under OS/2 Warp 4 for Korean with FixPak #15
In VirtualBox v4.1.32 on Intel Core i7-3615QM 2.30GHz with 8GB RAM
Korean OS/2 User Community : http://www.ecomstation.co.kr
More information about the vlc-devel
mailing list