Aric Stewart : strmbase: Have BaseControlWindow use BaseDispatch.
Alexandre Julliard
julliard at winehq.org
Fri Apr 20 12:49:29 CDT 2012
Module: wine
Branch: master
Commit: c7b12c10d852045779502d503efd0a84727e9de7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c7b12c10d852045779502d503efd0a84727e9de7
Author: Aric Stewart <aric at codeweavers.com>
Date: Fri Apr 20 07:26:32 2012 -0500
strmbase: Have BaseControlWindow use BaseDispatch.
---
dlls/quartz/videorenderer.c | 2 +-
dlls/strmbase/window.c | 36 ++++++++++++++++++++++--------------
include/wine/strmbase.h | 2 ++
3 files changed, 25 insertions(+), 15 deletions(-)
diff --git a/dlls/quartz/videorenderer.c b/dlls/quartz/videorenderer.c
index a7b31cf..5919ed1 100644
--- a/dlls/quartz/videorenderer.c
+++ b/dlls/quartz/videorenderer.c
@@ -752,7 +752,7 @@ static ULONG WINAPI VideoRendererInner_Release(IUnknown * iface)
if (!refCount)
{
- BaseWindowImpl_DoneWithWindow(&This->baseControlWindow.baseWindow);
+ BaseControlWindow_Destroy(&This->baseControlWindow);
PostThreadMessageW(This->ThreadID, WM_QUIT, 0, 0);
WaitForSingleObject(This->hThread, INFINITE);
CloseHandle(This->hThread);
diff --git a/dlls/strmbase/window.c b/dlls/strmbase/window.c
index aa9214a..ffb0425 100644
--- a/dlls/strmbase/window.c
+++ b/dlls/strmbase/window.c
@@ -208,6 +208,7 @@ HRESULT WINAPI BaseControlWindow_Init(BaseControlWindow *pControlWindow, const I
hr = BaseWindow_Init(&pControlWindow->baseWindow, pFuncsTable);
if (SUCCEEDED(hr))
{
+ BaseDispatch_Init(&pControlWindow->baseDispatch, &IID_IVideoWindow);
pControlWindow->IVideoWindow_iface.lpVtbl = lpVtbl;
pControlWindow->AutoShow = TRUE;
pControlWindow->hwndDrain = NULL;
@@ -219,40 +220,47 @@ HRESULT WINAPI BaseControlWindow_Init(BaseControlWindow *pControlWindow, const I
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)
{
BaseControlWindow* This = impl_from_IVideoWindow(iface);
- FIXME("(%p/%p)->(%d, %d, %p): stub !!!\n", This, iface, iTInfo, lcid, ppTInfo);
-
- return S_OK;
+ return BaseDispatchImpl_GetTypeInfo(&This->baseDispatch, &IID_NULL, iTInfo, lcid, ppTInfo);
}
-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);
- FIXME("(%p/%p)->(%s (%p), %p, %d, %d, %p): stub !!!\n", This, iface, debugstr_guid(riid), riid, rgszNames, cNames, lcid, rgDispId);
-
- return S_OK;
+ return BaseDispatchImpl_GetIDsOfNames(&This->baseDispatch, riid, rgszNames, cNames, lcid, rgDispId);
}
-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);
+ 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)
diff --git a/include/wine/strmbase.h b/include/wine/strmbase.h
index 4fa0e27..bff7d8f 100644
--- a/include/wine/strmbase.h
+++ b/include/wine/strmbase.h
@@ -418,6 +418,7 @@ typedef struct tagBaseControlWindow
{
BaseWindow baseWindow;
IVideoWindow IVideoWindow_iface;
+ BaseDispatch baseDispatch;
BOOL AutoShow;
HWND hwndDrain;
@@ -428,6 +429,7 @@ typedef struct tagBaseControlWindow
} BaseControlWindow;
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);
HRESULT WINAPI BaseControlWindowImpl_GetTypeInfoCount(IVideoWindow *iface, UINT*pctinfo);
More information about the wine-cvs
mailing list