vlc | branch: master | Rémi Denis-Courmont <r...@remlab.net> | Fri Feb 2 16:57:19 2018 +0200| [ad5a38ab182eb3afed785b8f6624fe4ceaaee723] | committer: Rémi Denis-Courmont
caca: merge event thread library (With removal of AA, this is now the only user.) > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=ad5a38ab182eb3afed785b8f6624fe4ceaaee723 --- modules/video_output/Makefile.am | 7 +-- modules/video_output/caca.c | 73 ++++++++++++++++++++++++- modules/video_output/event_thread.c | 103 ------------------------------------ modules/video_output/event_thread.h | 30 ----------- 4 files changed, 73 insertions(+), 140 deletions(-) diff --git a/modules/video_output/Makefile.am b/modules/video_output/Makefile.am index 1718a20cff..17967b51af 100644 --- a/modules/video_output/Makefile.am +++ b/modules/video_output/Makefile.am @@ -406,7 +406,7 @@ vout_LTLIBRARIES += $(LTLIBfb) ### Coloured ASCII art ### libcaca_plugin_la_SOURCES = video_output/caca.c libcaca_plugin_la_CFLAGS = $(AM_CFLAGS) $(CACA_CFLAGS) -libcaca_plugin_la_LIBADD = libevent_thread.la $(CACA_LIBS) +libcaca_plugin_la_LIBADD = $(CACA_LIBS) if !HAVE_WIN32 if !HAVE_DARWIN libcaca_plugin_la_LIBADD += $(X_LIBS) $(X_PRE_LIBS) -lX11 @@ -430,8 +430,3 @@ vout_LTLIBRARIES += \ libvdummy_plugin.la \ libvmem_plugin.la \ libyuv_plugin.la - -libevent_thread_la_SOURCES = \ - video_output/event_thread.c video_output/event_thread.h -libevent_thread_la_LDFLAGS = -static -noinst_LTLIBRARIES += libevent_thread.la diff --git a/modules/video_output/caca.c b/modules/video_output/caca.c index a4442ce636..25e80f2f8e 100644 --- a/modules/video_output/caca.c +++ b/modules/video_output/caca.c @@ -30,7 +30,11 @@ # include "config.h" #endif +#include <stdnoreturn.h> +#include <stdlib.h> +#include <string.h> #include <vlc_common.h> +#include <vlc_block.h> #include <vlc_plugin.h> #include <vlc_vout_display.h> #include <vlc_picture_pool.h> @@ -42,7 +46,74 @@ #endif #include <caca.h> -#include "event_thread.h" + +typedef struct vout_display_event_thread { + vout_display_t *vd; + block_fifo_t *fifo; + vlc_thread_t thread; +} vout_display_event_thread_t; + +noreturn static void *VoutDisplayEventKeyDispatch(void *data) +{ + vout_display_event_thread_t *vdet = data; + vout_display_t *vd = vdet->vd; + block_fifo_t *fifo = vdet->fifo; + + for (;;) { + block_t *event = block_FifoGet(fifo); + + int cancel = vlc_savecancel(); + int key; + + memcpy(&key, event->p_buffer, sizeof (key)); + block_Release(event); + vout_display_SendEventKey(vd, key); + vlc_restorecancel(cancel); + } +} + +static void VoutDisplayEventKey(vout_display_event_thread_t *vdet, int key) +{ + if (unlikely(vdet == NULL)) + return; + + block_t *event = block_Alloc(sizeof (key)); + if (likely(event != NULL)) { + memcpy(event->p_buffer, &key, sizeof (key)); + block_FifoPut(vdet->fifo, event); + } +} + +static struct vout_display_event_thread * +VoutDisplayEventCreateThread(vout_display_t *vd) +{ + vout_display_event_thread_t *vdet = malloc(sizeof (*vdet)); + if (unlikely(vdet == NULL)) + return NULL; + + vdet->vd = vd; + vdet->fifo = block_FifoNew(); + if (unlikely(vdet->fifo == NULL)) { + free(vdet); + return NULL; + } + + if (vlc_clone(&vdet->thread, VoutDisplayEventKeyDispatch, vdet, + VLC_THREAD_PRIORITY_LOW)) { + block_FifoRelease(vdet->fifo); + free(vdet); + return NULL; + } + return vdet; +} + +static void VoutDisplayEventKillThread(vout_display_event_thread_t *vdet) +{ + vlc_cancel(vdet->thread); + vlc_join(vdet->thread, NULL); + block_FifoRelease(vdet->fifo); + free(vdet); +} /***************************************************************************** * Module descriptor diff --git a/modules/video_output/event_thread.c b/modules/video_output/event_thread.c deleted file mode 100644 index 817de309a8..0000000000 --- a/modules/video_output/event_thread.c +++ /dev/null @@ -1,103 +0,0 @@ -/***************************************************************************** - * event.c: event thread for broken old video output display plugins - ***************************************************************************** - * Copyright (C) 2009 Laurent Aimar - * $Id$ - * - * Authors: Laurent Aimar <fenrir _AT_ videolan _DOT_ org> - * - * 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 <stdnoreturn.h> -#include <stdlib.h> -#include <string.h> -#include <vlc_common.h> -#include <vlc_block.h> -#include <vlc_vout_display.h> - -#include "event_thread.h" - -struct vout_display_event_thread { - vout_display_t *vd; - block_fifo_t *fifo; - vlc_thread_t thread; -}; - -noreturn static void *VoutDisplayEventKeyDispatch(void *data) -{ - vout_display_event_thread_t *vdet = data; - vout_display_t *vd = vdet->vd; - block_fifo_t *fifo = vdet->fifo; - - for (;;) { - block_t *event = block_FifoGet(fifo); - - int cancel = vlc_savecancel(); - int key; - - memcpy(&key, event->p_buffer, sizeof (key)); - block_Release(event); - vout_display_SendEventKey(vd, key); - vlc_restorecancel(cancel); - } -} - -void VoutDisplayEventKey(vout_display_event_thread_t *vdet, int key) -{ - if (unlikely(vdet == NULL)) - return; - - block_t *event = block_Alloc(sizeof (key)); - if (likely(event != NULL)) { - memcpy(event->p_buffer, &key, sizeof (key)); - block_FifoPut(vdet->fifo, event); - } -} - -struct vout_display_event_thread * -VoutDisplayEventCreateThread(vout_display_t *vd) -{ - vout_display_event_thread_t *vdet = malloc(sizeof (*vdet)); - if (unlikely(vdet == NULL)) - return NULL; - - vdet->vd = vd; - vdet->fifo = block_FifoNew(); - if (unlikely(vdet->fifo == NULL)) { - free(vdet); - return NULL; - } - - if (vlc_clone(&vdet->thread, VoutDisplayEventKeyDispatch, vdet, - VLC_THREAD_PRIORITY_LOW)) { - block_FifoRelease(vdet->fifo); - free(vdet); - return NULL; - } - return vdet; -} - -void VoutDisplayEventKillThread(vout_display_event_thread_t *vdet) -{ - vlc_cancel(vdet->thread); - vlc_join(vdet->thread, NULL); - block_FifoRelease(vdet->fifo); - free(vdet); -} diff --git a/modules/video_output/event_thread.h b/modules/video_output/event_thread.h deleted file mode 100644 index 8dd9ff1b99..0000000000 --- a/modules/video_output/event_thread.h +++ /dev/null @@ -1,30 +0,0 @@ -/***************************************************************************** - * event_thread.h: event thread for legacy video output display plugins - ***************************************************************************** - * Copyright (C) 2009 Laurent Aimar - * $Id$ - * - * Authors: Laurent Aimar <fenrir _AT_ videolan _DOT_ org> - * - * 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. - *****************************************************************************/ - -typedef struct vout_display_event_thread vout_display_event_thread_t; - -void VoutDisplayEventKey(vout_display_event_thread_t *vdet, int key); -struct vout_display_event_thread * -VoutDisplayEventCreateThread(vout_display_t *) VLC_USED; -void VoutDisplayEventKillThread(vout_display_event_thread_t *); - _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits