[vlc-devel] [PATCH] aout: wasapi: disable deferred start for Winstore builds
Steve Lhomme
robux4 at ycbcr.xyz
Wed Apr 8 14:54:35 CEST 2020
The timer API is not supported.
Using vlc_timer_schedule() might work but is heavier/slower as it's using
posix/timer.c which uses a thread to run the callback.
---
modules/audio_output/wasapi.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/modules/audio_output/wasapi.c b/modules/audio_output/wasapi.c
index 5180e93f8e8..61b6cc13d6f 100644
--- a/modules/audio_output/wasapi.c
+++ b/modules/audio_output/wasapi.c
@@ -91,7 +91,9 @@ static msftime_t GetQPC(void)
typedef struct aout_stream_sys
{
IAudioClient *client;
+#if !VLC_WINSTORE_APP
HANDLE hTimer;
+#endif // !VLC_WINSTORE_APP
#define STARTED_STATE_INIT 0
#define STARTED_STATE_OK 1
@@ -111,12 +113,16 @@ typedef struct aout_stream_sys
static void ResetTimer(aout_stream_t *s)
{
+#if !VLC_WINSTORE_APP
aout_stream_sys_t *sys = s->sys;
if (sys->hTimer != NULL)
{
DeleteTimerQueueTimer(NULL, sys->hTimer, INVALID_HANDLE_VALUE);
sys->hTimer = NULL;
}
+#else // VLC_WINSTORE_APP
+ VLC_UNUSED(s);
+#endif // VLC_WINSTORE_APP
}
/*** VLC audio output callbacks ***/
@@ -160,6 +166,7 @@ static HRESULT TimeGet(aout_stream_t *s, vlc_tick_t *restrict delay)
return hr;
}
+#if !VLC_WINSTORE_APP
static void CALLBACK StartDeferredCallback(void *val, BOOLEAN timeout)
{
aout_stream_t *s = val;
@@ -170,15 +177,17 @@ static void CALLBACK StartDeferredCallback(void *val, BOOLEAN timeout)
SUCCEEDED(hr) ? STARTED_STATE_OK : STARTED_STATE_ERROR);
(void) timeout;
}
+#endif // !VLC_WINSTORE_APP
static HRESULT StartDeferred(aout_stream_t *s, vlc_tick_t date)
{
aout_stream_sys_t *sys = s->sys;
vlc_tick_t written = vlc_tick_from_frac(sys->written, sys->rate);
vlc_tick_t start_delay = date - vlc_tick_now() - written;
- DWORD start_delay_ms = start_delay > 0 ? MS_FROM_VLC_TICK(start_delay) : 0;
BOOL timer_updated = false;
+#if !VLC_WINSTORE_APP
+ DWORD start_delay_ms = start_delay > 0 ? MS_FROM_VLC_TICK(start_delay) : 0;
/* Create or update the current timer */
if (start_delay_ms > 0)
{
@@ -195,6 +204,7 @@ static HRESULT StartDeferred(aout_stream_t *s, vlc_tick_t date)
}
else
ResetTimer(s);
+#endif
if (!timer_updated)
{
@@ -747,7 +757,9 @@ static HRESULT Start(aout_stream_t *s, audio_sample_format_t *restrict pfmt,
if (unlikely(sys == NULL))
return E_OUTOFMEMORY;
sys->client = NULL;
+#if !VLC_WINSTORE_APP
sys->hTimer = NULL;
+#endif // !VLC_WINSTORE_APP
atomic_init(&sys->started_state, STARTED_STATE_INIT);
/* Configure audio stream */
--
2.17.1
More information about the vlc-devel
mailing list