Implement some COM-related functions.

svn path=/trunk/; revision=18767
This commit is contained in:
Maarten Bosma
2005-10-25 14:03:20 +00:00
parent 6d06e2139b
commit 441ebe91cd
6 changed files with 160 additions and 95 deletions
-8
View File
@@ -101,11 +101,3 @@ HRESULT WINAPI DirectDrawEnumerateExW(
DX_STUB;
}
HRESULT WINAPI DirectDrawCreateClipper(
DWORD dwFlags,
LPDIRECTDRAWCLIPPER* lplpDDClipper,
LPUNKNOWN pUnkOuter
)
{
DX_STUB;
}
+24 -15
View File
@@ -11,13 +11,33 @@
#include "rosdraw.h"
HRESULT WINAPI Main_DirectDrawClipper_SetHwnd(
LPDIRECTDRAWCLIPPER iface, DWORD dwFlags, HWND hWnd)
ULONG WINAPI Main_DirectDrawClipper_Release(LPDIRECTDRAWCLIPPER iface)
{
DX_STUB;
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
ULONG ref = InterlockedDecrement(&This->ref);
if (ref == 0)
HeapFree(GetProcessHeap(), 0, This);
return ref;
}
ULONG WINAPI Main_DirectDrawClipper_Release(LPDIRECTDRAWCLIPPER iface)
ULONG WINAPI Main_DirectDrawClipper_AddRef (LPDIRECTDRAWCLIPPER iface)
{
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
ULONG ref = InterlockedIncrement((PLONG)&This->DirectDrawGlobal.dwRefCnt);
return ref;
}
HRESULT WINAPI Main_DirectDrawClipper_Initialize(
LPDIRECTDRAWCLIPPER iface, LPDIRECTDRAW lpDD, DWORD dwFlags)
{
return DD_OK;
}
HRESULT WINAPI Main_DirectDrawClipper_SetHwnd(
LPDIRECTDRAWCLIPPER iface, DWORD dwFlags, HWND hWnd)
{
DX_STUB;
}
@@ -41,23 +61,12 @@ HRESULT WINAPI Main_DirectDrawClipper_QueryInterface(
DX_STUB;
}
ULONG WINAPI Main_DirectDrawClipper_AddRef (LPDIRECTDRAWCLIPPER iface)
{
DX_STUB;
}
HRESULT WINAPI Main_DirectDrawClipper_GetHWnd(
LPDIRECTDRAWCLIPPER iface, HWND* hWndPtr)
{
DX_STUB;
}
HRESULT WINAPI Main_DirectDrawClipper_Initialize(
LPDIRECTDRAWCLIPPER iface, LPDIRECTDRAW lpDD, DWORD dwFlags)
{
DX_STUB;
}
HRESULT WINAPI Main_DirectDrawClipper_IsClipListChanged(
LPDIRECTDRAWCLIPPER iface, BOOL* lpbChanged)
{
+17 -8
View File
@@ -10,21 +10,30 @@
#include "rosdraw.h"
HRESULT WINAPI
Main_DirectDrawColorControl_QueryInterface(LPDIRECTDRAWCOLORCONTROL iface,
REFIID riid, LPVOID* ppvObj)
{
DX_STUB;
}
ULONG WINAPI
Main_DirectDrawColorControl_AddRef(LPDIRECTDRAWCOLORCONTROL iface)
{
DX_STUB;
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
ULONG ref = InterlockedIncrement((PLONG)&This->DirectDrawGlobal.dwRefCnt);
return ref;
}
ULONG WINAPI
Main_DirectDrawColorControl_Release(LPDIRECTDRAWCOLORCONTROL iface)
{
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
ULONG ref = InterlockedDecrement(&This->ref);
if (ref == 0)
HeapFree(GetProcessHeap(), 0, This);
return ref;
}
HRESULT WINAPI
Main_DirectDrawColorControl_QueryInterface(LPDIRECTDRAWCOLORCONTROL iface,
REFIID riid, LPVOID* ppvObj)
{
DX_STUB;
}
+75 -35
View File
@@ -125,33 +125,6 @@ HRESULT WINAPI Main_DirectDraw_SetDisplayMode (LPDIRECTDRAW7 iface, DWORD dwWidt
return DD_OK;
}
HRESULT WINAPI Main_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDSD,
LPDIRECTDRAWSURFACE7 *ppSurf, IUnknown *pUnkOuter)
{
if (pUnkOuter!=NULL)
return DDERR_INVALIDPARAMS;
if(sizeof(DDSURFACEDESC2)!=pDDSD->dwSize)
return DDERR_UNSUPPORTED;
// the nasty com stuff
IDirectDrawSurfaceImpl* That;
That = (IDirectDrawSurfaceImpl*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectDrawSurfaceImpl));
if (That == NULL)
return E_OUTOFMEMORY;
That->lpVtbl = &DirectDrawSurface7_Vtable;
That->lpVtbl_v3 = &DDRAW_IDDS3_Thunk_VTable;
That->ref = 1;
*ppSurf = (LPDIRECTDRAWSURFACE7)That;
// the real surface object creation
return That->lpVtbl->Initialize (*ppSurf, (LPDIRECTDRAW)iface, pDDSD);
}
ULONG WINAPI Main_DirectDraw_AddRef (LPDIRECTDRAW7 iface)
{
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
@@ -208,22 +181,89 @@ HRESULT WINAPI Main_DirectDraw_QueryInterface (
return S_OK;
}
/**** Stubs ****/
HRESULT WINAPI Main_DirectDraw_Compact(LPDIRECTDRAW7 iface)
HRESULT WINAPI Main_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDSD,
LPDIRECTDRAWSURFACE7 *ppSurf, IUnknown *pUnkOuter)
{
DX_STUB;
if (pUnkOuter!=NULL)
return DDERR_INVALIDPARAMS;
if(sizeof(DDSURFACEDESC2)!=pDDSD->dwSize)
return DDERR_UNSUPPORTED;
// the nasty com stuff
IDirectDrawSurfaceImpl* That;
That = (IDirectDrawSurfaceImpl*)HeapAlloc(GetProcessHeap(), 0, sizeof(IDirectDrawSurfaceImpl));
if (That == NULL)
return E_OUTOFMEMORY;
ZeroMemory(That, sizeof(IDirectDrawSurfaceImpl));
That->lpVtbl = &DirectDrawSurface7_Vtable;
That->lpVtbl_v3 = &DDRAW_IDDS3_Thunk_VTable;
That->ref = 1;
*ppSurf = (LPDIRECTDRAWSURFACE7)That;
// the real surface object creation
return That->lpVtbl->Initialize (*ppSurf, (LPDIRECTDRAW)iface, pDDSD);
}
HRESULT WINAPI Main_DirectDraw_CreateClipper(LPDIRECTDRAW7 iface, DWORD dwFlags,
LPDIRECTDRAWCLIPPER *ppClipper, IUnknown *pUnkOuter)
{
DX_STUB;
if (pUnkOuter!=NULL)
return DDERR_INVALIDPARAMS;
IDirectDrawClipperImpl* That;
That = (IDirectDrawClipperImpl*)HeapAlloc(GetProcessHeap(), 0, sizeof(IDirectDrawClipperImpl));
if (That == NULL)
return E_OUTOFMEMORY;
ZeroMemory(That, sizeof(IDirectDrawClipperImpl));
That->lpVtbl = &DirectDrawClipper_Vtable;
That->ref = 1;
*ppClipper = (LPDIRECTDRAWCLIPPER)That;
return That->lpVtbl->Initialize (*ppClipper, (LPDIRECTDRAW)iface, dwFlags);
}
HRESULT WINAPI Main_DirectDraw_CreatePalette(LPDIRECTDRAW7 iface, DWORD dwFlags,
LPPALETTEENTRY palent,LPDIRECTDRAWPALETTE* ppPalette,LPUNKNOWN pUnknown)
// This function is exported by the dll
HRESULT WINAPI DirectDrawCreateClipper (DWORD dwFlags,
LPDIRECTDRAWCLIPPER* lplpDDClipper, LPUNKNOWN pUnkOuter)
{
DX_STUB;
return Main_DirectDraw_CreateClipper(NULL, dwFlags, lplpDDClipper, pUnkOuter);
}
HRESULT WINAPI Main_DirectDraw_CreatePalette(LPDIRECTDRAW7 iface, DWORD dwFlags,
LPPALETTEENTRY palent, LPDIRECTDRAWPALETTE* ppPalette, LPUNKNOWN pUnkOuter)
{
if (pUnkOuter!=NULL)
return DDERR_INVALIDPARAMS;
IDirectDrawPaletteImpl* That;
That = (IDirectDrawPaletteImpl*)HeapAlloc(GetProcessHeap(), 0, sizeof(IDirectDrawPaletteImpl));
if (That == NULL)
return E_OUTOFMEMORY;
ZeroMemory(That, sizeof(IDirectDrawPaletteImpl));
That->lpVtbl = &DirectDrawPalette_Vtable;
That->ref = 1;
*ppPalette = (LPDIRECTDRAWPALETTE)That;
return That->lpVtbl->Initialize (*ppPalette, (LPDIRECTDRAW)iface, dwFlags, palent);
}
/**** Stubs ****/
HRESULT WINAPI Main_DirectDraw_Compact(LPDIRECTDRAW7 iface)
{
DX_STUB;
}
HRESULT WINAPI Main_DirectDraw_DuplicateSurface(LPDIRECTDRAW7 iface, LPDIRECTDRAWSURFACE7 src,
+17 -9
View File
@@ -10,22 +10,30 @@
#include "rosdraw.h"
HRESULT WINAPI
Main_DirectDrawGammaControl_QueryInterface(LPDIRECTDRAWGAMMACONTROL iface, REFIID riid,
LPVOID *ppObj)
{
DX_STUB;
}
ULONG WINAPI
Main_DirectDrawGammaControl_AddRef(LPDIRECTDRAWGAMMACONTROL iface)
{
DX_STUB;
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
ULONG ref = InterlockedIncrement((PLONG)&This->DirectDrawGlobal.dwRefCnt);
return ref;
}
ULONG WINAPI
Main_DirectDrawGammaControl_Release(LPDIRECTDRAWGAMMACONTROL iface)
{
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
ULONG ref = InterlockedDecrement(&This->ref);
if (ref == 0)
HeapFree(GetProcessHeap(), 0, This);
return ref;
}
HRESULT WINAPI
Main_DirectDrawGammaControl_QueryInterface(LPDIRECTDRAWGAMMACONTROL iface, REFIID riid,
LPVOID *ppObj)
{
DX_STUB;
}
+27 -20
View File
@@ -10,6 +10,33 @@
#include "rosdraw.h"
ULONG WINAPI
Main_DirectDrawPalette_Release(LPDIRECTDRAWPALETTE iface)
{
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
ULONG ref = InterlockedIncrement((PLONG)&This->DirectDrawGlobal.dwRefCnt);
return ref;
}
ULONG WINAPI Main_DirectDrawPalette_AddRef(LPDIRECTDRAWPALETTE iface)
{
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
ULONG ref = InterlockedDecrement(&This->ref);
if (ref == 0)
HeapFree(GetProcessHeap(), 0, This);
return ref;
}
HRESULT WINAPI
Main_DirectDrawPalette_Initialize(LPDIRECTDRAWPALETTE iface,
LPDIRECTDRAW ddraw, DWORD dwFlags,
LPPALETTEENTRY palent)
{
return DD_OK;
}
HRESULT WINAPI
Main_DirectDrawPalette_GetEntries(LPDIRECTDRAWPALETTE iface, DWORD dwFlags,
@@ -26,26 +53,6 @@ Main_DirectDrawPalette_SetEntries(LPDIRECTDRAWPALETTE iface, DWORD dwFlags,
{
DX_STUB;
}
ULONG WINAPI
Main_DirectDrawPalette_Release(LPDIRECTDRAWPALETTE iface)
{
DX_STUB;
}
ULONG WINAPI Main_DirectDrawPalette_AddRef(LPDIRECTDRAWPALETTE iface)
{
DX_STUB;
}
HRESULT WINAPI
Main_DirectDrawPalette_Initialize(LPDIRECTDRAWPALETTE iface,
LPDIRECTDRAW ddraw, DWORD dwFlags,
LPPALETTEENTRY palent)
{
DX_STUB;
}
HRESULT WINAPI
Main_DirectDrawPalette_GetCaps(LPDIRECTDRAWPALETTE iface, LPDWORD lpdwCaps)
{