Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
1b95d736
Commit
1b95d736
authored
Feb 02, 1999
by
Lionel Ulmer
Committed by
Alexandre Julliard
Feb 02, 1999
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added stubs for new DirectDraw4 and DirectDrawSurface4 methods.
parent
9cab0d10
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
536 additions
and
206 deletions
+536
-206
d3d_private.h
graphics/d3d_private.h
+2
-2
d3dtexture.c
graphics/d3dtexture.c
+4
-4
ddraw.c
graphics/ddraw.c
+390
-196
d3d.h
include/d3d.h
+1
-1
ddraw.h
include/ddraw.h
+139
-3
No files found.
graphics/d3d_private.h
View file @
1b95d736
...
...
@@ -105,8 +105,8 @@ void set_render_state(D3DRENDERSTATETYPE dwRenderStateType,
#endif
/* HAVE_MESAGL */
/* All non-static functions 'exported' by various sub-objects */
extern
LPDIRECT3DTEXTURE2
d3dtexture2_create
(
LPDIRECTDRAWSURFACE
3
surf
)
;
extern
LPDIRECT3DTEXTURE
d3dtexture_create
(
LPDIRECTDRAWSURFACE
3
surf
)
;
extern
LPDIRECT3DTEXTURE2
d3dtexture2_create
(
LPDIRECTDRAWSURFACE
4
surf
)
;
extern
LPDIRECT3DTEXTURE
d3dtexture_create
(
LPDIRECTDRAWSURFACE
4
surf
)
;
extern
LPDIRECT3DLIGHT
d3dlight_create_dx3
(
LPDIRECT3D
d3d
)
;
extern
LPDIRECT3DLIGHT
d3dlight_create
(
LPDIRECT3D2
d3d
)
;
...
...
graphics/d3dtexture.c
View file @
1b95d736
...
...
@@ -29,7 +29,7 @@ static IDirect3DTexture_VTable texture_vtable;
/*******************************************************************************
* Texture2 Creation functions
*/
LPDIRECT3DTEXTURE2
d3dtexture2_create
(
LPDIRECTDRAWSURFACE
3
surf
)
LPDIRECT3DTEXTURE2
d3dtexture2_create
(
LPDIRECTDRAWSURFACE
4
surf
)
{
LPDIRECT3DTEXTURE2
mat
;
...
...
@@ -44,7 +44,7 @@ LPDIRECT3DTEXTURE2 d3dtexture2_create(LPDIRECTDRAWSURFACE3 surf)
/*******************************************************************************
* Texture Creation functions
*/
LPDIRECT3DTEXTURE
d3dtexture_create
(
LPDIRECTDRAWSURFACE
3
surf
)
LPDIRECT3DTEXTURE
d3dtexture_create
(
LPDIRECTDRAWSURFACE
4
surf
)
{
LPDIRECT3DTEXTURE
mat
;
...
...
@@ -425,12 +425,12 @@ static IDirect3DTexture_VTable texture_vtable = {
#else
/* HAVE_MESAGL */
/* These function should never be called if MesaGL is not present */
LPDIRECT3DTEXTURE2
d3dtexture2_create
(
LPDIRECTDRAWSURFACE
3
surf
)
{
LPDIRECT3DTEXTURE2
d3dtexture2_create
(
LPDIRECTDRAWSURFACE
4
surf
)
{
ERR
(
ddraw
,
"Should not be called...
\n
"
);
return
NULL
;
}
LPDIRECT3DTEXTURE
d3dtexture_create
(
LPDIRECTDRAWSURFACE
3
surf
)
{
LPDIRECT3DTEXTURE
d3dtexture_create
(
LPDIRECTDRAWSURFACE
4
surf
)
{
ERR
(
ddraw
,
"Should not be called...
\n
"
);
return
NULL
;
}
...
...
graphics/ddraw.c
View file @
1b95d736
...
...
@@ -89,9 +89,10 @@ static GUID XLIB_DirectDraw_GUID = { /* 1574a740-dc61-11d1-8407-f7875a7d1879 */
{
0x84
,
0x07
,
0xf7
,
0x87
,
0x5a
,
0x7d
,
0x18
,
0x79
}
};
static
struct
IDirectDrawSurface
3_VTable
dga_dds3vt
,
xlib_dds3
vt
;
static
struct
IDirectDrawSurface
4_VTable
dga_dds4vt
,
xlib_dds4
vt
;
static
struct
IDirectDraw_VTable
dga_ddvt
,
xlib_ddvt
;
static
struct
IDirectDraw2_VTable
dga_dd2vt
,
xlib_dd2vt
;
static
struct
IDirectDraw4_VTable
dga_dd4vt
,
xlib_dd4vt
;
static
struct
IDirectDrawClipper_VTable
ddclipvt
;
static
struct
IDirectDrawPalette_VTable
dga_ddpalvt
,
xlib_ddpalvt
;
static
struct
IDirect3D_VTable
d3dvt
;
...
...
@@ -373,14 +374,14 @@ static int _getpixelformat(LPDIRECTDRAW2 ddraw,LPDDPIXELFORMAT pf) {
}
/******************************************************************************
* IDirectDrawSurface
,IDirectDrawSurface2,IDirectDrawSurface3
* IDirectDrawSurface
methods
*
* Since DDS3 and DDS2 are supersets of DDS, we implement DDS3 and let
* DDS and DDS2 use those functions. (Function calls did not change (except
* using different DirectDrawSurfaceX version), just added flags and functions)
*/
static
HRESULT
WINAPI
IDirectDrawSurface
3
_Lock
(
LPDIRECTDRAWSURFACE
3
this
,
LPRECT32
lprect
,
LPDDSURFACEDESC
lpddsd
,
DWORD
flags
,
HANDLE32
hnd
static
HRESULT
WINAPI
IDirectDrawSurface
4
_Lock
(
LPDIRECTDRAWSURFACE
4
this
,
LPRECT32
lprect
,
LPDDSURFACEDESC
lpddsd
,
DWORD
flags
,
HANDLE32
hnd
)
{
TRACE
(
ddraw
,
"(%p)->Lock(%p,%p,%08lx,%08lx)
\n
"
,
this
,
lprect
,
lpddsd
,
flags
,(
DWORD
)
hnd
);
...
...
@@ -407,14 +408,14 @@ static HRESULT WINAPI IDirectDrawSurface3_Lock(
return
DD_OK
;
}
static
HRESULT
WINAPI
DGA_IDirectDrawSurface
3
_Unlock
(
LPDIRECTDRAWSURFACE
3
this
,
LPVOID
surface
static
HRESULT
WINAPI
DGA_IDirectDrawSurface
4
_Unlock
(
LPDIRECTDRAWSURFACE
4
this
,
LPVOID
surface
)
{
TRACE
(
ddraw
,
"(%p)->Unlock(%p)
\n
"
,
this
,
surface
);
return
DD_OK
;
}
static
void
Xlib_copy_surface_on_screen
(
LPDIRECTDRAWSURFACE
3
this
)
{
static
void
Xlib_copy_surface_on_screen
(
LPDIRECTDRAWSURFACE
4
this
)
{
if
(
this
->
s
.
ddraw
->
d
.
depth
!=
this
->
s
.
ddraw
->
d
.
screen_depth
)
{
/* Pixel convertion ! */
if
((
this
->
s
.
ddraw
->
d
.
depth
==
8
)
&&
(
this
->
s
.
ddraw
->
d
.
screen_depth
==
16
))
{
...
...
@@ -460,8 +461,8 @@ static void Xlib_copy_surface_on_screen(LPDIRECTDRAWSURFACE3 this) {
this
->
t
.
xlib
.
image
->
height
);
}
static
HRESULT
WINAPI
Xlib_IDirectDrawSurface
3
_Unlock
(
LPDIRECTDRAWSURFACE
3
this
,
LPVOID
surface
)
static
HRESULT
WINAPI
Xlib_IDirectDrawSurface
4
_Unlock
(
LPDIRECTDRAWSURFACE
4
this
,
LPVOID
surface
)
{
TRACE
(
ddraw
,
"(%p)->Unlock(%p)
\n
"
,
this
,
surface
);
...
...
@@ -480,8 +481,8 @@ static HRESULT WINAPI Xlib_IDirectDrawSurface3_Unlock(
return
DD_OK
;
}
static
HRESULT
WINAPI
DGA_IDirectDrawSurface
3
_Flip
(
LPDIRECTDRAWSURFACE
3
this
,
LPDIRECTDRAWSURFACE3
flipto
,
DWORD
dwFlags
static
HRESULT
WINAPI
DGA_IDirectDrawSurface
4
_Flip
(
LPDIRECTDRAWSURFACE
4
this
,
LPDIRECTDRAWSURFACE4
flipto
,
DWORD
dwFlags
)
{
#ifdef HAVE_LIBXXF86DGA
TRACE
(
ddraw
,
"(%p)->Flip(%p,%08lx)
\n
"
,
this
,
flipto
,
dwFlags
);
...
...
@@ -516,8 +517,8 @@ static HRESULT WINAPI DGA_IDirectDrawSurface3_Flip(
#endif
/* defined(HAVE_LIBXXF86DGA) */
}
static
HRESULT
WINAPI
Xlib_IDirectDrawSurface
3
_Flip
(
LPDIRECTDRAWSURFACE
3
this
,
LPDIRECTDRAWSURFACE3
flipto
,
DWORD
dwFlags
static
HRESULT
WINAPI
Xlib_IDirectDrawSurface
4
_Flip
(
LPDIRECTDRAWSURFACE
4
this
,
LPDIRECTDRAWSURFACE4
flipto
,
DWORD
dwFlags
)
{
TRACE
(
ddraw
,
"(%p)->Flip(%p,%08lx)
\n
"
,
this
,
flipto
,
dwFlags
);
if
(
!
this
->
s
.
ddraw
->
d
.
paintable
)
...
...
@@ -549,12 +550,12 @@ static HRESULT WINAPI Xlib_IDirectDrawSurface3_Flip(
}
/* The IDirectDrawSurface
3
::SetPalette method attaches the specified
/* The IDirectDrawSurface
4
::SetPalette method attaches the specified
* DirectDrawPalette object to a surface. The surface uses this palette for all
* subsequent operations. The palette change takes place immediately.
*/
static
HRESULT
WINAPI
Xlib_IDirectDrawSurface
3
_SetPalette
(
LPDIRECTDRAWSURFACE
3
this
,
LPDIRECTDRAWPALETTE
pal
static
HRESULT
WINAPI
Xlib_IDirectDrawSurface
4
_SetPalette
(
LPDIRECTDRAWSURFACE
4
this
,
LPDIRECTDRAWPALETTE
pal
)
{
int
i
;
TRACE
(
ddraw
,
"(%p)->(%p)
\n
"
,
this
,
pal
);
...
...
@@ -613,8 +614,8 @@ static HRESULT WINAPI Xlib_IDirectDrawSurface3_SetPalette(
return
DD_OK
;
}
static
HRESULT
WINAPI
DGA_IDirectDrawSurface
3
_SetPalette
(
LPDIRECTDRAWSURFACE
3
this
,
LPDIRECTDRAWPALETTE
pal
static
HRESULT
WINAPI
DGA_IDirectDrawSurface
4
_SetPalette
(
LPDIRECTDRAWSURFACE
4
this
,
LPDIRECTDRAWPALETTE
pal
)
{
TRACE
(
ddraw
,
"(%p)->(%p)
\n
"
,
this
,
pal
);
#ifdef HAVE_LIBXXF86DGA
...
...
@@ -646,8 +647,8 @@ static HRESULT WINAPI DGA_IDirectDrawSurface3_SetPalette(
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_Blt
(
LPDIRECTDRAWSURFACE
3
this
,
LPRECT32
rdst
,
LPDIRECTDRAWSURFACE3
src
,
LPRECT32
rsrc
,
DWORD
dwFlags
,
LPDDBLTFX
lpbltfx
static
HRESULT
WINAPI
IDirectDrawSurface
4
_Blt
(
LPDIRECTDRAWSURFACE
4
this
,
LPRECT32
rdst
,
LPDIRECTDRAWSURFACE4
src
,
LPRECT32
rsrc
,
DWORD
dwFlags
,
LPDDBLTFX
lpbltfx
)
{
RECT32
xdst
,
xsrc
;
DDSURFACEDESC
ddesc
,
sdesc
;
...
...
@@ -873,8 +874,8 @@ static HRESULT WINAPI IDirectDrawSurface3_Blt(
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_BltFast
(
LPDIRECTDRAWSURFACE
3
this
,
DWORD
dstx
,
DWORD
dsty
,
LPDIRECTDRAWSURFACE3
src
,
LPRECT32
rsrc
,
DWORD
trans
static
HRESULT
WINAPI
IDirectDrawSurface
4
_BltFast
(
LPDIRECTDRAWSURFACE
4
this
,
DWORD
dstx
,
DWORD
dsty
,
LPDIRECTDRAWSURFACE4
src
,
LPRECT32
rsrc
,
DWORD
trans
)
{
int
i
,
bpp
,
w
,
h
;
DDSURFACEDESC
ddesc
,
sdesc
;
...
...
@@ -910,8 +911,8 @@ static HRESULT WINAPI IDirectDrawSurface3_BltFast(
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_BltBatch
(
LPDIRECTDRAWSURFACE
3
this
,
LPDDBLTBATCH
ddbltbatch
,
DWORD
x
,
DWORD
y
static
HRESULT
WINAPI
IDirectDrawSurface
4
_BltBatch
(
LPDIRECTDRAWSURFACE
4
this
,
LPDDBLTBATCH
ddbltbatch
,
DWORD
x
,
DWORD
y
)
{
FIXME
(
ddraw
,
"(%p)->BltBatch(%p,%08lx,%08lx),stub!
\n
"
,
this
,
ddbltbatch
,
x
,
y
...
...
@@ -919,16 +920,16 @@ static HRESULT WINAPI IDirectDrawSurface3_BltBatch(
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_GetCaps
(
LPDIRECTDRAWSURFACE
3
this
,
LPDDSCAPS
caps
static
HRESULT
WINAPI
IDirectDrawSurface
4
_GetCaps
(
LPDIRECTDRAWSURFACE
4
this
,
LPDDSCAPS
caps
)
{
TRACE
(
ddraw
,
"(%p)->GetCaps(%p)
\n
"
,
this
,
caps
);
caps
->
dwCaps
=
DDSCAPS_PALETTE
;
/* probably more */
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_GetSurfaceDesc
(
LPDIRECTDRAWSURFACE
3
this
,
LPDDSURFACEDESC
ddsd
static
HRESULT
WINAPI
IDirectDrawSurface
4
_GetSurfaceDesc
(
LPDIRECTDRAWSURFACE
4
this
,
LPDDSURFACEDESC
ddsd
)
{
TRACE
(
ddraw
,
"(%p)->GetSurfaceDesc(%p)
\n
"
,
this
,
ddsd
);
...
...
@@ -949,13 +950,13 @@ static HRESULT WINAPI IDirectDrawSurface3_GetSurfaceDesc(
return
DD_OK
;
}
static
ULONG
WINAPI
IDirectDrawSurface
3_AddRef
(
LPDIRECTDRAWSURFACE3
this
)
{
static
ULONG
WINAPI
IDirectDrawSurface
4_AddRef
(
LPDIRECTDRAWSURFACE4
this
)
{
TRACE
(
ddraw
,
"(%p)->() incrementing from %lu.
\n
"
,
this
,
this
->
ref
);
return
++
(
this
->
ref
);
}
static
ULONG
WINAPI
DGA_IDirectDrawSurface
3_Release
(
LPDIRECTDRAWSURFACE3
this
)
{
static
ULONG
WINAPI
DGA_IDirectDrawSurface
4_Release
(
LPDIRECTDRAWSURFACE4
this
)
{
TRACE
(
ddraw
,
"(%p)->() decrementing from %lu.
\n
"
,
this
,
this
->
ref
);
#ifdef HAVE_LIBXXF86DGA
...
...
@@ -979,7 +980,7 @@ static ULONG WINAPI DGA_IDirectDrawSurface3_Release(LPDIRECTDRAWSURFACE3 this) {
return
this
->
ref
;
}
static
ULONG
WINAPI
Xlib_IDirectDrawSurface
3_Release
(
LPDIRECTDRAWSURFACE3
this
)
{
static
ULONG
WINAPI
Xlib_IDirectDrawSurface
4_Release
(
LPDIRECTDRAWSURFACE4
this
)
{
TRACE
(
ddraw
,
"(%p)->() decrementing from %lu.
\n
"
,
this
,
this
->
ref
);
if
(
!--
(
this
->
ref
))
{
...
...
@@ -1039,8 +1040,8 @@ static ULONG WINAPI Xlib_IDirectDrawSurface3_Release(LPDIRECTDRAWSURFACE3 this)
return
this
->
ref
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_GetAttachedSurface
(
LPDIRECTDRAWSURFACE
3
this
,
LPDDSCAPS
lpddsd
,
LPDIRECTDRAWSURFACE3
*
lpdsf
static
HRESULT
WINAPI
IDirectDrawSurface
4
_GetAttachedSurface
(
LPDIRECTDRAWSURFACE
4
this
,
LPDDSCAPS
lpddsd
,
LPDIRECTDRAWSURFACE4
*
lpdsf
)
{
TRACE
(
ddraw
,
"(%p)->GetAttachedSurface(%p,%p)
\n
"
,
this
,
lpddsd
,
lpdsf
);
...
...
@@ -1064,16 +1065,16 @@ static HRESULT WINAPI IDirectDrawSurface3_GetAttachedSurface(
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_Initialize
(
LPDIRECTDRAWSURFACE
3
this
,
LPDIRECTDRAW
ddraw
,
LPDDSURFACEDESC
lpdsfd
static
HRESULT
WINAPI
IDirectDrawSurface
4
_Initialize
(
LPDIRECTDRAWSURFACE
4
this
,
LPDIRECTDRAW
ddraw
,
LPDDSURFACEDESC
lpdsfd
)
{
TRACE
(
ddraw
,
"(%p)->(%p, %p)
\n
"
,
this
,
ddraw
,
lpdsfd
);
return
DDERR_ALREADYINITIALIZED
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_GetPixelFormat
(
LPDIRECTDRAWSURFACE
3
this
,
LPDDPIXELFORMAT
pf
static
HRESULT
WINAPI
IDirectDrawSurface
4
_GetPixelFormat
(
LPDIRECTDRAWSURFACE
4
this
,
LPDDPIXELFORMAT
pf
)
{
TRACE
(
ddraw
,
"(%p)->(%p)
\n
"
,
this
,
pf
);
...
...
@@ -1082,27 +1083,27 @@ static HRESULT WINAPI IDirectDrawSurface3_GetPixelFormat(
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3_GetBltStatus
(
LPDIRECTDRAWSURFACE3
this
,
DWORD
dwFlags
)
{
static
HRESULT
WINAPI
IDirectDrawSurface
4_GetBltStatus
(
LPDIRECTDRAWSURFACE4
this
,
DWORD
dwFlags
)
{
FIXME
(
ddraw
,
"(%p)->(0x%08lx),stub!
\n
"
,
this
,
dwFlags
);
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_GetOverlayPosition
(
LPDIRECTDRAWSURFACE
3
this
,
LPLONG
x1
,
LPLONG
x2
static
HRESULT
WINAPI
IDirectDrawSurface
4
_GetOverlayPosition
(
LPDIRECTDRAWSURFACE
4
this
,
LPLONG
x1
,
LPLONG
x2
)
{
FIXME
(
ddraw
,
"(%p)->(%p,%p),stub!
\n
"
,
this
,
x1
,
x2
);
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_SetClipper
(
LPDIRECTDRAWSURFACE
3
this
,
LPDIRECTDRAWCLIPPER
clipper
static
HRESULT
WINAPI
IDirectDrawSurface
4
_SetClipper
(
LPDIRECTDRAWSURFACE
4
this
,
LPDIRECTDRAWCLIPPER
clipper
)
{
FIXME
(
ddraw
,
"(%p)->(%p),stub!
\n
"
,
this
,
clipper
);
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_AddAttachedSurface
(
LPDIRECTDRAWSURFACE
3
this
,
LPDIRECTDRAWSURFACE3
surf
static
HRESULT
WINAPI
IDirectDrawSurface
4
_AddAttachedSurface
(
LPDIRECTDRAWSURFACE
4
this
,
LPDIRECTDRAWSURFACE4
surf
)
{
FIXME
(
ddraw
,
"(%p)->(%p),stub!
\n
"
,
this
,
surf
);
...
...
@@ -1114,13 +1115,13 @@ static HRESULT WINAPI IDirectDrawSurface3_AddAttachedSurface(
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3_GetDC
(
LPDIRECTDRAWSURFACE3
this
,
HDC32
*
lphdc
)
{
static
HRESULT
WINAPI
IDirectDrawSurface
4_GetDC
(
LPDIRECTDRAWSURFACE4
this
,
HDC32
*
lphdc
)
{
FIXME
(
ddraw
,
"(%p)->GetDC(%p)
\n
"
,
this
,
lphdc
);
*
lphdc
=
BeginPaint32
(
this
->
s
.
ddraw
->
d
.
window
,
&
this
->
s
.
ddraw
->
d
.
ps
);
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3_ReleaseDC
(
LPDIRECTDRAWSURFACE3
this
,
HDC32
hdc
)
{
static
HRESULT
WINAPI
IDirectDrawSurface
4_ReleaseDC
(
LPDIRECTDRAWSURFACE4
this
,
HDC32
hdc
)
{
DDSURFACEDESC
desc
;
DWORD
x
,
y
;
...
...
@@ -1141,16 +1142,17 @@ static HRESULT WINAPI IDirectDrawSurface3_ReleaseDC(LPDIRECTDRAWSURFACE3 this,HD
}
static
HRESULT
WINAPI
IDirectDrawSurface
3_QueryInterface
(
LPDIRECTDRAWSURFACE3
this
,
REFIID
refiid
,
LPVOID
*
obj
)
{
static
HRESULT
WINAPI
IDirectDrawSurface
4_QueryInterface
(
LPDIRECTDRAWSURFACE4
this
,
REFIID
refiid
,
LPVOID
*
obj
)
{
char
xrefiid
[
50
];
WINE_StringFromCLSID
((
LPCLSID
)
refiid
,
xrefiid
);
TRACE
(
ddraw
,
"(%p)->(%s,%p)
\n
"
,
this
,
xrefiid
,
obj
);
/*
DirectDrawSurface,DirectDrawSurface2 and DirectDrawSurface3
use
/*
All DirectDrawSurface versions (1, 2, 3 and 4)
use
* the same interface. And IUnknown does that too of course.
*/
if
(
!
memcmp
(
&
IID_IDirectDrawSurface3
,
refiid
,
sizeof
(
IID
))
||
if
(
!
memcmp
(
&
IID_IDirectDrawSurface4
,
refiid
,
sizeof
(
IID
))
||
!
memcmp
(
&
IID_IDirectDrawSurface3
,
refiid
,
sizeof
(
IID
))
||
!
memcmp
(
&
IID_IDirectDrawSurface2
,
refiid
,
sizeof
(
IID
))
||
!
memcmp
(
&
IID_IDirectDrawSurface
,
refiid
,
sizeof
(
IID
))
||
!
memcmp
(
&
IID_IUnknown
,
refiid
,
sizeof
(
IID
))
...
...
@@ -1196,23 +1198,23 @@ static HRESULT WINAPI IDirectDrawSurface3_QueryInterface(LPDIRECTDRAWSURFACE3 th
return
OLE_E_ENUM_NOMORE
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3_IsLost
(
LPDIRECTDRAWSURFACE3
this
)
{
static
HRESULT
WINAPI
IDirectDrawSurface
4_IsLost
(
LPDIRECTDRAWSURFACE4
this
)
{
TRACE
(
ddraw
,
"(%p)->(), stub!
\n
"
,
this
);
return
DD_OK
;
/* hmm */
}
static
HRESULT
WINAPI
IDirectDrawSurface
3_EnumAttachedSurfaces
(
LPDIRECTDRAWSURFACE3
this
,
LPVOID
context
,
LPDDENUMSURFACESCALLBACK
esfcb
)
{
static
HRESULT
WINAPI
IDirectDrawSurface
4_EnumAttachedSurfaces
(
LPDIRECTDRAWSURFACE4
this
,
LPVOID
context
,
LPDDENUMSURFACESCALLBACK
esfcb
)
{
FIXME
(
ddraw
,
"(%p)->(%p,%p),stub!
\n
"
,
this
,
context
,
esfcb
);
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3_Restore
(
LPDIRECTDRAWSURFACE3
this
)
{
static
HRESULT
WINAPI
IDirectDrawSurface
4_Restore
(
LPDIRECTDRAWSURFACE4
this
)
{
FIXME
(
ddraw
,
"(%p)->(),stub!
\n
"
,
this
);
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_SetColorKey
(
LPDIRECTDRAWSURFACE
3
this
,
DWORD
dwFlags
,
LPDDCOLORKEY
ckey
)
static
HRESULT
WINAPI
IDirectDrawSurface
4
_SetColorKey
(
LPDIRECTDRAWSURFACE
4
this
,
DWORD
dwFlags
,
LPDDCOLORKEY
ckey
)
{
TRACE
(
ddraw
,
"(%p)->(0x%08lx,%p)
\n
"
,
this
,
dwFlags
,
ckey
);
...
...
@@ -1253,8 +1255,8 @@ static HRESULT WINAPI IDirectDrawSurface3_SetColorKey(
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_AddOverlayDirtyRect
(
LPDIRECTDRAWSURFACE
3
this
,
static
HRESULT
WINAPI
IDirectDrawSurface
4
_AddOverlayDirtyRect
(
LPDIRECTDRAWSURFACE
4
this
,
LPRECT32
lpRect
)
{
FIXME
(
ddraw
,
"(%p)->(%p),stub!
\n
"
,
this
,
lpRect
);
...
...
@@ -1262,18 +1264,18 @@ static HRESULT WINAPI IDirectDrawSurface3_AddOverlayDirtyRect(
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_DeleteAttachedSurface
(
LPDIRECTDRAWSURFACE
3
this
,
static
HRESULT
WINAPI
IDirectDrawSurface
4
_DeleteAttachedSurface
(
LPDIRECTDRAWSURFACE
4
this
,
DWORD
dwFlags
,
LPDIRECTDRAWSURFACE
3
lpDDSAttachedSurface
)
LPDIRECTDRAWSURFACE
4
lpDDSAttachedSurface
)
{
FIXME
(
ddraw
,
"(%p)->(0x%08lx,%p),stub!
\n
"
,
this
,
dwFlags
,
lpDDSAttachedSurface
);
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_EnumOverlayZOrders
(
LPDIRECTDRAWSURFACE
3
this
,
static
HRESULT
WINAPI
IDirectDrawSurface
4
_EnumOverlayZOrders
(
LPDIRECTDRAWSURFACE
4
this
,
DWORD
dwFlags
,
LPVOID
lpContext
,
LPDDENUMSURFACESCALLBACK
lpfnCallback
)
...
...
@@ -1284,8 +1286,8 @@ static HRESULT WINAPI IDirectDrawSurface3_EnumOverlayZOrders(
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_GetClipper
(
LPDIRECTDRAWSURFACE
3
this
,
static
HRESULT
WINAPI
IDirectDrawSurface
4
_GetClipper
(
LPDIRECTDRAWSURFACE
4
this
,
LPDIRECTDRAWCLIPPER
*
lplpDDClipper
)
{
FIXME
(
ddraw
,
"(%p)->(%p),stub!
\n
"
,
this
,
lplpDDClipper
);
...
...
@@ -1293,8 +1295,8 @@ static HRESULT WINAPI IDirectDrawSurface3_GetClipper(
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_GetColorKey
(
LPDIRECTDRAWSURFACE
3
this
,
static
HRESULT
WINAPI
IDirectDrawSurface
4
_GetColorKey
(
LPDIRECTDRAWSURFACE
4
this
,
DWORD
dwFlags
,
LPDDCOLORKEY
lpDDColorKey
)
{
...
...
@@ -1331,8 +1333,8 @@ static HRESULT WINAPI IDirectDrawSurface3_GetColorKey(
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_GetFlipStatus
(
LPDIRECTDRAWSURFACE
3
this
,
static
HRESULT
WINAPI
IDirectDrawSurface
4
_GetFlipStatus
(
LPDIRECTDRAWSURFACE
4
this
,
DWORD
dwFlags
)
{
FIXME
(
ddraw
,
"(%p)->(0x%08lx),stub!
\n
"
,
this
,
dwFlags
);
...
...
@@ -1340,8 +1342,8 @@ static HRESULT WINAPI IDirectDrawSurface3_GetFlipStatus(
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_GetPalette
(
LPDIRECTDRAWSURFACE
3
this
,
static
HRESULT
WINAPI
IDirectDrawSurface
4
_GetPalette
(
LPDIRECTDRAWSURFACE
4
this
,
LPDIRECTDRAWPALETTE
*
lplpDDPalette
)
{
FIXME
(
ddraw
,
"(%p)->(%p),stub!
\n
"
,
this
,
lplpDDPalette
);
...
...
@@ -1349,8 +1351,8 @@ static HRESULT WINAPI IDirectDrawSurface3_GetPalette(
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_SetOverlayPosition
(
LPDIRECTDRAWSURFACE
3
this
,
static
HRESULT
WINAPI
IDirectDrawSurface
4
_SetOverlayPosition
(
LPDIRECTDRAWSURFACE
4
this
,
LONG
lX
,
LONG
lY
)
{
...
...
@@ -1359,10 +1361,10 @@ static HRESULT WINAPI IDirectDrawSurface3_SetOverlayPosition(
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_UpdateOverlay
(
LPDIRECTDRAWSURFACE
3
this
,
static
HRESULT
WINAPI
IDirectDrawSurface
4
_UpdateOverlay
(
LPDIRECTDRAWSURFACE
4
this
,
LPRECT32
lpSrcRect
,
LPDIRECTDRAWSURFACE
3
lpDDDestSurface
,
LPDIRECTDRAWSURFACE
4
lpDDDestSurface
,
LPRECT32
lpDestRect
,
DWORD
dwFlags
,
LPDDOVERLAYFX
lpDDOverlayFx
)
...
...
@@ -1373,8 +1375,8 @@ static HRESULT WINAPI IDirectDrawSurface3_UpdateOverlay(
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_UpdateOverlayDisplay
(
LPDIRECTDRAWSURFACE
3
this
,
static
HRESULT
WINAPI
IDirectDrawSurface
4
_UpdateOverlayDisplay
(
LPDIRECTDRAWSURFACE
4
this
,
DWORD
dwFlags
)
{
FIXME
(
ddraw
,
"(%p)->(0x%08lx),stub!
\n
"
,
this
,
dwFlags
);
...
...
@@ -1382,18 +1384,18 @@ static HRESULT WINAPI IDirectDrawSurface3_UpdateOverlayDisplay(
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_UpdateOverlayZOrder
(
LPDIRECTDRAWSURFACE
3
this
,
static
HRESULT
WINAPI
IDirectDrawSurface
4
_UpdateOverlayZOrder
(
LPDIRECTDRAWSURFACE
4
this
,
DWORD
dwFlags
,
LPDIRECTDRAWSURFACE
3
lpDDSReference
)
LPDIRECTDRAWSURFACE
4
lpDDSReference
)
{
FIXME
(
ddraw
,
"(%p)->(0x%08lx,%p),stub!
\n
"
,
this
,
dwFlags
,
lpDDSReference
);
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_GetDDInterface
(
LPDIRECTDRAWSURFACE
3
this
,
static
HRESULT
WINAPI
IDirectDrawSurface
4
_GetDDInterface
(
LPDIRECTDRAWSURFACE
4
this
,
LPVOID
*
lplpDD
)
{
FIXME
(
ddraw
,
"(%p)->(%p),stub!
\n
"
,
this
,
lplpDD
);
...
...
@@ -1404,8 +1406,8 @@ static HRESULT WINAPI IDirectDrawSurface3_GetDDInterface(
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_PageLock
(
LPDIRECTDRAWSURFACE
3
this
,
static
HRESULT
WINAPI
IDirectDrawSurface
4
_PageLock
(
LPDIRECTDRAWSURFACE
4
this
,
DWORD
dwFlags
)
{
FIXME
(
ddraw
,
"(%p)->(0x%08lx),stub!
\n
"
,
this
,
dwFlags
);
...
...
@@ -1413,8 +1415,8 @@ static HRESULT WINAPI IDirectDrawSurface3_PageLock(
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_PageUnlock
(
LPDIRECTDRAWSURFACE
3
this
,
static
HRESULT
WINAPI
IDirectDrawSurface
4
_PageUnlock
(
LPDIRECTDRAWSURFACE
4
this
,
DWORD
dwFlags
)
{
FIXME
(
ddraw
,
"(%p)->(0x%08lx),stub!
\n
"
,
this
,
dwFlags
);
...
...
@@ -1422,8 +1424,8 @@ static HRESULT WINAPI IDirectDrawSurface3_PageUnlock(
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface
3
_SetSurfaceDesc
(
LPDIRECTDRAWSURFACE
3
this
,
static
HRESULT
WINAPI
IDirectDrawSurface
4
_SetSurfaceDesc
(
LPDIRECTDRAWSURFACE
4
this
,
LPDDSURFACEDESC
lpDDSD
,
DWORD
dwFlags
)
{
...
...
@@ -1432,90 +1434,139 @@ static HRESULT WINAPI IDirectDrawSurface3_SetSurfaceDesc(
return
DD_OK
;
}
static
struct
IDirectDrawSurface3_VTable
dga_dds3vt
=
{
IDirectDrawSurface3_QueryInterface
,
IDirectDrawSurface3_AddRef
,
DGA_IDirectDrawSurface3_Release
,
IDirectDrawSurface3_AddAttachedSurface
,
IDirectDrawSurface3_AddOverlayDirtyRect
,
IDirectDrawSurface3_Blt
,
IDirectDrawSurface3_BltBatch
,
IDirectDrawSurface3_BltFast
,
IDirectDrawSurface3_DeleteAttachedSurface
,
IDirectDrawSurface3_EnumAttachedSurfaces
,
IDirectDrawSurface3_EnumOverlayZOrders
,
DGA_IDirectDrawSurface3_Flip
,
IDirectDrawSurface3_GetAttachedSurface
,
IDirectDrawSurface3_GetBltStatus
,
IDirectDrawSurface3_GetCaps
,
IDirectDrawSurface3_GetClipper
,
IDirectDrawSurface3_GetColorKey
,
IDirectDrawSurface3_GetDC
,
IDirectDrawSurface3_GetFlipStatus
,
IDirectDrawSurface3_GetOverlayPosition
,
IDirectDrawSurface3_GetPalette
,
IDirectDrawSurface3_GetPixelFormat
,
IDirectDrawSurface3_GetSurfaceDesc
,
IDirectDrawSurface3_Initialize
,
IDirectDrawSurface3_IsLost
,
IDirectDrawSurface3_Lock
,
IDirectDrawSurface3_ReleaseDC
,
IDirectDrawSurface3_Restore
,
IDirectDrawSurface3_SetClipper
,
IDirectDrawSurface3_SetColorKey
,
IDirectDrawSurface3_SetOverlayPosition
,
DGA_IDirectDrawSurface3_SetPalette
,
DGA_IDirectDrawSurface3_Unlock
,
IDirectDrawSurface3_UpdateOverlay
,
IDirectDrawSurface3_UpdateOverlayDisplay
,
IDirectDrawSurface3_UpdateOverlayZOrder
,
IDirectDrawSurface3_GetDDInterface
,
IDirectDrawSurface3_PageLock
,
IDirectDrawSurface3_PageUnlock
,
IDirectDrawSurface3_SetSurfaceDesc
,
static
HRESULT
WINAPI
IDirectDrawSurface4_SetPrivateData
(
LPDIRECTDRAWSURFACE4
this
,
REFGUID
guidTag
,
LPVOID
lpData
,
DWORD
cbSize
,
DWORD
dwFlags
)
{
FIXME
(
ddraw
,
"(%p)->(%p,%p,%ld,%08lx
\n
"
,
this
,
guidTag
,
lpData
,
cbSize
,
dwFlags
);
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface4_GetPrivateData
(
LPDIRECTDRAWSURFACE4
this
,
REFGUID
guidTag
,
LPVOID
lpBuffer
,
LPDWORD
lpcbBufferSize
)
{
FIXME
(
ddraw
,
"(%p)->(%p,%p,%p)
\n
"
,
this
,
guidTag
,
lpBuffer
,
lpcbBufferSize
);
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface4_FreePrivateData
(
LPDIRECTDRAWSURFACE4
this
,
REFGUID
guidTag
)
{
FIXME
(
ddraw
,
"(%p)->(%p)
\n
"
,
this
,
guidTag
);
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface4_GetUniquenessValue
(
LPDIRECTDRAWSURFACE4
this
,
LPDWORD
lpValue
)
{
FIXME
(
ddraw
,
"(%p)->(%p)
\n
"
,
this
,
lpValue
);
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDrawSurface4_ChangeUniquenessValue
(
LPDIRECTDRAWSURFACE4
this
)
{
FIXME
(
ddraw
,
"(%p)
\n
"
,
this
);
return
DD_OK
;
}
static
struct
IDirectDrawSurface4_VTable
dga_dds4vt
=
{
IDirectDrawSurface4_QueryInterface
,
IDirectDrawSurface4_AddRef
,
DGA_IDirectDrawSurface4_Release
,
IDirectDrawSurface4_AddAttachedSurface
,
IDirectDrawSurface4_AddOverlayDirtyRect
,
IDirectDrawSurface4_Blt
,
IDirectDrawSurface4_BltBatch
,
IDirectDrawSurface4_BltFast
,
IDirectDrawSurface4_DeleteAttachedSurface
,
IDirectDrawSurface4_EnumAttachedSurfaces
,
IDirectDrawSurface4_EnumOverlayZOrders
,
DGA_IDirectDrawSurface4_Flip
,
IDirectDrawSurface4_GetAttachedSurface
,
IDirectDrawSurface4_GetBltStatus
,
IDirectDrawSurface4_GetCaps
,
IDirectDrawSurface4_GetClipper
,
IDirectDrawSurface4_GetColorKey
,
IDirectDrawSurface4_GetDC
,
IDirectDrawSurface4_GetFlipStatus
,
IDirectDrawSurface4_GetOverlayPosition
,
IDirectDrawSurface4_GetPalette
,
IDirectDrawSurface4_GetPixelFormat
,
IDirectDrawSurface4_GetSurfaceDesc
,
IDirectDrawSurface4_Initialize
,
IDirectDrawSurface4_IsLost
,
IDirectDrawSurface4_Lock
,
IDirectDrawSurface4_ReleaseDC
,
IDirectDrawSurface4_Restore
,
IDirectDrawSurface4_SetClipper
,
IDirectDrawSurface4_SetColorKey
,
IDirectDrawSurface4_SetOverlayPosition
,
DGA_IDirectDrawSurface4_SetPalette
,
DGA_IDirectDrawSurface4_Unlock
,
IDirectDrawSurface4_UpdateOverlay
,
IDirectDrawSurface4_UpdateOverlayDisplay
,
IDirectDrawSurface4_UpdateOverlayZOrder
,
IDirectDrawSurface4_GetDDInterface
,
IDirectDrawSurface4_PageLock
,
IDirectDrawSurface4_PageUnlock
,
IDirectDrawSurface4_SetSurfaceDesc
,
IDirectDrawSurface4_SetPrivateData
,
IDirectDrawSurface4_GetPrivateData
,
IDirectDrawSurface4_FreePrivateData
,
IDirectDrawSurface4_GetUniquenessValue
,
IDirectDrawSurface4_ChangeUniquenessValue
};
static
struct
IDirectDrawSurface3_VTable
xlib_dds3vt
=
{
IDirectDrawSurface3_QueryInterface
,
IDirectDrawSurface3_AddRef
,
Xlib_IDirectDrawSurface3_Release
,
IDirectDrawSurface3_AddAttachedSurface
,
IDirectDrawSurface3_AddOverlayDirtyRect
,
IDirectDrawSurface3_Blt
,
IDirectDrawSurface3_BltBatch
,
IDirectDrawSurface3_BltFast
,
IDirectDrawSurface3_DeleteAttachedSurface
,
IDirectDrawSurface3_EnumAttachedSurfaces
,
IDirectDrawSurface3_EnumOverlayZOrders
,
Xlib_IDirectDrawSurface3_Flip
,
IDirectDrawSurface3_GetAttachedSurface
,
IDirectDrawSurface3_GetBltStatus
,
IDirectDrawSurface3_GetCaps
,
IDirectDrawSurface3_GetClipper
,
IDirectDrawSurface3_GetColorKey
,
IDirectDrawSurface3_GetDC
,
IDirectDrawSurface3_GetFlipStatus
,
IDirectDrawSurface3_GetOverlayPosition
,
IDirectDrawSurface3_GetPalette
,
IDirectDrawSurface3_GetPixelFormat
,
IDirectDrawSurface3_GetSurfaceDesc
,
IDirectDrawSurface3_Initialize
,
IDirectDrawSurface3_IsLost
,
IDirectDrawSurface3_Lock
,
IDirectDrawSurface3_ReleaseDC
,
IDirectDrawSurface3_Restore
,
IDirectDrawSurface3_SetClipper
,
IDirectDrawSurface3_SetColorKey
,
IDirectDrawSurface3_SetOverlayPosition
,
Xlib_IDirectDrawSurface3_SetPalette
,
Xlib_IDirectDrawSurface3_Unlock
,
IDirectDrawSurface3_UpdateOverlay
,
IDirectDrawSurface3_UpdateOverlayDisplay
,
IDirectDrawSurface3_UpdateOverlayZOrder
,
IDirectDrawSurface3_GetDDInterface
,
IDirectDrawSurface3_PageLock
,
IDirectDrawSurface3_PageUnlock
,
IDirectDrawSurface3_SetSurfaceDesc
,
static
struct
IDirectDrawSurface4_VTable
xlib_dds4vt
=
{
IDirectDrawSurface4_QueryInterface
,
IDirectDrawSurface4_AddRef
,
Xlib_IDirectDrawSurface4_Release
,
IDirectDrawSurface4_AddAttachedSurface
,
IDirectDrawSurface4_AddOverlayDirtyRect
,
IDirectDrawSurface4_Blt
,
IDirectDrawSurface4_BltBatch
,
IDirectDrawSurface4_BltFast
,
IDirectDrawSurface4_DeleteAttachedSurface
,
IDirectDrawSurface4_EnumAttachedSurfaces
,
IDirectDrawSurface4_EnumOverlayZOrders
,
Xlib_IDirectDrawSurface4_Flip
,
IDirectDrawSurface4_GetAttachedSurface
,
IDirectDrawSurface4_GetBltStatus
,
IDirectDrawSurface4_GetCaps
,
IDirectDrawSurface4_GetClipper
,
IDirectDrawSurface4_GetColorKey
,
IDirectDrawSurface4_GetDC
,
IDirectDrawSurface4_GetFlipStatus
,
IDirectDrawSurface4_GetOverlayPosition
,
IDirectDrawSurface4_GetPalette
,
IDirectDrawSurface4_GetPixelFormat
,
IDirectDrawSurface4_GetSurfaceDesc
,
IDirectDrawSurface4_Initialize
,
IDirectDrawSurface4_IsLost
,
IDirectDrawSurface4_Lock
,
IDirectDrawSurface4_ReleaseDC
,
IDirectDrawSurface4_Restore
,
IDirectDrawSurface4_SetClipper
,
IDirectDrawSurface4_SetColorKey
,
IDirectDrawSurface4_SetOverlayPosition
,
Xlib_IDirectDrawSurface4_SetPalette
,
Xlib_IDirectDrawSurface4_Unlock
,
IDirectDrawSurface4_UpdateOverlay
,
IDirectDrawSurface4_UpdateOverlayDisplay
,
IDirectDrawSurface4_UpdateOverlayZOrder
,
IDirectDrawSurface4_GetDDInterface
,
IDirectDrawSurface4_PageLock
,
IDirectDrawSurface4_PageUnlock
,
IDirectDrawSurface4_SetSurfaceDesc
,
IDirectDrawSurface4_SetPrivateData
,
IDirectDrawSurface4_GetPrivateData
,
IDirectDrawSurface4_FreePrivateData
,
IDirectDrawSurface4_GetUniquenessValue
,
IDirectDrawSurface4_ChangeUniquenessValue
};
/******************************************************************************
...
...
@@ -2140,7 +2191,7 @@ static HRESULT WINAPI DGA_IDirectDraw2_CreateSurface(
this
->
lpvtbl
->
fnAddRef
(
this
);
(
*
lpdsf
)
->
ref
=
1
;
(
*
lpdsf
)
->
lpvtbl
=
(
LPDIRECTDRAWSURFACE_VTABLE
)
&
dga_dds
3
vt
;
(
*
lpdsf
)
->
lpvtbl
=
(
LPDIRECTDRAWSURFACE_VTABLE
)
&
dga_dds
4
vt
;
(
*
lpdsf
)
->
s
.
ddraw
=
this
;
(
*
lpdsf
)
->
s
.
palette
=
NULL
;
(
*
lpdsf
)
->
t
.
dga
.
fb_height
=
-
1
;
/* This is to have non-on screen surfaces freed */
...
...
@@ -2182,16 +2233,16 @@ static HRESULT WINAPI DGA_IDirectDraw2_CreateSurface(
(
*
lpdsf
)
->
s
.
backbuffer
=
NULL
;
if
(
lpddsd
->
dwFlags
&
DDSD_BACKBUFFERCOUNT
)
{
LPDIRECTDRAWSURFACE
3
back
;
LPDIRECTDRAWSURFACE
4
back
;
if
(
lpddsd
->
dwBackBufferCount
>
1
)
FIXME
(
ddraw
,
"urks, wants to have more than one backbuffer (%ld)!
\n
"
,
lpddsd
->
dwBackBufferCount
);
(
*
lpdsf
)
->
s
.
backbuffer
=
back
=
(
LPDIRECTDRAWSURFACE
3
)
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
IDirectDrawSurface3
));
(
LPDIRECTDRAWSURFACE
4
)
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
IDirectDrawSurface4
));
this
->
lpvtbl
->
fnAddRef
(
this
);
back
->
ref
=
1
;
back
->
lpvtbl
=
(
LPDIRECTDRAWSURFACE
3_VTABLE
)
&
dga_dds3
vt
;
back
->
lpvtbl
=
(
LPDIRECTDRAWSURFACE
4_VTABLE
)
&
dga_dds4
vt
;
for
(
i
=
0
;
i
<
32
;
i
++
)
if
(
!
(
this
->
e
.
dga
.
vpmask
&
(
1
<<
i
)))
break
;
...
...
@@ -2228,7 +2279,7 @@ static HRESULT WINAPI DGA_IDirectDraw2_CreateSurface(
#endif
/* defined(HAVE_LIBXXF86DGA) */
}
static
XImage
*
create_ximage
(
LPDIRECTDRAW2
this
,
LPDIRECTDRAWSURFACE
3
lpdsf
)
{
static
XImage
*
create_ximage
(
LPDIRECTDRAW2
this
,
LPDIRECTDRAWSURFACE
4
lpdsf
)
{
XImage
*
img
;
void
*
img_data
;
...
...
@@ -2336,7 +2387,7 @@ static HRESULT WINAPI Xlib_IDirectDraw2_CreateSurface(
this
->
lpvtbl
->
fnAddRef
(
this
);
(
*
lpdsf
)
->
s
.
ddraw
=
this
;
(
*
lpdsf
)
->
ref
=
1
;
(
*
lpdsf
)
->
lpvtbl
=
(
LPDIRECTDRAWSURFACE_VTABLE
)
&
xlib_dds
3
vt
;
(
*
lpdsf
)
->
lpvtbl
=
(
LPDIRECTDRAWSURFACE_VTABLE
)
&
xlib_dds
4
vt
;
(
*
lpdsf
)
->
s
.
palette
=
NULL
;
(
*
lpdsf
)
->
t
.
xlib
.
image
=
NULL
;
/* This is for off-screen buffers */
...
...
@@ -2356,7 +2407,7 @@ static HRESULT WINAPI Xlib_IDirectDraw2_CreateSurface(
(
*
lpdsf
)
->
s
.
surface_desc
=
*
lpddsd
;
/* Create the XImage */
img
=
create_ximage
(
this
,
(
LPDIRECTDRAWSURFACE
3
)
*
lpdsf
);
img
=
create_ximage
(
this
,
(
LPDIRECTDRAWSURFACE
4
)
*
lpdsf
);
if
(
img
==
NULL
)
return
DDERR_OUTOFMEMORY
;
(
*
lpdsf
)
->
t
.
xlib
.
image
=
img
;
...
...
@@ -2371,14 +2422,14 @@ static HRESULT WINAPI Xlib_IDirectDraw2_CreateSurface(
/* Check for backbuffers */
if
(
lpddsd
->
dwFlags
&
DDSD_BACKBUFFERCOUNT
)
{
LPDIRECTDRAWSURFACE
3
back
;
LPDIRECTDRAWSURFACE
4
back
;
XImage
*
img
;
if
(
lpddsd
->
dwBackBufferCount
>
1
)
FIXME
(
ddraw
,
"urks, wants to have more than one backbuffer (%ld)!
\n
"
,
lpddsd
->
dwBackBufferCount
);
(
*
lpdsf
)
->
s
.
backbuffer
=
back
=
(
LPDIRECTDRAWSURFACE
3
)
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
IDirectDrawSurface3
));
(
LPDIRECTDRAWSURFACE
4
)
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
IDirectDrawSurface4
));
TRACE
(
ddraw
,
"allocated back-buffer (%p)
\n
"
,
back
);
...
...
@@ -2386,7 +2437,7 @@ static HRESULT WINAPI Xlib_IDirectDraw2_CreateSurface(
back
->
s
.
ddraw
=
this
;
back
->
ref
=
1
;
back
->
lpvtbl
=
(
LPDIRECTDRAWSURFACE
3_VTABLE
)
&
xlib_dds3
vt
;
back
->
lpvtbl
=
(
LPDIRECTDRAWSURFACE
4_VTABLE
)
&
xlib_dds4
vt
;
/* Copy the surface description from the front buffer */
back
->
s
.
surface_desc
=
(
*
lpdsf
)
->
s
.
surface_desc
;
...
...
@@ -2948,6 +2999,15 @@ static HRESULT WINAPI DGA_IDirectDraw2_QueryInterface(
return
S_OK
;
}
if
(
!
memcmp
(
&
IID_IDirectDraw4
,
refiid
,
sizeof
(
IID_IDirectDraw4
)))
{
this
->
lpvtbl
=
(
LPDIRECTDRAW2_VTABLE
)
&
dga_dd4vt
;
this
->
lpvtbl
->
fnAddRef
(
this
);
*
obj
=
this
;
TRACE
(
ddraw
,
" Creating IDirectDraw4 interface (%p)
\n
"
,
*
obj
);
return
S_OK
;
}
if
(
!
memcmp
(
&
IID_IDirect3D
,
refiid
,
sizeof
(
IID_IDirect3D
)))
{
LPDIRECT3D
d3d
;
...
...
@@ -3013,6 +3073,15 @@ static HRESULT WINAPI Xlib_IDirectDraw2_QueryInterface(
return
S_OK
;
}
if
(
!
memcmp
(
&
IID_IDirectDraw4
,
refiid
,
sizeof
(
IID_IDirectDraw4
)))
{
this
->
lpvtbl
=
(
LPDIRECTDRAW2_VTABLE
)
&
xlib_dd4vt
;
this
->
lpvtbl
->
fnAddRef
(
this
);
*
obj
=
this
;
TRACE
(
ddraw
,
" Creating IDirectDraw4 interface (%p)
\n
"
,
*
obj
);
return
S_OK
;
}
if
(
!
memcmp
(
&
IID_IDirect3D
,
refiid
,
sizeof
(
IID_IDirect3D
)))
{
LPDIRECT3D
d3d
;
...
...
@@ -3209,6 +3278,26 @@ static HRESULT WINAPI IDirectDraw2_Compact(
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDraw2_GetGDISurface
(
LPDIRECTDRAW2
this
,
LPDIRECTDRAWSURFACE
*
lplpGDIDDSSurface
)
{
FIXME
(
ddraw
,
"(%p)->(%p)
\n
"
,
this
,
lplpGDIDDSSurface
);
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDraw2_GetScanLine
(
LPDIRECTDRAW2
this
,
LPDWORD
lpdwScanLine
)
{
FIXME
(
ddraw
,
"(%p)->(%p)
\n
"
,
this
,
lpdwScanLine
);
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDraw2_Initialize
(
LPDIRECTDRAW2
this
,
GUID
*
lpGUID
)
{
FIXME
(
ddraw
,
"(%p)->(%p)
\n
"
,
this
,
lpGUID
);
return
DD_OK
;
}
/* Note: Hack so we can reuse the old functions without compiler warnings */
#ifdef __GNUC__
...
...
@@ -3232,11 +3321,11 @@ static struct IDirectDraw_VTable dga_ddvt = {
XCAST
(
GetCaps
)
DGA_IDirectDraw2_GetCaps
,
XCAST
(
GetDisplayMode
)
DGA_IDirectDraw2_GetDisplayMode
,
XCAST
(
GetFourCCCodes
)
IDirectDraw2_GetFourCCCodes
,
XCAST
(
GetGDISurface
)
15
,
XCAST
(
GetGDISurface
)
IDirectDraw2_GetGDISurface
,
XCAST
(
GetMonitorFrequency
)
IDirectDraw2_GetMonitorFrequency
,
XCAST
(
GetScanLine
)
17
,
XCAST
(
GetScanLine
)
IDirectDraw2_GetScanLine
,
XCAST
(
GetVerticalBlankStatus
)
IDirectDraw2_GetVerticalBlankStatus
,
XCAST
(
Initialize
)
19
,
XCAST
(
Initialize
)
IDirectDraw2_Initialize
,
XCAST
(
RestoreDisplayMode
)
DGA_IDirectDraw2_RestoreDisplayMode
,
XCAST
(
SetCooperativeLevel
)
IDirectDraw2_SetCooperativeLevel
,
DGA_IDirectDraw_SetDisplayMode
,
...
...
@@ -3258,17 +3347,19 @@ static struct IDirectDraw_VTable xlib_ddvt = {
XCAST
(
GetCaps
)
Xlib_IDirectDraw2_GetCaps
,
XCAST
(
GetDisplayMode
)
Xlib_IDirectDraw2_GetDisplayMode
,
XCAST
(
GetFourCCCodes
)
IDirectDraw2_GetFourCCCodes
,
XCAST
(
GetGDISurface
)
15
,
XCAST
(
GetGDISurface
)
IDirectDraw2_GetGDISurface
,
XCAST
(
GetMonitorFrequency
)
IDirectDraw2_GetMonitorFrequency
,
XCAST
(
GetScanLine
)
17
,
XCAST
(
GetScanLine
)
IDirectDraw2_GetScanLine
,
XCAST
(
GetVerticalBlankStatus
)
IDirectDraw2_GetVerticalBlankStatus
,
XCAST
(
Initialize
)
19
,
XCAST
(
Initialize
)
IDirectDraw2_Initialize
,
XCAST
(
RestoreDisplayMode
)
Xlib_IDirectDraw2_RestoreDisplayMode
,
XCAST
(
SetCooperativeLevel
)
IDirectDraw2_SetCooperativeLevel
,
Xlib_IDirectDraw_SetDisplayMode
,
XCAST
(
WaitForVerticalBlank
)
IDirectDraw2_WaitForVerticalBlank
,
};
#undef XCAST
/*****************************************************************************
* IDirectDraw2
*
...
...
@@ -3317,18 +3408,18 @@ static IDirectDraw2_VTable dga_dd2vt = {
IDirectDraw2_CreateClipper
,
DGA_IDirectDraw2_CreatePalette
,
DGA_IDirectDraw2_CreateSurface
,
(
void
*
)
8
,
IDirectDraw2_DuplicateSurface
,
IDirectDraw2_EnumDisplayModes
,
IDirectDraw2_EnumSurfaces
,
IDirectDraw2_FlipToGDISurface
,
DGA_IDirectDraw2_GetCaps
,
DGA_IDirectDraw2_GetDisplayMode
,
IDirectDraw2_GetFourCCCodes
,
(
void
*
)
15
,
IDirectDraw2_GetGDISurface
,
IDirectDraw2_GetMonitorFrequency
,
(
void
*
)
17
,
IDirectDraw2_GetScanLine
,
IDirectDraw2_GetVerticalBlankStatus
,
(
void
*
)
19
,
IDirectDraw2_Initialize
,
DGA_IDirectDraw2_RestoreDisplayMode
,
IDirectDraw2_SetCooperativeLevel
,
DGA_IDirectDraw2_SetDisplayMode
,
...
...
@@ -3344,18 +3435,18 @@ static struct IDirectDraw2_VTable xlib_dd2vt = {
IDirectDraw2_CreateClipper
,
Xlib_IDirectDraw2_CreatePalette
,
Xlib_IDirectDraw2_CreateSurface
,
(
void
*
)
8
,
IDirectDraw2_DuplicateSurface
,
IDirectDraw2_EnumDisplayModes
,
IDirectDraw2_EnumSurfaces
,
IDirectDraw2_FlipToGDISurface
,
Xlib_IDirectDraw2_GetCaps
,
Xlib_IDirectDraw2_GetDisplayMode
,
IDirectDraw2_GetFourCCCodes
,
(
void
*
)
15
,
IDirectDraw2_GetGDISurface
,
IDirectDraw2_GetMonitorFrequency
,
(
void
*
)
17
,
IDirectDraw2_GetScanLine
,
IDirectDraw2_GetVerticalBlankStatus
,
(
void
*
)
19
,
IDirectDraw2_Initialize
,
Xlib_IDirectDraw2_RestoreDisplayMode
,
IDirectDraw2_SetCooperativeLevel
,
Xlib_IDirectDraw2_SetDisplayMode
,
...
...
@@ -3363,6 +3454,110 @@ static struct IDirectDraw2_VTable xlib_dd2vt = {
Xlib_IDirectDraw2_GetAvailableVidMem
};
/*****************************************************************************
* IDirectDraw4
*
*/
static
HRESULT
WINAPI
IDirectDraw4_GetSurfaceFromDC
(
LPDIRECTDRAW4
this
,
HDC32
hdc
,
LPDIRECTDRAWSURFACE
*
lpDDS
)
{
FIXME
(
ddraw
,
"(%p)->(%08ld,%p)
\n
"
,
this
,
(
DWORD
)
hdc
,
lpDDS
);
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDraw4_RestoreAllSurfaces
(
LPDIRECTDRAW4
this
)
{
FIXME
(
ddraw
,
"(%p)->()
\n
"
,
this
);
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDraw4_TestCooperativeLevel
(
LPDIRECTDRAW4
this
)
{
FIXME
(
ddraw
,
"(%p)->()
\n
"
,
this
);
return
DD_OK
;
}
static
HRESULT
WINAPI
IDirectDraw4_GetDeviceIdentifier
(
LPDIRECTDRAW4
this
,
LPDDDEVICEIDENTIFIER
lpdddi
,
DWORD
dwFlags
)
{
FIXME
(
ddraw
,
"(%p)->(%p,%08lx)
\n
"
,
this
,
lpdddi
,
dwFlags
);
return
DD_OK
;
}
#ifdef __GNUC__
# define XCAST(fun) (typeof(dga_dd4vt.fn##fun))
#else
# define XCAST(fun) (void*)
#endif
static
struct
IDirectDraw4_VTable
dga_dd4vt
=
{
XCAST
(
QueryInterface
)
DGA_IDirectDraw2_QueryInterface
,
XCAST
(
AddRef
)
IDirectDraw2_AddRef
,
XCAST
(
Release
)
DGA_IDirectDraw2_Release
,
XCAST
(
Compact
)
IDirectDraw2_Compact
,
XCAST
(
CreateClipper
)
IDirectDraw2_CreateClipper
,
XCAST
(
CreatePalette
)
DGA_IDirectDraw2_CreatePalette
,
XCAST
(
CreateSurface
)
DGA_IDirectDraw2_CreateSurface
,
XCAST
(
DuplicateSurface
)
IDirectDraw2_DuplicateSurface
,
XCAST
(
EnumDisplayModes
)
IDirectDraw2_EnumDisplayModes
,
XCAST
(
EnumSurfaces
)
IDirectDraw2_EnumSurfaces
,
XCAST
(
FlipToGDISurface
)
IDirectDraw2_FlipToGDISurface
,
XCAST
(
GetCaps
)
DGA_IDirectDraw2_GetCaps
,
XCAST
(
GetDisplayMode
)
DGA_IDirectDraw2_GetDisplayMode
,
XCAST
(
GetFourCCCodes
)
IDirectDraw2_GetFourCCCodes
,
XCAST
(
GetGDISurface
)
IDirectDraw2_GetGDISurface
,
XCAST
(
GetMonitorFrequency
)
IDirectDraw2_GetMonitorFrequency
,
XCAST
(
GetScanLine
)
IDirectDraw2_GetScanLine
,
XCAST
(
GetVerticalBlankStatus
)
IDirectDraw2_GetVerticalBlankStatus
,
XCAST
(
Initialize
)
IDirectDraw2_Initialize
,
XCAST
(
RestoreDisplayMode
)
DGA_IDirectDraw2_RestoreDisplayMode
,
XCAST
(
SetCooperativeLevel
)
IDirectDraw2_SetCooperativeLevel
,
XCAST
(
SetDisplayMode
)
DGA_IDirectDraw_SetDisplayMode
,
XCAST
(
WaitForVerticalBlank
)
IDirectDraw2_WaitForVerticalBlank
,
XCAST
(
GetAvailableVidMem
)
DGA_IDirectDraw2_GetAvailableVidMem
,
IDirectDraw4_GetSurfaceFromDC
,
IDirectDraw4_RestoreAllSurfaces
,
IDirectDraw4_TestCooperativeLevel
,
IDirectDraw4_GetDeviceIdentifier
};
static
struct
IDirectDraw4_VTable
xlib_dd4vt
=
{
XCAST
(
QueryInterface
)
Xlib_IDirectDraw2_QueryInterface
,
XCAST
(
AddRef
)
IDirectDraw2_AddRef
,
XCAST
(
Release
)
Xlib_IDirectDraw2_Release
,
XCAST
(
Compact
)
IDirectDraw2_Compact
,
XCAST
(
CreateClipper
)
IDirectDraw2_CreateClipper
,
XCAST
(
CreatePalette
)
Xlib_IDirectDraw2_CreatePalette
,
XCAST
(
CreateSurface
)
Xlib_IDirectDraw2_CreateSurface
,
XCAST
(
DuplicateSurface
)
IDirectDraw2_DuplicateSurface
,
XCAST
(
EnumDisplayModes
)
IDirectDraw2_EnumDisplayModes
,
XCAST
(
EnumSurfaces
)
IDirectDraw2_EnumSurfaces
,
XCAST
(
FlipToGDISurface
)
IDirectDraw2_FlipToGDISurface
,
XCAST
(
GetCaps
)
Xlib_IDirectDraw2_GetCaps
,
XCAST
(
GetDisplayMode
)
Xlib_IDirectDraw2_GetDisplayMode
,
XCAST
(
GetFourCCCodes
)
IDirectDraw2_GetFourCCCodes
,
XCAST
(
GetGDISurface
)
IDirectDraw2_GetGDISurface
,
XCAST
(
GetMonitorFrequency
)
IDirectDraw2_GetMonitorFrequency
,
XCAST
(
GetScanLine
)
IDirectDraw2_GetScanLine
,
XCAST
(
GetVerticalBlankStatus
)
IDirectDraw2_GetVerticalBlankStatus
,
XCAST
(
Initialize
)
IDirectDraw2_Initialize
,
XCAST
(
RestoreDisplayMode
)
Xlib_IDirectDraw2_RestoreDisplayMode
,
XCAST
(
SetCooperativeLevel
)
IDirectDraw2_SetCooperativeLevel
,
XCAST
(
SetDisplayMode
)
Xlib_IDirectDraw_SetDisplayMode
,
XCAST
(
WaitForVerticalBlank
)
IDirectDraw2_WaitForVerticalBlank
,
XCAST
(
GetAvailableVidMem
)
Xlib_IDirectDraw2_GetAvailableVidMem
,
IDirectDraw4_GetSurfaceFromDC
,
IDirectDraw4_RestoreAllSurfaces
,
IDirectDraw4_TestCooperativeLevel
,
IDirectDraw4_GetDeviceIdentifier
};
#undef XCAST
/******************************************************************************
* DirectDrawCreate
*/
...
...
@@ -3519,10 +3714,9 @@ HRESULT WINAPI Xlib_DirectDrawCreate( LPDIRECTDRAW *lplpDD, LPUNKNOWN pUnkOuter)
(
*
lplpDD
)
->
d
.
width
=
screenWidth
;
#ifdef HAVE_LIBXXSHM
/* Test if XShm is available.
As XShm is not ready yet for 'prime-time', it is disabled for now */
/* Test if XShm is available. */
if
(((
*
lplpDD
)
->
e
.
xlib
.
xshm_active
=
DDRAW_XSHM_Available
()))
TRACE
(
ddraw
,
"Using XShm extesion.
\n
"
);
TRACE
(
ddraw
,
"Using XShm exte
n
sion.
\n
"
);
#endif
return
DD_OK
;
...
...
include/d3d.h
View file @
1b95d736
...
...
@@ -1325,7 +1325,7 @@ struct IDirect3DTexture2 {
#ifdef HAVE_MESAGL
GLuint
tex_name
;
#endif
LPDIRECTDRAWSURFACE
3
surface
;
LPDIRECTDRAWSURFACE
4
surface
;
};
#undef THIS
...
...
include/ddraw.h
View file @
1b95d736
...
...
@@ -20,20 +20,24 @@ DEFINE_GUID( CLSID_DirectDraw, 0xD7B70EE0,0x4340,0x11CF,0xB0,0x63,0x00,0x20,0xA
DEFINE_GUID
(
CLSID_DirectDrawClipper
,
0x593817A0
,
0x7DB3
,
0x11CF
,
0xA2
,
0xDE
,
0x00
,
0xAA
,
0x00
,
0xb9
,
0x33
,
0x56
);
DEFINE_GUID
(
IID_IDirectDraw
,
0x6C14DB80
,
0xA733
,
0x11CE
,
0xA5
,
0x21
,
0x00
,
0x20
,
0xAF
,
0x0B
,
0xE5
,
0x60
);
DEFINE_GUID
(
IID_IDirectDraw2
,
0xB3A6F3E0
,
0x2B43
,
0x11CF
,
0xA2
,
0xDE
,
0x00
,
0xAA
,
0x00
,
0xB9
,
0x33
,
0x56
);
DEFINE_GUID
(
IID_IDirectDraw4
,
0x9c59509a
,
0x39bd
,
0x11d1
,
0x8c
,
0x4a
,
0x00
,
0xc0
,
0x4f
,
0xd9
,
0x30
,
0xc5
);
DEFINE_GUID
(
IID_IDirectDrawSurface
,
0x6C14DB81
,
0xA733
,
0x11CE
,
0xA5
,
0x21
,
0x00
,
0x20
,
0xAF
,
0x0B
,
0xE5
,
0x60
);
DEFINE_GUID
(
IID_IDirectDrawSurface2
,
0x57805885
,
0x6eec
,
0x11cf
,
0x94
,
0x41
,
0xa8
,
0x23
,
0x03
,
0xc1
,
0x0e
,
0x27
);
DEFINE_GUID
(
IID_IDirectDrawSurface3
,
0xDA044E00
,
0x69B2
,
0x11D0
,
0xA1
,
0xD5
,
0x00
,
0xAA
,
0x00
,
0xB8
,
0xDF
,
0xBB
);
DEFINE_GUID
(
IID_IDirectDrawSurface4
,
0x0B2B8630
,
0xAD35
,
0x11D0
,
0x8E
,
0xA6
,
0x00
,
0x60
,
0x97
,
0x97
,
0xEA
,
0x5B
);
DEFINE_GUID
(
IID_IDirectDrawPalette
,
0x6C14DB84
,
0xA733
,
0x11CE
,
0xA5
,
0x21
,
0x00
,
0x20
,
0xAF
,
0x0B
,
0xE5
,
0x60
);
DEFINE_GUID
(
IID_IDirectDrawClipper
,
0x6C14DB85
,
0xA733
,
0x11CE
,
0xA5
,
0x21
,
0x00
,
0x20
,
0xAF
,
0x0B
,
0xE5
,
0x60
);
DEFINE_GUID
(
IID_IDirectDrawColorControl
,
0x4B9F0EE0
,
0x0D7E
,
0x11D0
,
0x9B
,
0x06
,
0x00
,
0xA0
,
0xC9
,
0x03
,
0xA3
,
0xB8
);
typedef
struct
IDirectDraw
IDirectDraw
,
*
LPDIRECTDRAW
;
typedef
struct
IDirectDraw2
IDirectDraw2
,
*
LPDIRECTDRAW2
;
typedef
struct
IDirectDraw4
IDirectDraw4
,
*
LPDIRECTDRAW4
;
typedef
struct
IDirectDrawClipper
IDirectDrawClipper
,
*
LPDIRECTDRAWCLIPPER
;
typedef
struct
IDirectDrawPalette
IDirectDrawPalette
,
*
LPDIRECTDRAWPALETTE
;
typedef
struct
IDirectDrawSurface
IDirectDrawSurface
,
*
LPDIRECTDRAWSURFACE
;
typedef
struct
IDirectDrawSurface2
IDirectDrawSurface2
,
*
LPDIRECTDRAWSURFACE2
;
typedef
struct
IDirectDrawSurface3
IDirectDrawSurface3
,
*
LPDIRECTDRAWSURFACE3
;
typedef
struct
IDirectDrawSurface4
IDirectDrawSurface4
,
*
LPDIRECTDRAWSURFACE4
;
typedef
struct
IDirectDrawColorControl
IDirectDrawColorControl
,
*
LPDIRECTDRAWCOLORCONTROL
;
#define DDENUMRET_CANCEL 0
...
...
@@ -810,6 +814,19 @@ typedef struct _DDBLTBATCH
LPDDBLTFX
lpDDBltFx
;
}
DDBLTBATCH
,
*
LPDDBLTBATCH
;
#define MAX_DDDEVICEID_STRING 512
typedef
struct
tagDDDEVICEIDENTIFIER
{
char
szDriver
[
MAX_DDDEVICEID_STRING
];
char
szDescription
[
MAX_DDDEVICEID_STRING
];
LARGE_INTEGER
liDriverVersion
;
DWORD
dwVendorId
;
DWORD
dwDeviceId
;
DWORD
dwSubSysId
;
DWORD
dwRevision
;
GUID
guidDeviceIdentifier
;
}
DDDEVICEIDENTIFIER
,
*
LPDDDEVICEIDENTIFIER
;
#define STDMETHOD(xfn) HRESULT (CALLBACK *fn##xfn)
#define STDMETHOD_(ret,xfn) ret (CALLBACK *fn##xfn)
#define PURE
...
...
@@ -995,11 +1012,65 @@ struct IDirectDraw2 {
};
#undef THIS
#define THIS LPDIRECTDRAW4 this
typedef
struct
IDirectDraw4_VTable
{
/*** IUnknown methods ***/
/*00*/
STDMETHOD
(
QueryInterface
)
(
THIS_
REFIID
riid
,
LPVOID
FAR
*
ppvObj
)
PURE
;
/*04*/
STDMETHOD_
(
ULONG
,
AddRef
)
(
THIS
)
PURE
;
/*08*/
STDMETHOD_
(
ULONG
,
Release
)
(
THIS
)
PURE
;
/*** IDirectDraw methods ***/
/*0C*/
STDMETHOD
(
Compact
)(
THIS
)
PURE
;
/*10*/
STDMETHOD
(
CreateClipper
)(
THIS_
DWORD
,
LPDIRECTDRAWCLIPPER
FAR
*
,
IUnknown
FAR
*
)
PURE
;
/*14*/
STDMETHOD
(
CreatePalette
)(
THIS_
DWORD
,
LPPALETTEENTRY
,
LPDIRECTDRAWPALETTE
FAR
*
,
IUnknown
FAR
*
)
PURE
;
/*18*/
STDMETHOD
(
CreateSurface
)(
THIS_
LPDDSURFACEDESC
,
LPDIRECTDRAWSURFACE
FAR
*
,
IUnknown
FAR
*
)
PURE
;
/*1C*/
STDMETHOD
(
DuplicateSurface
)(
THIS_
LPDIRECTDRAWSURFACE
,
LPDIRECTDRAWSURFACE
FAR
*
)
PURE
;
/*20*/
STDMETHOD
(
EnumDisplayModes
)(
THIS_
DWORD
,
LPDDSURFACEDESC
,
LPVOID
,
LPDDENUMMODESCALLBACK
)
PURE
;
/*24*/
STDMETHOD
(
EnumSurfaces
)(
THIS_
DWORD
,
LPDDSURFACEDESC
,
LPVOID
,
LPDDENUMSURFACESCALLBACK
)
PURE
;
/*28*/
STDMETHOD
(
FlipToGDISurface
)(
THIS
)
PURE
;
/*2C*/
STDMETHOD
(
GetCaps
)(
THIS_
LPDDCAPS
,
LPDDCAPS
)
PURE
;
/*30*/
STDMETHOD
(
GetDisplayMode
)(
THIS_
LPDDSURFACEDESC
)
PURE
;
/*34*/
STDMETHOD
(
GetFourCCCodes
)(
THIS_
LPDWORD
,
LPDWORD
)
PURE
;
/*38*/
STDMETHOD
(
GetGDISurface
)(
THIS_
LPDIRECTDRAWSURFACE
FAR
*
)
PURE
;
/*3C*/
STDMETHOD
(
GetMonitorFrequency
)(
THIS_
LPDWORD
)
PURE
;
/*40*/
STDMETHOD
(
GetScanLine
)(
THIS_
LPDWORD
)
PURE
;
/*44*/
STDMETHOD
(
GetVerticalBlankStatus
)(
THIS_
BOOL32
*
)
PURE
;
/*48*/
STDMETHOD
(
Initialize
)(
THIS_
GUID
FAR
*
)
PURE
;
/*4C*/
STDMETHOD
(
RestoreDisplayMode
)(
THIS
)
PURE
;
/*50*/
STDMETHOD
(
SetCooperativeLevel
)(
THIS_
HWND32
,
DWORD
)
PURE
;
/*54*/
STDMETHOD
(
SetDisplayMode
)(
THIS_
DWORD
,
DWORD
,
DWORD
,
DWORD
,
DWORD
)
PURE
;
/*58*/
STDMETHOD
(
WaitForVerticalBlank
)(
THIS_
DWORD
,
HANDLE32
)
PURE
;
/*** Added in the v2 interface ***/
/*5C*/
STDMETHOD
(
GetAvailableVidMem
)(
THIS_
LPDDSCAPS
,
LPDWORD
,
LPDWORD
)
PURE
;
/*** Added in the V4 Interface ***/
/*60*/
STDMETHOD
(
GetSurfaceFromDC
)
(
THIS_
HDC32
,
LPDIRECTDRAWSURFACE
*
)
PURE
;
/*64*/
STDMETHOD
(
RestoreAllSurfaces
)(
THIS
)
PURE
;
/*68*/
STDMETHOD
(
TestCooperativeLevel
)(
THIS
)
PURE
;
/*6C*/
STDMETHOD
(
GetDeviceIdentifier
)(
THIS_
LPDDDEVICEIDENTIFIER
,
DWORD
)
PURE
;
}
IDirectDraw4_VTable
,
*
LPDIRECTDRAW4_VTABLE
;
/* MUST HAVE THE SAME LAYOUT AS struct IDirectDraw */
struct
IDirectDraw4
{
LPDIRECTDRAW4_VTABLE
lpvtbl
;
DWORD
ref
;
struct
_common_directdrawdata
d
;
union
{
struct
_xlib_directdrawdata
xlib
;
struct
_dga_directdrawdata
dga
;
}
e
;
};
#undef THIS
#define THIS LPDIRECTDRAWSURFACE this
struct
_common_directdrawsurface
{
LPDIRECTDRAWPALETTE
palette
;
LPDIRECTDRAW2
ddraw
;
LPDIRECTDRAWSURFACE
3
backbuffer
;
LPDIRECTDRAWSURFACE
4
backbuffer
;
DDSURFACEDESC
surface_desc
;
};
...
...
@@ -1119,7 +1190,6 @@ struct IDirectDrawSurface2 {
struct
_common_directdrawsurface
s
;
union
{
struct
_dga_directdrawsurface
dga
;
struct
_xlib_directdrawsurface
xshm
;
struct
_xlib_directdrawsurface
xlib
;
}
t
;
};
...
...
@@ -1179,12 +1249,78 @@ struct IDirectDrawSurface3 {
struct
_common_directdrawsurface
s
;
union
{
struct
_dga_directdrawsurface
dga
;
struct
_xlib_directdrawsurface
xshm
;
struct
_xlib_directdrawsurface
xlib
;
}
t
;
};
#undef THIS
#define THIS LPDIRECTDRAWSURFACE4 this
typedef
struct
IDirectDrawSurface4_VTable
{
/*** IUnknown methods ***/
/*00*/
STDMETHOD
(
QueryInterface
)
(
THIS_
REFIID
riid
,
LPVOID
FAR
*
ppvObj
)
PURE
;
/*04*/
STDMETHOD_
(
ULONG
,
AddRef
)
(
THIS
)
PURE
;
/*08*/
STDMETHOD_
(
ULONG
,
Release
)
(
THIS
)
PURE
;
/*** IDirectDrawSurface methods ***/
/*0c*/
STDMETHOD
(
AddAttachedSurface
)(
THIS_
LPDIRECTDRAWSURFACE4
)
PURE
;
/*10*/
STDMETHOD
(
AddOverlayDirtyRect
)(
THIS_
LPRECT32
)
PURE
;
/*14*/
STDMETHOD
(
Blt
)(
THIS_
LPRECT32
,
LPDIRECTDRAWSURFACE4
,
LPRECT32
,
DWORD
,
LPDDBLTFX
)
PURE
;
/*18*/
STDMETHOD
(
BltBatch
)(
THIS_
LPDDBLTBATCH
,
DWORD
,
DWORD
)
PURE
;
/*1c*/
STDMETHOD
(
BltFast
)(
THIS_
DWORD
,
DWORD
,
LPDIRECTDRAWSURFACE4
,
LPRECT32
,
DWORD
)
PURE
;
/*20*/
STDMETHOD
(
DeleteAttachedSurface
)(
THIS_
DWORD
,
LPDIRECTDRAWSURFACE4
)
PURE
;
/*24*/
STDMETHOD
(
EnumAttachedSurfaces
)(
THIS_
LPVOID
,
LPDDENUMSURFACESCALLBACK
)
PURE
;
/*28*/
STDMETHOD
(
EnumOverlayZOrders
)(
THIS_
DWORD
,
LPVOID
,
LPDDENUMSURFACESCALLBACK
)
PURE
;
/*2c*/
STDMETHOD
(
Flip
)(
THIS_
LPDIRECTDRAWSURFACE4
,
DWORD
)
PURE
;
/*30*/
STDMETHOD
(
GetAttachedSurface
)(
THIS_
LPDDSCAPS
,
LPDIRECTDRAWSURFACE4
FAR
*
)
PURE
;
/*34*/
STDMETHOD
(
GetBltStatus
)(
THIS_
DWORD
)
PURE
;
/*38*/
STDMETHOD
(
GetCaps
)(
THIS_
LPDDSCAPS
)
PURE
;
/*3c*/
STDMETHOD
(
GetClipper
)(
THIS_
LPDIRECTDRAWCLIPPER
FAR
*
)
PURE
;
/*40*/
STDMETHOD
(
GetColorKey
)(
THIS_
DWORD
,
LPDDCOLORKEY
)
PURE
;
/*44*/
STDMETHOD
(
GetDC
)(
THIS_
HDC32
FAR
*
)
PURE
;
/*48*/
STDMETHOD
(
GetFlipStatus
)(
THIS_
DWORD
)
PURE
;
/*4c*/
STDMETHOD
(
GetOverlayPosition
)(
THIS_
LPLONG
,
LPLONG
)
PURE
;
/*50*/
STDMETHOD
(
GetPalette
)(
THIS_
LPDIRECTDRAWPALETTE
FAR
*
)
PURE
;
/*54*/
STDMETHOD
(
GetPixelFormat
)(
THIS_
LPDDPIXELFORMAT
)
PURE
;
/*58*/
STDMETHOD
(
GetSurfaceDesc
)(
THIS_
LPDDSURFACEDESC
)
PURE
;
/*5c*/
STDMETHOD
(
Initialize
)(
THIS_
LPDIRECTDRAW
,
LPDDSURFACEDESC
)
PURE
;
/*60*/
STDMETHOD
(
IsLost
)(
THIS
)
PURE
;
/*64*/
STDMETHOD
(
Lock
)(
THIS_
LPRECT32
,
LPDDSURFACEDESC
,
DWORD
,
HANDLE32
)
PURE
;
/*68*/
STDMETHOD
(
ReleaseDC
)(
THIS_
HDC32
)
PURE
;
/*6c*/
STDMETHOD
(
Restore
)(
THIS
)
PURE
;
/*70*/
STDMETHOD
(
SetClipper
)(
THIS_
LPDIRECTDRAWCLIPPER
)
PURE
;
/*74*/
STDMETHOD
(
SetColorKey
)(
THIS_
DWORD
,
LPDDCOLORKEY
)
PURE
;
/*78*/
STDMETHOD
(
SetOverlayPosition
)(
THIS_
LONG
,
LONG
)
PURE
;
/*7c*/
STDMETHOD
(
SetPalette
)(
THIS_
LPDIRECTDRAWPALETTE
)
PURE
;
/*80*/
STDMETHOD
(
Unlock
)(
THIS_
LPVOID
)
PURE
;
/*84*/
STDMETHOD
(
UpdateOverlay
)(
THIS_
LPRECT32
,
LPDIRECTDRAWSURFACE4
,
LPRECT32
,
DWORD
,
LPDDOVERLAYFX
)
PURE
;
/*88*/
STDMETHOD
(
UpdateOverlayDisplay
)(
THIS_
DWORD
)
PURE
;
/*8c*/
STDMETHOD
(
UpdateOverlayZOrder
)(
THIS_
DWORD
,
LPDIRECTDRAWSURFACE4
)
PURE
;
/*** Added in the v2 interface ***/
/*90*/
STDMETHOD
(
GetDDInterface
)(
THIS_
LPVOID
FAR
*
)
PURE
;
/*94*/
STDMETHOD
(
PageLock
)(
THIS_
DWORD
)
PURE
;
/*98*/
STDMETHOD
(
PageUnlock
)(
THIS_
DWORD
)
PURE
;
/*** Added in the V3 interface ***/
/*9c*/
STDMETHOD
(
SetSurfaceDesc
)(
THIS_
LPDDSURFACEDESC
,
DWORD
)
PURE
;
/*** Added in the v4 interface ***/
/*a0*/
STDMETHOD
(
SetPrivateData
)(
THIS_
REFGUID
,
LPVOID
,
DWORD
,
DWORD
)
PURE
;
/*a4*/
STDMETHOD
(
GetPrivateData
)(
THIS_
REFGUID
,
LPVOID
,
LPDWORD
)
PURE
;
/*a8*/
STDMETHOD
(
FreePrivateData
)(
THIS_
REFGUID
)
PURE
;
/*ac*/
STDMETHOD
(
GetUniquenessValue
)(
THIS_
LPDWORD
)
PURE
;
/*b0*/
STDMETHOD
(
ChangeUniquenessValue
)(
THIS
)
PURE
;
}
*
LPDIRECTDRAWSURFACE4_VTABLE
,
IDirectDrawSurface4_VTable
;
struct
IDirectDrawSurface4
{
LPDIRECTDRAWSURFACE4_VTABLE
lpvtbl
;
DWORD
ref
;
struct
_common_directdrawsurface
s
;
union
{
struct
_dga_directdrawsurface
dga
;
struct
_xlib_directdrawsurface
xlib
;
}
t
;
};
#undef THIS
#define THIS LPDIRECTDRAWCOLORCONTROL this
typedef
struct
IDirectDrawColorControl_VTable
{
/*** IUnknown methods ***/
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment