[PATCH v2 1/5] strmbase: Add default implementations of filter state change methods.

Zebediah Figura z.figura12 at gmail.com
Fri Jun 21 22:35:38 CDT 2019


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 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 5f57731b7a1..9ed588cf803 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 8de92b2826b..6abd8c76011 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);
-- 
2.21.0




More information about the wine-devel mailing list