diff options
Diffstat (limited to 'src/filters/parser/BaseSplitter/BaseSplitter.cpp')
-rw-r--r-- | src/filters/parser/BaseSplitter/BaseSplitter.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/filters/parser/BaseSplitter/BaseSplitter.cpp b/src/filters/parser/BaseSplitter/BaseSplitter.cpp index 9913c7a75..589dd2d2f 100644 --- a/src/filters/parser/BaseSplitter/BaseSplitter.cpp +++ b/src/filters/parser/BaseSplitter/BaseSplitter.cpp @@ -447,7 +447,18 @@ DWORD CBaseSplitterOutputPin::ThreadProc() m_eEndFlush.Set();
// fix for Microsoft DTV-DVD Video Decoder - video freeze after STOP/PLAY
- if(IsConnected()) {
+ bool iHaaliRenderConnect = false;
+ CComPtr<IPin> pPinTo = this, pTmp;
+ while(pPinTo && SUCCEEDED(pPinTo->ConnectedTo(&pTmp)) && (pPinTo = pTmp)) {
+ pTmp = NULL;
+ CComPtr<IBaseFilter> pBF = GetFilterFromPin(pPinTo);
+ if(GetCLSID(pBF) == CLSID_DXR) { // Haali Renderer
+ iHaaliRenderConnect = true;
+ break;
+ }
+ pPinTo = GetFirstPin(pBF, PINDIR_OUTPUT);
+ }
+ if(IsConnected() && !iHaaliRenderConnect) {
GetConnected()->BeginFlush();
GetConnected()->EndFlush();
}
|