From 8249763f6ceec6b9276ce58380b9085fd7e01612 Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Fri, 4 Jan 2019 18:36:43 +0530 Subject: [PATCH] wasapi: Fix double call to Start when resetting the element When either the source or sink goes from PLAYING -> NULL -> PLAYING, we call _reset() which sets client_needs_restart, and then we call prepare() which calls IAudioClient_Start(), so we don't need to call it again in src_read() or sink_write(). Unlike when we're just going PLAYING -> PAUSED -> PLAYING. --- sys/wasapi/gstwasapisink.c | 1 + sys/wasapi/gstwasapisrc.c | 1 + 2 files changed, 2 insertions(+) diff --git a/sys/wasapi/gstwasapisink.c b/sys/wasapi/gstwasapisink.c index 4adebe8..1e3b07a 100644 --- a/sys/wasapi/gstwasapisink.c +++ b/sys/wasapi/gstwasapisink.c @@ -557,6 +557,7 @@ gst_wasapi_sink_prepare (GstAudioSink * asink, GstAudioRingBufferSpec * spec) hr = IAudioClient_Start (self->client); HR_FAILED_GOTO (hr, IAudioClient::Start, beach); + self->client_needs_restart = FALSE; gst_audio_ring_buffer_set_channel_positions (GST_AUDIO_BASE_SINK (self)->ringbuffer, self->positions); diff --git a/sys/wasapi/gstwasapisrc.c b/sys/wasapi/gstwasapisrc.c index aecf0bd..3d28b5c 100644 --- a/sys/wasapi/gstwasapisrc.c +++ b/sys/wasapi/gstwasapisrc.c @@ -508,6 +508,7 @@ gst_wasapi_src_prepare (GstAudioSrc * asrc, GstAudioRingBufferSpec * spec) hr = IAudioClient_Start (self->client); HR_FAILED_GOTO (hr, IAudioClock::Start, beach); + self->client_needs_restart = FALSE; gst_audio_ring_buffer_set_channel_positions (GST_AUDIO_BASE_SRC (self)->ringbuffer, self->positions); -- 2.7.4