Zebediah Figura : strmbase/transform: Use base filter state change methods.
Alexandre Julliard
julliard at winehq.org
Sun Oct 27 15:06:16 CDT 2019
Module: wine
Branch: master
Commit: 2fcc7e7292228c2f13ca11a4e36b42f3229eda98
URL: https://source.winehq.org/git/wine.git/?a=commit;h=2fcc7e7292228c2f13ca11a4e36b42f3229eda98
Author: Zebediah Figura <z.figura12 at gmail.com>
Date: Wed Oct 23 20:04:27 2019 -0500
strmbase/transform: Use base 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/transform.c | 111 +++++++++++++++++-----------------------------
1 file changed, 41 insertions(+), 70 deletions(-)
diff --git a/dlls/strmbase/transform.c b/dlls/strmbase/transform.c
index 3fd9d8bd6f..d0484a2543 100644
--- a/dlls/strmbase/transform.c
+++ b/dlls/strmbase/transform.c
@@ -155,10 +155,48 @@ static void transform_destroy(struct strmbase_filter *iface)
CoTaskMemFree(filter);
}
+static HRESULT transform_init_stream(struct strmbase_filter *iface)
+{
+ TransformFilter *filter = impl_from_strmbase_filter(iface);
+ HRESULT hr = S_OK;
+
+ EnterCriticalSection(&filter->csReceive);
+
+ filter->sink.end_of_stream = FALSE;
+ if (filter->pFuncsTable->pfnStartStreaming)
+ hr = filter->pFuncsTable->pfnStartStreaming(filter);
+ if (SUCCEEDED(hr))
+ hr = BaseOutputPinImpl_Active(&filter->source);
+
+ LeaveCriticalSection(&filter->csReceive);
+
+ return hr;
+}
+
+static HRESULT transform_cleanup_stream(struct strmbase_filter *iface)
+{
+ TransformFilter *filter = impl_from_strmbase_filter(iface);
+ HRESULT hr = S_OK;
+
+ EnterCriticalSection(&filter->csReceive);
+
+ filter->sink.end_of_stream = FALSE;
+ if (filter->pFuncsTable->pfnStopStreaming)
+ hr = filter->pFuncsTable->pfnStopStreaming(filter);
+ if (SUCCEEDED(hr))
+ hr = BaseOutputPinImpl_Inactive(&filter->source);
+
+ LeaveCriticalSection(&filter->csReceive);
+
+ return hr;
+}
+
static const struct strmbase_filter_ops filter_ops =
{
.filter_get_pin = transform_get_pin,
.filter_destroy = transform_destroy,
+ .filter_init_stream = transform_init_stream,
+ .filter_cleanup_stream = transform_cleanup_stream,
};
static HRESULT sink_query_interface(struct strmbase_pin *iface, REFIID iid, void **out)
@@ -207,73 +245,6 @@ static const struct strmbase_source_ops source_ops =
.pfnDecideAllocator = BaseOutputPinImpl_DecideAllocator,
};
-static HRESULT WINAPI TransformFilterImpl_Stop(IBaseFilter *iface)
-{
- TransformFilter *This = impl_from_IBaseFilter(iface);
- HRESULT hr = S_OK;
-
- TRACE("(%p/%p)\n", This, iface);
-
- EnterCriticalSection(&This->csReceive);
- {
- This->filter.state = State_Stopped;
- if (This->pFuncsTable->pfnStopStreaming)
- hr = This->pFuncsTable->pfnStopStreaming(This);
- if (SUCCEEDED(hr))
- hr = BaseOutputPinImpl_Inactive(&This->source);
- }
- LeaveCriticalSection(&This->csReceive);
-
- return hr;
-}
-
-static HRESULT WINAPI TransformFilterImpl_Pause(IBaseFilter *iface)
-{
- TransformFilter *This = impl_from_IBaseFilter(iface);
- HRESULT hr;
-
- TRACE("(%p/%p)->()\n", This, iface);
-
- EnterCriticalSection(&This->csReceive);
- {
- if (This->filter.state == State_Stopped)
- hr = IBaseFilter_Run(iface, -1);
- else
- hr = S_OK;
-
- if (SUCCEEDED(hr))
- This->filter.state = State_Paused;
- }
- LeaveCriticalSection(&This->csReceive);
-
- return hr;
-}
-
-static HRESULT WINAPI TransformFilterImpl_Run(IBaseFilter *iface, REFERENCE_TIME tStart)
-{
- HRESULT hr = S_OK;
- TransformFilter *This = impl_from_IBaseFilter(iface);
-
- TRACE("iface %p, start %s.\n", iface, debugstr_time(tStart));
-
- EnterCriticalSection(&This->csReceive);
- {
- if (This->filter.state == State_Stopped)
- {
- This->sink.end_of_stream = FALSE;
- if (This->pFuncsTable->pfnStartStreaming)
- hr = This->pFuncsTable->pfnStartStreaming(This);
- if (SUCCEEDED(hr))
- hr = BaseOutputPinImpl_Active(&This->source);
- }
-
- if (SUCCEEDED(hr))
- This->filter.state = State_Running;
- }
- LeaveCriticalSection(&This->csReceive);
-
- return hr;
-}
static const IBaseFilterVtbl transform_vtbl =
{
@@ -281,9 +252,9 @@ static const IBaseFilterVtbl transform_vtbl =
BaseFilterImpl_AddRef,
BaseFilterImpl_Release,
BaseFilterImpl_GetClassID,
- TransformFilterImpl_Stop,
- TransformFilterImpl_Pause,
- TransformFilterImpl_Run,
+ BaseFilterImpl_Stop,
+ BaseFilterImpl_Pause,
+ BaseFilterImpl_Run,
BaseFilterImpl_GetState,
BaseFilterImpl_SetSyncSource,
BaseFilterImpl_GetSyncSource,
More information about the wine-cvs
mailing list