[vlc-commits] caca: merge event thread library
Rémi Denis-Courmont
git at videolan.org
Fri Feb 2 16:44:01 CET 2018
vlc | branch: master | Rémi Denis-Courmont <remi at 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 *);
-
More information about the vlc-commits
mailing list