oleaut32: COM cleanup for the IPropertyPageSite iface.
This commit is contained in:
parent
5e2549d687
commit
269f5bbe81
|
@ -36,11 +36,16 @@
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(ole);
|
WINE_DEFAULT_DEBUG_CHANNEL(ole);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
const IPropertyPageSiteVtbl *lpVtbl;
|
IPropertyPageSite IPropertyPageSite_iface;
|
||||||
LCID lcid;
|
LCID lcid;
|
||||||
LONG ref;
|
LONG ref;
|
||||||
} PropertyPageSite;
|
} PropertyPageSite;
|
||||||
|
|
||||||
|
static inline PropertyPageSite *impl_from_IPropertyPageSite(IPropertyPageSite *iface)
|
||||||
|
{
|
||||||
|
return CONTAINING_RECORD(iface, PropertyPageSite, IPropertyPageSite_iface);
|
||||||
|
}
|
||||||
|
|
||||||
static INT_PTR CALLBACK property_sheet_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
|
static INT_PTR CALLBACK property_sheet_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
|
||||||
{
|
{
|
||||||
IPropertyPage *property_page = (IPropertyPage*)GetWindowLongPtrW(hwnd, DWLP_USER);
|
IPropertyPage *property_page = (IPropertyPage*)GetWindowLongPtrW(hwnd, DWLP_USER);
|
||||||
|
@ -86,7 +91,7 @@ static HRESULT WINAPI PropertyPageSite_QueryInterface(IPropertyPageSite* iface,
|
||||||
|
|
||||||
static ULONG WINAPI PropertyPageSite_AddRef(IPropertyPageSite* iface)
|
static ULONG WINAPI PropertyPageSite_AddRef(IPropertyPageSite* iface)
|
||||||
{
|
{
|
||||||
PropertyPageSite *this = (PropertyPageSite*)iface;
|
PropertyPageSite *this = impl_from_IPropertyPageSite(iface);
|
||||||
LONG ref = InterlockedIncrement(&this->ref);
|
LONG ref = InterlockedIncrement(&this->ref);
|
||||||
|
|
||||||
TRACE("(%p) ref=%d\n", this, ref);
|
TRACE("(%p) ref=%d\n", this, ref);
|
||||||
|
@ -95,7 +100,7 @@ static ULONG WINAPI PropertyPageSite_AddRef(IPropertyPageSite* iface)
|
||||||
|
|
||||||
static ULONG WINAPI PropertyPageSite_Release(IPropertyPageSite* iface)
|
static ULONG WINAPI PropertyPageSite_Release(IPropertyPageSite* iface)
|
||||||
{
|
{
|
||||||
PropertyPageSite *this = (PropertyPageSite *)iface;
|
PropertyPageSite *this = impl_from_IPropertyPageSite(iface);
|
||||||
LONG ref = InterlockedDecrement(&this->ref);
|
LONG ref = InterlockedDecrement(&this->ref);
|
||||||
|
|
||||||
TRACE("(%p) ref=%d\n", this, ref);
|
TRACE("(%p) ref=%d\n", this, ref);
|
||||||
|
@ -114,7 +119,7 @@ static HRESULT WINAPI PropertyPageSite_OnStatusChange(
|
||||||
static HRESULT WINAPI PropertyPageSite_GetLocaleID(
|
static HRESULT WINAPI PropertyPageSite_GetLocaleID(
|
||||||
IPropertyPageSite *iface, LCID *pLocaleID)
|
IPropertyPageSite *iface, LCID *pLocaleID)
|
||||||
{
|
{
|
||||||
PropertyPageSite *this = (PropertyPageSite *)iface;
|
PropertyPageSite *this = impl_from_IPropertyPageSite(iface);
|
||||||
|
|
||||||
TRACE("(%p, %p)\n", iface, pLocaleID);
|
TRACE("(%p, %p)\n", iface, pLocaleID);
|
||||||
*pLocaleID = this->lcid;
|
*pLocaleID = this->lcid;
|
||||||
|
@ -161,7 +166,7 @@ HRESULT WINAPI OleCreatePropertyFrameIndirect(LPOCPFIPARAMS lpParams)
|
||||||
WORD title;
|
WORD title;
|
||||||
} *dialogs;
|
} *dialogs;
|
||||||
IPropertyPage **property_page;
|
IPropertyPage **property_page;
|
||||||
IPropertyPageSite *property_page_site;
|
PropertyPageSite *property_page_site;
|
||||||
HRESULT res;
|
HRESULT res;
|
||||||
int i;
|
int i;
|
||||||
HMODULE hcomctl;
|
HMODULE hcomctl;
|
||||||
|
@ -270,12 +275,13 @@ HRESULT WINAPI OleCreatePropertyFrameIndirect(LPOCPFIPARAMS lpParams)
|
||||||
property_page_site = HeapAlloc(GetProcessHeap(), 0, sizeof(PropertyPageSite));
|
property_page_site = HeapAlloc(GetProcessHeap(), 0, sizeof(PropertyPageSite));
|
||||||
if(!property_page_site)
|
if(!property_page_site)
|
||||||
continue;
|
continue;
|
||||||
((PropertyPageSite*)property_page_site)->lpVtbl = &PropertyPageSiteVtbl;
|
property_page_site->IPropertyPageSite_iface.lpVtbl = &PropertyPageSiteVtbl;
|
||||||
((PropertyPageSite*)property_page_site)->ref = 1;
|
property_page_site->ref = 1;
|
||||||
((PropertyPageSite*)property_page_site)->lcid = lpParams->lcid;
|
property_page_site->lcid = lpParams->lcid;
|
||||||
|
|
||||||
res = IPropertyPage_SetPageSite(property_page[i], property_page_site);
|
res = IPropertyPage_SetPageSite(property_page[i],
|
||||||
IPropertyPageSite_Release(property_page_site);
|
&property_page_site->IPropertyPageSite_iface);
|
||||||
|
IPropertyPageSite_Release(&property_page_site->IPropertyPageSite_iface);
|
||||||
if(FAILED(res))
|
if(FAILED(res))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue