Zebediah Figura : strmbase: Add default implementations of filter state change methods.

Alexandre Julliard julliard at winehq.org
Mon Jun 24 16:06:20 CDT 2019


Module: wine
Branch: master
Commit: 0791cfb096e56016d4be71ad84058b48c28649cd
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=0791cfb096e56016d4be71ad84058b48c28649cd

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Fri Jun 21 22:35:38 2019 -0500

strmbase: Add default implementations of filter state change methods.

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/strmbase/filter.c  | 39 +++++++++++++++++++++++++++++++++++++++
 include/wine/strmbase.h |  3 +++
 2 files changed, 42 insertions(+)

diff --git a/dlls/strmbase/filter.c b/dlls/strmbase/filter.c
index 5f57731..9ed588c 100644
--- a/dlls/strmbase/filter.c
+++ b/dlls/strmbase/filter.c
@@ -123,6 +123,45 @@ HRESULT WINAPI BaseFilterImpl_GetClassID(IBaseFilter * iface, CLSID * pClsid)
     return S_OK;
 }
 
+HRESULT WINAPI BaseFilterImpl_Stop(IBaseFilter *iface)
+{
+    BaseFilter *filter = impl_from_IBaseFilter(iface);
+
+    TRACE("iface %p.\n", iface);
+
+    EnterCriticalSection(&filter->csFilter);
+    filter->state = State_Stopped;
+    LeaveCriticalSection(&filter->csFilter);
+
+    return S_OK;
+}
+
+HRESULT WINAPI BaseFilterImpl_Pause(IBaseFilter *iface)
+{
+    BaseFilter *filter = impl_from_IBaseFilter(iface);
+
+    TRACE("iface %p.\n", iface);
+
+    EnterCriticalSection(&filter->csFilter);
+    filter->state = State_Paused;
+    LeaveCriticalSection(&filter->csFilter);
+
+    return S_OK;
+}
+
+HRESULT WINAPI BaseFilterImpl_Run(IBaseFilter *iface, REFERENCE_TIME start)
+{
+    BaseFilter *filter = impl_from_IBaseFilter(iface);
+
+    TRACE("iface %p, start %s.\n", iface, wine_dbgstr_longlong(start));
+
+    EnterCriticalSection(&filter->csFilter);
+    filter->state = State_Running;
+    LeaveCriticalSection(&filter->csFilter);
+
+    return S_OK;
+}
+
 HRESULT WINAPI BaseFilterImpl_GetState(IBaseFilter * iface, DWORD dwMilliSecsTimeout, FILTER_STATE *pState )
 {
     BaseFilter *This = impl_from_IBaseFilter(iface);
diff --git a/include/wine/strmbase.h b/include/wine/strmbase.h
index 8de92b2..6abd8c7 100644
--- a/include/wine/strmbase.h
+++ b/include/wine/strmbase.h
@@ -184,6 +184,9 @@ typedef struct BaseFilterFuncTable
 HRESULT WINAPI BaseFilterImpl_QueryInterface(IBaseFilter * iface, REFIID riid, LPVOID * ppv);
 ULONG WINAPI BaseFilterImpl_AddRef(IBaseFilter * iface);
 ULONG WINAPI BaseFilterImpl_Release(IBaseFilter * iface);
+HRESULT WINAPI BaseFilterImpl_Stop(IBaseFilter *iface);
+HRESULT WINAPI BaseFilterImpl_Pause(IBaseFilter *iface);
+HRESULT WINAPI BaseFilterImpl_Run(IBaseFilter *iface, REFERENCE_TIME start);
 HRESULT WINAPI BaseFilterImpl_GetClassID(IBaseFilter * iface, CLSID * pClsid);
 HRESULT WINAPI BaseFilterImpl_GetState(IBaseFilter * iface, DWORD dwMilliSecsTimeout, FILTER_STATE *pState );
 HRESULT WINAPI BaseFilterImpl_SetSyncSource(IBaseFilter * iface, IReferenceClock *pClock);




More information about the wine-cvs mailing list