Michael Stefaniuc : dxdiagn: COM cleanup for the IDxDiagProvider iface.
Alexandre Julliard
julliard at winehq.org
Mon Aug 22 13:29:05 CDT 2011
Module: wine
Branch: master
Commit: a7f02040459cd3e9a2ed3b67c7856ddd4c93f20b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a7f02040459cd3e9a2ed3b67c7856ddd4c93f20b
Author: Michael Stefaniuc <mstefani at redhat.de>
Date: Wed Aug 10 23:58:23 2011 +0200
dxdiagn: COM cleanup for the IDxDiagProvider iface.
---
dlls/dxdiagn/dxdiag_private.h | 17 --------------
dlls/dxdiagn/provider.c | 47 +++++++++++++++++++++++++++++-----------
2 files changed, 34 insertions(+), 30 deletions(-)
diff --git a/dlls/dxdiagn/dxdiag_private.h b/dlls/dxdiagn/dxdiag_private.h
index 31d3e6c..cfcae40 100644
--- a/dlls/dxdiagn/dxdiag_private.h
+++ b/dlls/dxdiagn/dxdiag_private.h
@@ -37,23 +37,6 @@ typedef struct IDxDiagContainerImpl IDxDiagContainerImpl;
typedef struct IDxDiagContainerImpl_Container IDxDiagContainerImpl_Container;
/* ---------------- */
-/* IDxDiagProvider */
-/* ---------------- */
-
-/*****************************************************************************
- * IDxDiagProvider implementation structure
- */
-struct IDxDiagProviderImpl {
- /* IUnknown fields */
- const IDxDiagProviderVtbl *lpVtbl;
- LONG ref;
- /* IDxDiagProvider fields */
- BOOL init;
- DXDIAG_INIT_PARAMS params;
- IDxDiagContainerImpl_Container *info_root;
-};
-
-/* ---------------- */
/* IDxDiagContainer */
/* ---------------- */
diff --git a/dlls/dxdiagn/provider.c b/dlls/dxdiagn/provider.c
index 2a48b2e..a881ea7 100644
--- a/dlls/dxdiagn/provider.c
+++ b/dlls/dxdiagn/provider.c
@@ -67,10 +67,25 @@ static const WCHAR szRevisionId[] = {'s','z','R','e','v','i','s','i','o','n','I'
static const WCHAR dwRefreshRate[] = {'d','w','R','e','f','r','e','s','h','R','a','t','e',0};
static const WCHAR szManufacturer[] = {'s','z','M','a','n','u','f','a','c','t','u','r','e','r',0};
+struct IDxDiagProviderImpl
+{
+ IDxDiagProvider IDxDiagProvider_iface;
+ LONG ref;
+ BOOL init;
+ DXDIAG_INIT_PARAMS params;
+ IDxDiagContainerImpl_Container *info_root;
+};
+
+static inline IDxDiagProviderImpl *impl_from_IDxDiagProvider(IDxDiagProvider *iface)
+{
+ return CONTAINING_RECORD(iface, IDxDiagProviderImpl, IDxDiagProvider_iface);
+}
+
/* IDxDiagProvider IUnknown parts follow: */
-static HRESULT WINAPI IDxDiagProviderImpl_QueryInterface(PDXDIAGPROVIDER iface, REFIID riid, LPVOID *ppobj)
+static HRESULT WINAPI IDxDiagProviderImpl_QueryInterface(IDxDiagProvider *iface, REFIID riid,
+ void **ppobj)
{
- IDxDiagProviderImpl *This = (IDxDiagProviderImpl *)iface;
+ IDxDiagProviderImpl *This = impl_from_IDxDiagProvider(iface);
if (!ppobj) return E_INVALIDARG;
@@ -86,8 +101,9 @@ static HRESULT WINAPI IDxDiagProviderImpl_QueryInterface(PDXDIAGPROVIDER iface,
return E_NOINTERFACE;
}
-static ULONG WINAPI IDxDiagProviderImpl_AddRef(PDXDIAGPROVIDER iface) {
- IDxDiagProviderImpl *This = (IDxDiagProviderImpl *)iface;
+static ULONG WINAPI IDxDiagProviderImpl_AddRef(IDxDiagProvider *iface)
+{
+ IDxDiagProviderImpl *This = impl_from_IDxDiagProvider(iface);
ULONG refCount = InterlockedIncrement(&This->ref);
TRACE("(%p)->(ref before=%u)\n", This, refCount - 1);
@@ -97,8 +113,9 @@ static ULONG WINAPI IDxDiagProviderImpl_AddRef(PDXDIAGPROVIDER iface) {
return refCount;
}
-static ULONG WINAPI IDxDiagProviderImpl_Release(PDXDIAGPROVIDER iface) {
- IDxDiagProviderImpl *This = (IDxDiagProviderImpl *)iface;
+static ULONG WINAPI IDxDiagProviderImpl_Release(IDxDiagProvider *iface)
+{
+ IDxDiagProviderImpl *This = impl_from_IDxDiagProvider(iface);
ULONG refCount = InterlockedDecrement(&This->ref);
TRACE("(%p)->(ref before=%u)\n", This, refCount + 1);
@@ -114,8 +131,10 @@ static ULONG WINAPI IDxDiagProviderImpl_Release(PDXDIAGPROVIDER iface) {
}
/* IDxDiagProvider Interface follow: */
-static HRESULT WINAPI IDxDiagProviderImpl_Initialize(PDXDIAGPROVIDER iface, DXDIAG_INIT_PARAMS* pParams) {
- IDxDiagProviderImpl *This = (IDxDiagProviderImpl *)iface;
+static HRESULT WINAPI IDxDiagProviderImpl_Initialize(IDxDiagProvider *iface,
+ DXDIAG_INIT_PARAMS *pParams)
+{
+ IDxDiagProviderImpl *This = impl_from_IDxDiagProvider(iface);
HRESULT hr;
TRACE("(%p,%p)\n", iface, pParams);
@@ -140,8 +159,10 @@ static HRESULT WINAPI IDxDiagProviderImpl_Initialize(PDXDIAGPROVIDER iface, DXDI
return S_OK;
}
-static HRESULT WINAPI IDxDiagProviderImpl_GetRootContainer(PDXDIAGPROVIDER iface, IDxDiagContainer** ppInstance) {
- IDxDiagProviderImpl *This = (IDxDiagProviderImpl *)iface;
+static HRESULT WINAPI IDxDiagProviderImpl_GetRootContainer(IDxDiagProvider *iface,
+ IDxDiagContainer **ppInstance)
+{
+ IDxDiagProviderImpl *This = impl_from_IDxDiagProvider(iface);
TRACE("(%p,%p)\n", iface, ppInstance);
@@ -150,7 +171,7 @@ static HRESULT WINAPI IDxDiagProviderImpl_GetRootContainer(PDXDIAGPROVIDER iface
}
return DXDiag_CreateDXDiagContainer(&IID_IDxDiagContainer, This->info_root,
- (IDxDiagProvider *)This, (void **)ppInstance);
+ &This->IDxDiagProvider_iface, (void **)ppInstance);
}
static const IDxDiagProviderVtbl DxDiagProvider_Vtbl =
@@ -172,9 +193,9 @@ HRESULT DXDiag_CreateDXDiagProvider(LPCLASSFACTORY iface, LPUNKNOWN punkOuter, R
provider = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDxDiagProviderImpl));
if (NULL == provider) return E_OUTOFMEMORY;
- provider->lpVtbl = &DxDiagProvider_Vtbl;
+ provider->IDxDiagProvider_iface.lpVtbl = &DxDiagProvider_Vtbl;
provider->ref = 0; /* will be inited with QueryInterface */
- return IDxDiagProviderImpl_QueryInterface ((PDXDIAGPROVIDER)provider, riid, ppobj);
+ return IDxDiagProviderImpl_QueryInterface(&provider->IDxDiagProvider_iface, riid, ppobj);
}
static void free_property_information(IDxDiagContainerImpl_Property *prop)
More information about the wine-cvs
mailing list