[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