ddraw: COM cleanup for the IDirectDrawPalette interface.

This commit is contained in:
Ričardas Barkauskas 2011-10-03 17:14:27 -05:00 committed by Alexandre Julliard
parent a8616b7fcb
commit a6656468ef
3 changed files with 17 additions and 12 deletions

View File

@ -3609,7 +3609,7 @@ static HRESULT WINAPI ddraw7_CreatePalette(IDirectDraw7 *iface, DWORD Flags,
} }
TRACE("Created palette %p.\n", object); TRACE("Created palette %p.\n", object);
*Palette = (IDirectDrawPalette *)object; *Palette = &object->IDirectDrawPalette_iface;
LeaveCriticalSection(&ddraw_cs); LeaveCriticalSection(&ddraw_cs);
return DD_OK; return DD_OK;
} }
@ -3626,7 +3626,7 @@ static HRESULT WINAPI ddraw4_CreatePalette(IDirectDraw4 *iface, DWORD flags, PAL
hr = ddraw7_CreatePalette(&This->IDirectDraw7_iface, flags, entries, palette, outer_unknown); hr = ddraw7_CreatePalette(&This->IDirectDraw7_iface, flags, entries, palette, outer_unknown);
if (SUCCEEDED(hr) && *palette) if (SUCCEEDED(hr) && *palette)
{ {
IDirectDrawPaletteImpl *impl = (IDirectDrawPaletteImpl *)*palette; IDirectDrawPaletteImpl *impl = impl_from_IDirectDrawPalette(*palette);
IDirectDraw7_Release(&This->IDirectDraw7_iface); IDirectDraw7_Release(&This->IDirectDraw7_iface);
IDirectDraw4_AddRef(iface); IDirectDraw4_AddRef(iface);
impl->ifaceToRelease = (IUnknown *)iface; impl->ifaceToRelease = (IUnknown *)iface;
@ -3646,7 +3646,7 @@ static HRESULT WINAPI ddraw2_CreatePalette(IDirectDraw2 *iface, DWORD flags,
hr = ddraw7_CreatePalette(&This->IDirectDraw7_iface, flags, entries, palette, outer_unknown); hr = ddraw7_CreatePalette(&This->IDirectDraw7_iface, flags, entries, palette, outer_unknown);
if (SUCCEEDED(hr) && *palette) if (SUCCEEDED(hr) && *palette)
{ {
IDirectDrawPaletteImpl *impl = (IDirectDrawPaletteImpl *)*palette; IDirectDrawPaletteImpl *impl = impl_from_IDirectDrawPalette(*palette);
IDirectDraw7_Release(&This->IDirectDraw7_iface); IDirectDraw7_Release(&This->IDirectDraw7_iface);
impl->ifaceToRelease = NULL; impl->ifaceToRelease = NULL;
} }
@ -3666,7 +3666,7 @@ static HRESULT WINAPI ddraw1_CreatePalette(IDirectDraw *iface, DWORD flags,
hr = ddraw7_CreatePalette(&This->IDirectDraw7_iface, flags, entries, palette, outer_unknown); hr = ddraw7_CreatePalette(&This->IDirectDraw7_iface, flags, entries, palette, outer_unknown);
if (SUCCEEDED(hr) && *palette) if (SUCCEEDED(hr) && *palette)
{ {
IDirectDrawPaletteImpl *impl = (IDirectDrawPaletteImpl *)*palette; IDirectDrawPaletteImpl *impl = impl_from_IDirectDrawPalette(*palette);
IDirectDraw7_Release(&This->IDirectDraw7_iface); IDirectDraw7_Release(&This->IDirectDraw7_iface);
impl->ifaceToRelease = NULL; impl->ifaceToRelease = NULL;
} }

View File

@ -360,7 +360,7 @@ IDirectDrawClipperImpl *unsafe_impl_from_IDirectDrawClipper(IDirectDrawClipper *
struct IDirectDrawPaletteImpl struct IDirectDrawPaletteImpl
{ {
/* IUnknown fields */ /* IUnknown fields */
const IDirectDrawPaletteVtbl *lpVtbl; IDirectDrawPalette IDirectDrawPalette_iface;
LONG ref; LONG ref;
struct wined3d_palette *wineD3DPalette; struct wined3d_palette *wineD3DPalette;
@ -369,6 +369,11 @@ struct IDirectDrawPaletteImpl
IUnknown *ifaceToRelease; IUnknown *ifaceToRelease;
}; };
static inline IDirectDrawPaletteImpl *impl_from_IDirectDrawPalette(IDirectDrawPalette *iface)
{
return CONTAINING_RECORD(iface, IDirectDrawPaletteImpl, IDirectDrawPalette_iface);
}
IDirectDrawPaletteImpl *unsafe_impl_from_IDirectDrawPalette(IDirectDrawPalette *iface) DECLSPEC_HIDDEN; IDirectDrawPaletteImpl *unsafe_impl_from_IDirectDrawPalette(IDirectDrawPalette *iface) DECLSPEC_HIDDEN;
HRESULT ddraw_palette_init(IDirectDrawPaletteImpl *palette, HRESULT ddraw_palette_init(IDirectDrawPaletteImpl *palette,

View File

@ -70,7 +70,7 @@ IDirectDrawPaletteImpl_QueryInterface(IDirectDrawPalette *iface,
static ULONG WINAPI static ULONG WINAPI
IDirectDrawPaletteImpl_AddRef(IDirectDrawPalette *iface) IDirectDrawPaletteImpl_AddRef(IDirectDrawPalette *iface)
{ {
IDirectDrawPaletteImpl *This = (IDirectDrawPaletteImpl *)iface; IDirectDrawPaletteImpl *This = impl_from_IDirectDrawPalette(iface);
ULONG ref = InterlockedIncrement(&This->ref); ULONG ref = InterlockedIncrement(&This->ref);
TRACE("%p increasing refcount to %u.\n", This, ref); TRACE("%p increasing refcount to %u.\n", This, ref);
@ -90,7 +90,7 @@ IDirectDrawPaletteImpl_AddRef(IDirectDrawPalette *iface)
static ULONG WINAPI static ULONG WINAPI
IDirectDrawPaletteImpl_Release(IDirectDrawPalette *iface) IDirectDrawPaletteImpl_Release(IDirectDrawPalette *iface)
{ {
IDirectDrawPaletteImpl *This = (IDirectDrawPaletteImpl *)iface; IDirectDrawPaletteImpl *This = impl_from_IDirectDrawPalette(iface);
ULONG ref = InterlockedDecrement(&This->ref); ULONG ref = InterlockedDecrement(&This->ref);
TRACE("%p decreasing refcount to %u.\n", This, ref); TRACE("%p decreasing refcount to %u.\n", This, ref);
@ -155,7 +155,7 @@ static HRESULT WINAPI
IDirectDrawPaletteImpl_GetCaps(IDirectDrawPalette *iface, IDirectDrawPaletteImpl_GetCaps(IDirectDrawPalette *iface,
DWORD *Caps) DWORD *Caps)
{ {
IDirectDrawPaletteImpl *This = (IDirectDrawPaletteImpl *)iface; IDirectDrawPaletteImpl *This = impl_from_IDirectDrawPalette(iface);
TRACE("iface %p, caps %p.\n", iface, Caps); TRACE("iface %p, caps %p.\n", iface, Caps);
@ -191,7 +191,7 @@ IDirectDrawPaletteImpl_SetEntries(IDirectDrawPalette *iface,
DWORD Count, DWORD Count,
PALETTEENTRY *PalEnt) PALETTEENTRY *PalEnt)
{ {
IDirectDrawPaletteImpl *This = (IDirectDrawPaletteImpl *)iface; IDirectDrawPaletteImpl *This = impl_from_IDirectDrawPalette(iface);
HRESULT hr; HRESULT hr;
TRACE("iface %p, flags %#x, start %u, count %u, entries %p.\n", TRACE("iface %p, flags %#x, start %u, count %u, entries %p.\n",
@ -230,7 +230,7 @@ IDirectDrawPaletteImpl_GetEntries(IDirectDrawPalette *iface,
DWORD Count, DWORD Count,
PALETTEENTRY *PalEnt) PALETTEENTRY *PalEnt)
{ {
IDirectDrawPaletteImpl *This = (IDirectDrawPaletteImpl *)iface; IDirectDrawPaletteImpl *This = impl_from_IDirectDrawPalette(iface);
HRESULT hr; HRESULT hr;
TRACE("iface %p, flags %#x, start %u, count %u, entries %p.\n", TRACE("iface %p, flags %#x, start %u, count %u, entries %p.\n",
@ -262,7 +262,7 @@ IDirectDrawPaletteImpl *unsafe_impl_from_IDirectDrawPalette(IDirectDrawPalette *
{ {
if (!iface) return NULL; if (!iface) return NULL;
assert(iface->lpVtbl == &ddraw_palette_vtbl); assert(iface->lpVtbl == &ddraw_palette_vtbl);
return CONTAINING_RECORD(iface, IDirectDrawPaletteImpl, lpVtbl); return CONTAINING_RECORD(iface, IDirectDrawPaletteImpl, IDirectDrawPalette_iface);
} }
HRESULT ddraw_palette_init(IDirectDrawPaletteImpl *palette, HRESULT ddraw_palette_init(IDirectDrawPaletteImpl *palette,
@ -270,7 +270,7 @@ HRESULT ddraw_palette_init(IDirectDrawPaletteImpl *palette,
{ {
HRESULT hr; HRESULT hr;
palette->lpVtbl = &ddraw_palette_vtbl; palette->IDirectDrawPalette_iface.lpVtbl = &ddraw_palette_vtbl;
palette->ref = 1; palette->ref = 1;
hr = wined3d_palette_create(ddraw->wined3d_device, flags, hr = wined3d_palette_create(ddraw->wined3d_device, flags,