[vlc-commits] win32: split timers to separate module
Rémi Denis-Courmont
git at videolan.org
Tue Sep 20 18:16:07 CEST 2016
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Tue Sep 20 19:13:19 2016 +0300| [436d383a432081846d1b46a473253e41d2d706db] | committer: Rémi Denis-Courmont
win32: split timers to separate module
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=436d383a432081846d1b46a473253e41d2d706db
---
src/Makefile.am | 1 +
src/win32/thread.c | 74 ---------------------------------------
src/win32/timer.c | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 101 insertions(+), 74 deletions(-)
diff --git a/src/Makefile.am b/src/Makefile.am
index 6020d0c..d612840 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -358,6 +358,7 @@ libvlccore_la_SOURCES += \
win32/rand.c \
win32/specific.c \
win32/thread.c \
+ win32/timer.c \
win32/winsock.c
else
if HAVE_OS2
diff --git a/src/win32/thread.c b/src/win32/thread.c
index 9eb3db7..740f7a2 100644
--- a/src/win32/thread.c
+++ b/src/win32/thread.c
@@ -967,80 +967,6 @@ size_t EnumClockSource (vlc_object_t *obj, const char *var,
}
-/*** Timers ***/
-struct vlc_timer
-{
- HANDLE handle;
- void (*func) (void *);
- void *data;
-};
-
-static void CALLBACK vlc_timer_do (void *val, BOOLEAN timeout)
-{
- struct vlc_timer *timer = val;
-
- assert (timeout);
- timer->func (timer->data);
-}
-
-int vlc_timer_create (vlc_timer_t *id, void (*func) (void *), void *data)
-{
- struct vlc_timer *timer = malloc (sizeof (*timer));
-
- if (timer == NULL)
- return ENOMEM;
- timer->func = func;
- timer->data = data;
- timer->handle = INVALID_HANDLE_VALUE;
- *id = timer;
- return 0;
-}
-
-void vlc_timer_destroy (vlc_timer_t timer)
-{
-#if !VLC_WINSTORE_APP
- if (timer->handle != INVALID_HANDLE_VALUE)
- DeleteTimerQueueTimer (NULL, timer->handle, INVALID_HANDLE_VALUE);
-#endif
- free (timer);
-}
-
-void vlc_timer_schedule (vlc_timer_t timer, bool absolute,
- mtime_t value, mtime_t interval)
-{
- if (timer->handle != INVALID_HANDLE_VALUE)
- {
-#if !VLC_WINSTORE_APP
- DeleteTimerQueueTimer (NULL, timer->handle, INVALID_HANDLE_VALUE);
-#endif
- timer->handle = INVALID_HANDLE_VALUE;
- }
- if (value == 0)
- return; /* Disarm */
-
- if (absolute)
- {
- value -= mdate ();
- if (value < 0)
- value = 0;
- }
- value = (value + 999) / 1000;
- interval = (interval + 999) / 1000;
-
-#if !VLC_WINSTORE_APP
- if (!CreateTimerQueueTimer (&timer->handle, NULL, vlc_timer_do, timer,
- value, interval, WT_EXECUTEDEFAULT))
-#endif
- abort ();
-}
-
-unsigned vlc_timer_getoverrun (vlc_timer_t timer)
-{
- (void)timer;
- return 0;
-}
-
-
/*** CPU ***/
unsigned vlc_GetCPUCount (void)
{
diff --git a/src/win32/timer.c b/src/win32/timer.c
new file mode 100644
index 0000000..c57eff7
--- /dev/null
+++ b/src/win32/timer.c
@@ -0,0 +1,100 @@
+/*****************************************************************************
+ * timer.c : Win32 timers for LibVLC
+ *****************************************************************************
+ * Copyright (C) 2009-2016 Rémi Denis-Courmont
+ *
+ * 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 <assert.h>
+#include <stdlib.h>
+#include <windows.h>
+#include <vlc_common.h>
+
+struct vlc_timer
+{
+ HANDLE handle;
+ void (*func) (void *);
+ void *data;
+};
+
+static void CALLBACK vlc_timer_do (void *val, BOOLEAN timeout)
+{
+ struct vlc_timer *timer = val;
+
+ assert (timeout);
+ timer->func (timer->data);
+}
+
+int vlc_timer_create (vlc_timer_t *id, void (*func) (void *), void *data)
+{
+ struct vlc_timer *timer = malloc (sizeof (*timer));
+
+ if (timer == NULL)
+ return ENOMEM;
+ timer->func = func;
+ timer->data = data;
+ timer->handle = INVALID_HANDLE_VALUE;
+ *id = timer;
+ return 0;
+}
+
+void vlc_timer_destroy (vlc_timer_t timer)
+{
+#if !VLC_WINSTORE_APP
+ if (timer->handle != INVALID_HANDLE_VALUE)
+ DeleteTimerQueueTimer (NULL, timer->handle, INVALID_HANDLE_VALUE);
+#endif
+ free (timer);
+}
+
+void vlc_timer_schedule (vlc_timer_t timer, bool absolute,
+ mtime_t value, mtime_t interval)
+{
+ if (timer->handle != INVALID_HANDLE_VALUE)
+ {
+#if !VLC_WINSTORE_APP
+ DeleteTimerQueueTimer (NULL, timer->handle, INVALID_HANDLE_VALUE);
+#endif
+ timer->handle = INVALID_HANDLE_VALUE;
+ }
+ if (value == 0)
+ return; /* Disarm */
+
+ if (absolute)
+ {
+ value -= mdate ();
+ if (value < 0)
+ value = 0;
+ }
+ value = (value + 999) / 1000;
+ interval = (interval + 999) / 1000;
+
+#if !VLC_WINSTORE_APP
+ if (!CreateTimerQueueTimer (&timer->handle, NULL, vlc_timer_do, timer,
+ value, interval, WT_EXECUTEDEFAULT))
+#endif
+ abort ();
+}
+
+unsigned vlc_timer_getoverrun (vlc_timer_t timer)
+{
+ (void)timer;
+ return 0;
+}
More information about the vlc-commits
mailing list