Michael Stefaniuc : browseui: Use an iface instead of a vtbl pointer in ProgressDialog.

Alexandre Julliard julliard at winehq.org
Thu Dec 9 12:26:26 CST 2010


Module: wine
Branch: master
Commit: f4a0e3491e77a082df0c783fb0e17547d11223aa
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f4a0e3491e77a082df0c783fb0e17547d11223aa

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Wed Dec  8 22:59:30 2010 +0100

browseui: Use an iface instead of a vtbl pointer in ProgressDialog.

---

 dlls/browseui/progressdlg.c |   31 ++++++++++++++++++-------------
 1 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/dlls/browseui/progressdlg.c b/dlls/browseui/progressdlg.c
index 42e7322..11ebb7b 100644
--- a/dlls/browseui/progressdlg.c
+++ b/dlls/browseui/progressdlg.c
@@ -59,7 +59,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(browseui);
 #define WM_DLG_DESTROY  (WM_APP+2)  /* DestroyWindow must be called from the owning thread */
 
 typedef struct tagProgressDialog {
-    const IProgressDialogVtbl *vtbl;
+    IProgressDialog IProgressDialog_iface;
     LONG refCount;
     CRITICAL_SECTION cs;
     HWND hwnd;
@@ -74,6 +74,11 @@ typedef struct tagProgressDialog {
     HWND hwndDisabledParent;    /* For modal dialog: the parent that need to be re-enabled when the dialog ends */
 } ProgressDialog;
 
+static inline ProgressDialog *impl_from_IProgressDialog(IProgressDialog *iface)
+{
+    return CONTAINING_RECORD(iface, ProgressDialog, IProgressDialog_iface);
+}
+
 static void set_buffer(LPWSTR *buffer, LPCWSTR string)
 {
     static const WCHAR empty_string[] = {0};
@@ -260,7 +265,7 @@ static void ProgressDialog_Destructor(ProgressDialog *This)
 
 static HRESULT WINAPI ProgressDialog_QueryInterface(IProgressDialog *iface, REFIID iid, LPVOID *ppvOut)
 {
-    ProgressDialog *This = (ProgressDialog *)iface;
+    ProgressDialog *This = impl_from_IProgressDialog(iface);
     *ppvOut = NULL;
 
     if (IsEqualIID(iid, &IID_IUnknown) || IsEqualIID(iid, &IID_IProgressDialog))
@@ -280,13 +285,13 @@ static HRESULT WINAPI ProgressDialog_QueryInterface(IProgressDialog *iface, REFI
 
 static ULONG WINAPI ProgressDialog_AddRef(IProgressDialog *iface)
 {
-    ProgressDialog *This = (ProgressDialog *)iface;
+    ProgressDialog *This = impl_from_IProgressDialog(iface);
     return InterlockedIncrement(&This->refCount);
 }
 
 static ULONG WINAPI ProgressDialog_Release(IProgressDialog *iface)
 {
-    ProgressDialog *This = (ProgressDialog *)iface;
+    ProgressDialog *This = impl_from_IProgressDialog(iface);
     ULONG ret;
 
     ret = InterlockedDecrement(&This->refCount);
@@ -297,7 +302,7 @@ static ULONG WINAPI ProgressDialog_Release(IProgressDialog *iface)
 
 static HRESULT WINAPI ProgressDialog_StartProgressDialog(IProgressDialog *iface, HWND hwndParent, IUnknown *punkEnableModeless, DWORD dwFlags, LPCVOID reserved)
 {
-    ProgressDialog *This = (ProgressDialog *)iface;
+    ProgressDialog *This = impl_from_IProgressDialog(iface);
     struct create_params params;
     HANDLE hThread;
 
@@ -341,7 +346,7 @@ static HRESULT WINAPI ProgressDialog_StartProgressDialog(IProgressDialog *iface,
 
 static HRESULT WINAPI ProgressDialog_StopProgressDialog(IProgressDialog *iface)
 {
-    ProgressDialog *This = (ProgressDialog *)iface;
+    ProgressDialog *This = impl_from_IProgressDialog(iface);
 
     EnterCriticalSection(&This->cs);
     if (This->hwnd)
@@ -353,7 +358,7 @@ static HRESULT WINAPI ProgressDialog_StopProgressDialog(IProgressDialog *iface)
 
 static HRESULT WINAPI ProgressDialog_SetTitle(IProgressDialog *iface, LPCWSTR pwzTitle)
 {
-    ProgressDialog *This = (ProgressDialog *)iface;
+    ProgressDialog *This = impl_from_IProgressDialog(iface);
     HWND hwnd;
 
     TRACE("(%p, %s)\n", This, wine_dbgstr_w(pwzTitle));
@@ -378,13 +383,13 @@ static HRESULT WINAPI ProgressDialog_SetAnimation(IProgressDialog *iface, HINSTA
 
 static BOOL WINAPI ProgressDialog_HasUserCancelled(IProgressDialog *iface)
 {
-    ProgressDialog *This = (ProgressDialog *)iface;
+    ProgressDialog *This = impl_from_IProgressDialog(iface);
     return This->isCancelled;
 }
 
 static HRESULT WINAPI ProgressDialog_SetProgress64(IProgressDialog *iface, ULONGLONG ullCompleted, ULONGLONG ullTotal)
 {
-    ProgressDialog *This = (ProgressDialog *)iface;
+    ProgressDialog *This = impl_from_IProgressDialog(iface);
     HWND hwnd;
 
     TRACE("(%p, 0x%s, 0x%s)\n", This, wine_dbgstr_longlong(ullCompleted), wine_dbgstr_longlong(ullTotal));
@@ -409,7 +414,7 @@ static HRESULT WINAPI ProgressDialog_SetProgress(IProgressDialog *iface, DWORD d
 
 static HRESULT WINAPI ProgressDialog_SetLine(IProgressDialog *iface, DWORD dwLineNum, LPCWSTR pwzLine, BOOL bPath, LPCVOID reserved)
 {
-    ProgressDialog *This = (ProgressDialog *)iface;
+    ProgressDialog *This = impl_from_IProgressDialog(iface);
     HWND hwnd;
 
     TRACE("(%p, %d, %s, %d)\n", This, dwLineNum, wine_dbgstr_w(pwzLine), bPath);
@@ -435,7 +440,7 @@ static HRESULT WINAPI ProgressDialog_SetLine(IProgressDialog *iface, DWORD dwLin
 
 static HRESULT WINAPI ProgressDialog_SetCancelMsg(IProgressDialog *iface, LPCWSTR pwzMsg, LPCVOID reserved)
 {
-    ProgressDialog *This = (ProgressDialog *)iface;
+    ProgressDialog *This = impl_from_IProgressDialog(iface);
     HWND hwnd;
 
     TRACE("(%p, %s)\n", This, wine_dbgstr_w(pwzMsg));
@@ -457,7 +462,7 @@ static HRESULT WINAPI ProgressDialog_SetCancelMsg(IProgressDialog *iface, LPCWST
 
 static HRESULT WINAPI ProgressDialog_Timer(IProgressDialog *iface, DWORD dwTimerAction, LPCVOID reserved)
 {
-    ProgressDialog *This = (ProgressDialog *)iface;
+    ProgressDialog *This = impl_from_IProgressDialog(iface);
 
     FIXME("(%p, %d, %p) - stub\n", This, dwTimerAction, reserved);
 
@@ -495,7 +500,7 @@ HRESULT ProgressDialog_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
     if (This == NULL)
         return E_OUTOFMEMORY;
 
-    This->vtbl = &ProgressDialogVtbl;
+    This->IProgressDialog_iface.lpVtbl = &ProgressDialogVtbl;
     This->refCount = 1;
     InitializeCriticalSection(&This->cs);
 




More information about the wine-cvs mailing list