[PATCH 4/4] dmsynth: Implement SetMasterClock() for the sink
Michael Stefaniuc
mstefani at winehq.org
Fri Jan 21 11:41:10 CST 2022
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>
---
dlls/dmsynth/dmsynth_private.h | 7 +++----
dlls/dmsynth/synthsink.c | 12 +++++++++++-
2 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/dlls/dmsynth/dmsynth_private.h b/dlls/dmsynth/dmsynth_private.h
index 22d020992b8..2a2e88c8e88 100644
--- a/dlls/dmsynth/dmsynth_private.h
+++ b/dlls/dmsynth/dmsynth_private.h
@@ -72,13 +72,12 @@ struct IDirectMusicSynth8Impl {
* IDirectMusicSynthSinkImpl implementation structure
*/
struct IDirectMusicSynthSinkImpl {
- /* IUnknown fields */
IDirectMusicSynthSink IDirectMusicSynthSink_iface;
IKsControl IKsControl_iface;
LONG ref;
-
- /* IDirectMusicSynthSinkImpl fields */
- IReferenceClock* latency_clock;
+ IReferenceClock *latency_clock;
+ IReferenceClock *master_clock;
+ BOOL active;
};
/**********************************************************************
diff --git a/dlls/dmsynth/synthsink.c b/dlls/dmsynth/synthsink.c
index 46011eae27a..72fd671a415 100644
--- a/dlls/dmsynth/synthsink.c
+++ b/dlls/dmsynth/synthsink.c
@@ -81,6 +81,8 @@ static ULONG WINAPI IDirectMusicSynthSinkImpl_Release(IDirectMusicSynthSink *ifa
if (!ref) {
if (This->latency_clock)
IReferenceClock_Release(This->latency_clock);
+ if (This->master_clock)
+ IReferenceClock_Release(This->master_clock);
HeapFree(GetProcessHeap(), 0, This);
DMSYNTH_UnlockModule();
}
@@ -104,7 +106,15 @@ static HRESULT WINAPI IDirectMusicSynthSinkImpl_SetMasterClock(IDirectMusicSynth
{
IDirectMusicSynthSinkImpl *This = impl_from_IDirectMusicSynthSink(iface);
- FIXME("(%p)->(%p): stub\n", This, clock);
+ TRACE("(%p)->(%p)\n", This, clock);
+
+ if (!clock)
+ return E_POINTER;
+ if (This->active)
+ return E_FAIL;
+
+ IReferenceClock_AddRef(clock);
+ This->master_clock = clock;
return S_OK;
}
--
2.31.1
More information about the wine-devel
mailing list