Commit c7b12c10 authored by Aric Stewart's avatar Aric Stewart Committed by Alexandre Julliard

strmbase: Have BaseControlWindow use BaseDispatch.

parent a37d4b79
...@@ -752,7 +752,7 @@ static ULONG WINAPI VideoRendererInner_Release(IUnknown * iface) ...@@ -752,7 +752,7 @@ static ULONG WINAPI VideoRendererInner_Release(IUnknown * iface)
if (!refCount) if (!refCount)
{ {
BaseWindowImpl_DoneWithWindow(&This->baseControlWindow.baseWindow); BaseControlWindow_Destroy(&This->baseControlWindow);
PostThreadMessageW(This->ThreadID, WM_QUIT, 0, 0); PostThreadMessageW(This->ThreadID, WM_QUIT, 0, 0);
WaitForSingleObject(This->hThread, INFINITE); WaitForSingleObject(This->hThread, INFINITE);
CloseHandle(This->hThread); CloseHandle(This->hThread);
......
...@@ -208,6 +208,7 @@ HRESULT WINAPI BaseControlWindow_Init(BaseControlWindow *pControlWindow, const I ...@@ -208,6 +208,7 @@ HRESULT WINAPI BaseControlWindow_Init(BaseControlWindow *pControlWindow, const I
hr = BaseWindow_Init(&pControlWindow->baseWindow, pFuncsTable); hr = BaseWindow_Init(&pControlWindow->baseWindow, pFuncsTable);
if (SUCCEEDED(hr)) if (SUCCEEDED(hr))
{ {
BaseDispatch_Init(&pControlWindow->baseDispatch, &IID_IVideoWindow);
pControlWindow->IVideoWindow_iface.lpVtbl = lpVtbl; pControlWindow->IVideoWindow_iface.lpVtbl = lpVtbl;
pControlWindow->AutoShow = TRUE; pControlWindow->AutoShow = TRUE;
pControlWindow->hwndDrain = NULL; pControlWindow->hwndDrain = NULL;
...@@ -219,40 +220,47 @@ HRESULT WINAPI BaseControlWindow_Init(BaseControlWindow *pControlWindow, const I ...@@ -219,40 +220,47 @@ HRESULT WINAPI BaseControlWindow_Init(BaseControlWindow *pControlWindow, const I
return hr; return hr;
} }
HRESULT WINAPI BaseControlWindowImpl_GetTypeInfoCount(IVideoWindow *iface, UINT*pctinfo) HRESULT WINAPI BaseControlWindow_Destroy(BaseControlWindow *pControlWindow)
{ {
BaseControlWindow* This = impl_from_IVideoWindow(iface); BaseWindowImpl_DoneWithWindow(&pControlWindow->baseWindow);
return BaseDispatch_Destroy(&pControlWindow->baseDispatch);
}
FIXME("(%p/%p)->(%p): stub !!!\n", This, iface, pctinfo); HRESULT WINAPI BaseControlWindowImpl_GetTypeInfoCount(IVideoWindow *iface, UINT *pctinfo)
{
BaseControlWindow* This = impl_from_IVideoWindow(iface);
return S_OK; return BaseDispatchImpl_GetTypeInfoCount(&This->baseDispatch, pctinfo);
} }
HRESULT WINAPI BaseControlWindowImpl_GetTypeInfo(IVideoWindow *iface, UINT iTInfo, LCID lcid, ITypeInfo**ppTInfo) HRESULT WINAPI BaseControlWindowImpl_GetTypeInfo(IVideoWindow *iface, UINT iTInfo, LCID lcid, ITypeInfo**ppTInfo)
{ {
BaseControlWindow* This = impl_from_IVideoWindow(iface); BaseControlWindow* This = impl_from_IVideoWindow(iface);
FIXME("(%p/%p)->(%d, %d, %p): stub !!!\n", This, iface, iTInfo, lcid, ppTInfo); return BaseDispatchImpl_GetTypeInfo(&This->baseDispatch, &IID_NULL, iTInfo, lcid, ppTInfo);
return S_OK;
} }
HRESULT WINAPI BaseControlWindowImpl_GetIDsOfNames(IVideoWindow *iface, REFIID riid, LPOLESTR*rgszNames, UINT cNames, LCID lcid, DISPID*rgDispId) HRESULT WINAPI BaseControlWindowImpl_GetIDsOfNames(IVideoWindow *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
{ {
BaseControlWindow* This = impl_from_IVideoWindow(iface); BaseControlWindow* This = impl_from_IVideoWindow(iface);
FIXME("(%p/%p)->(%s (%p), %p, %d, %d, %p): stub !!!\n", This, iface, debugstr_guid(riid), riid, rgszNames, cNames, lcid, rgDispId); return BaseDispatchImpl_GetIDsOfNames(&This->baseDispatch, riid, rgszNames, cNames, lcid, rgDispId);
return S_OK;
} }
HRESULT WINAPI BaseControlWindowImpl_Invoke(IVideoWindow *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS*pDispParams, VARIANT*pVarResult, EXCEPINFO*pExepInfo, UINT*puArgErr) HRESULT WINAPI BaseControlWindowImpl_Invoke(IVideoWindow *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExepInfo, UINT *puArgErr)
{ {
BaseControlWindow* This = impl_from_IVideoWindow(iface); BaseControlWindow* This = impl_from_IVideoWindow(iface);
HRESULT hr = S_OK;
ITypeInfo *pTypeInfo;
FIXME("(%p/%p)->(%d, %s (%p), %d, %04x, %p, %p, %p, %p): stub !!!\n", This, iface, dispIdMember, debugstr_guid(riid), riid, lcid, wFlags, pDispParams, pVarResult, pExepInfo, puArgErr); hr = BaseDispatchImpl_GetTypeInfo(&This->baseDispatch, riid, 1, lcid, &pTypeInfo);
if (SUCCEEDED(hr))
{
hr = ITypeInfo_Invoke(pTypeInfo, &This->IVideoWindow_iface, dispIdMember, wFlags, pDispParams, pVarResult, pExepInfo, puArgErr);
ITypeInfo_Release(pTypeInfo);
}
return S_OK; return hr;
} }
HRESULT WINAPI BaseControlWindowImpl_put_Caption(IVideoWindow *iface, BSTR strCaption) HRESULT WINAPI BaseControlWindowImpl_put_Caption(IVideoWindow *iface, BSTR strCaption)
......
...@@ -418,6 +418,7 @@ typedef struct tagBaseControlWindow ...@@ -418,6 +418,7 @@ typedef struct tagBaseControlWindow
{ {
BaseWindow baseWindow; BaseWindow baseWindow;
IVideoWindow IVideoWindow_iface; IVideoWindow IVideoWindow_iface;
BaseDispatch baseDispatch;
BOOL AutoShow; BOOL AutoShow;
HWND hwndDrain; HWND hwndDrain;
...@@ -428,6 +429,7 @@ typedef struct tagBaseControlWindow ...@@ -428,6 +429,7 @@ typedef struct tagBaseControlWindow
} BaseControlWindow; } BaseControlWindow;
HRESULT WINAPI BaseControlWindow_Init(BaseControlWindow *pControlWindow, const IVideoWindowVtbl *lpVtbl, BaseFilter *owner, CRITICAL_SECTION *lock, BasePin* pPin, const BaseWindowFuncTable* pFuncsTable); HRESULT WINAPI BaseControlWindow_Init(BaseControlWindow *pControlWindow, const IVideoWindowVtbl *lpVtbl, BaseFilter *owner, CRITICAL_SECTION *lock, BasePin* pPin, const BaseWindowFuncTable* pFuncsTable);
HRESULT WINAPI BaseControlWindow_Destroy(BaseControlWindow *pControlWindow);
BOOL WINAPI BaseControlWindowImpl_PossiblyEatMessage(BaseWindow *This, UINT uMsg, WPARAM wParam, LPARAM lParam); BOOL WINAPI BaseControlWindowImpl_PossiblyEatMessage(BaseWindow *This, UINT uMsg, WPARAM wParam, LPARAM lParam);
HRESULT WINAPI BaseControlWindowImpl_GetTypeInfoCount(IVideoWindow *iface, UINT*pctinfo); HRESULT WINAPI BaseControlWindowImpl_GetTypeInfoCount(IVideoWindow *iface, UINT*pctinfo);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment