Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
304d7138
Commit
304d7138
authored
Feb 03, 2011
by
Henri Verbeet
Committed by
Alexandre Julliard
Feb 04, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wined3d: Remove COM from the clipper implementation.
parent
708c43a2
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
87 additions
and
136 deletions
+87
-136
clipper.c
dlls/ddraw/clipper.c
+6
-14
ddraw.c
dlls/ddraw/ddraw.c
+4
-5
ddraw_private.h
dlls/ddraw/ddraw_private.h
+1
-1
clipper.c
dlls/wined3d/clipper.c
+48
-76
surface_base.c
dlls/wined3d/surface_base.c
+1
-1
wined3d.spec
dlls/wined3d/wined3d.spec
+9
-1
wined3d_private.h
dlls/wined3d/wined3d_private.h
+5
-7
wined3d.idl
include/wine/wined3d.idl
+13
-31
No files found.
dlls/ddraw/clipper.c
View file @
304d7138
...
...
@@ -95,7 +95,7 @@ static ULONG WINAPI IDirectDrawClipperImpl_Release(IDirectDrawClipper *iface) {
if
(
ref
==
0
)
{
EnterCriticalSection
(
&
ddraw_cs
);
IWineD3DClipper_Release
(
This
->
wineD3DClipper
);
wined3d_clipper_decref
(
This
->
wineD3DClipper
);
HeapFree
(
GetProcessHeap
(),
0
,
This
);
LeaveCriticalSection
(
&
ddraw_cs
);
return
0
;
...
...
@@ -127,9 +127,7 @@ static HRESULT WINAPI IDirectDrawClipperImpl_SetHwnd(
TRACE
(
"iface %p, flags %#x, window %p.
\n
"
,
iface
,
dwFlags
,
hWnd
);
EnterCriticalSection
(
&
ddraw_cs
);
hr
=
IWineD3DClipper_SetHWnd
(
This
->
wineD3DClipper
,
dwFlags
,
hWnd
);
hr
=
wined3d_clipper_set_window
(
This
->
wineD3DClipper
,
dwFlags
,
hWnd
);
LeaveCriticalSection
(
&
ddraw_cs
);
switch
(
hr
)
{
...
...
@@ -167,10 +165,7 @@ static HRESULT WINAPI IDirectDrawClipperImpl_GetClipList(
iface
,
wine_dbgstr_rect
(
lpRect
),
lpClipList
,
lpdwSize
);
EnterCriticalSection
(
&
ddraw_cs
);
hr
=
IWineD3DClipper_GetClipList
(
This
->
wineD3DClipper
,
lpRect
,
lpClipList
,
lpdwSize
);
hr
=
wined3d_clipper_get_clip_list
(
This
->
wineD3DClipper
,
lpRect
,
lpClipList
,
lpdwSize
);
LeaveCriticalSection
(
&
ddraw_cs
);
return
hr
;
}
...
...
@@ -198,9 +193,7 @@ static HRESULT WINAPI IDirectDrawClipperImpl_SetClipList(
TRACE
(
"iface %p, clip_list %p, flags %#x.
\n
"
,
iface
,
lprgn
,
dwFlag
);
EnterCriticalSection
(
&
ddraw_cs
);
hr
=
IWineD3DClipper_SetClipList
(
This
->
wineD3DClipper
,
lprgn
,
dwFlag
);
hr
=
wined3d_clipper_set_clip_list
(
This
->
wineD3DClipper
,
lprgn
,
dwFlag
);
LeaveCriticalSection
(
&
ddraw_cs
);
return
hr
;
}
...
...
@@ -225,8 +218,7 @@ static HRESULT WINAPI IDirectDrawClipperImpl_GetHWnd(
TRACE
(
"iface %p, window %p.
\n
"
,
iface
,
hWndPtr
);
EnterCriticalSection
(
&
ddraw_cs
);
hr
=
IWineD3DClipper_GetHWnd
(
This
->
wineD3DClipper
,
hWndPtr
);
hr
=
wined3d_clipper_get_window
(
This
->
wineD3DClipper
,
hWndPtr
);
LeaveCriticalSection
(
&
ddraw_cs
);
return
hr
;
}
...
...
@@ -307,7 +299,7 @@ HRESULT ddraw_clipper_init(IDirectDrawClipperImpl *clipper)
{
clipper
->
lpVtbl
=
&
ddraw_clipper_vtbl
;
clipper
->
ref
=
1
;
clipper
->
wineD3DClipper
=
WineDirect3DCreateClipper
();
clipper
->
wineD3DClipper
=
wined3d_clipper_create
();
if
(
!
clipper
->
wineD3DClipper
)
{
WARN
(
"Failed to create wined3d clipper.
\n
"
);
...
...
dlls/ddraw/ddraw.c
View file @
304d7138
...
...
@@ -2516,11 +2516,11 @@ HRESULT WINAPI ddraw_recreate_surfaces_cb(IDirectDrawSurface7 *surf, DDSURFACEDE
{
IDirectDrawSurfaceImpl
*
surfImpl
=
(
IDirectDrawSurfaceImpl
*
)
surf
;
IDirectDrawImpl
*
This
=
surfImpl
->
ddraw
;
struct
wined3d_clipper
*
clipper
=
NULL
;
IWineD3DSurface
*
wineD3DSurface
;
IWineD3DSwapChain
*
swapchain
;
void
*
parent
;
HRESULT
hr
;
IWineD3DClipper
*
clipper
=
NULL
;
WINED3DSURFACE_DESC
Desc
;
enum
wined3d_format_id
Format
;
...
...
@@ -2593,10 +2593,9 @@ HRESULT WINAPI ddraw_recreate_surfaces_cb(IDirectDrawSurface7 *surf, DDSURFACEDE
surfImpl
->
ImplType
=
This
->
ImplType
;
if
(
clipper
)
{
IWineD3DClipper_Release
(
clipper
);
}
if
(
clipper
)
wined3d_clipper_decref
(
clipper
);
return
DDENUMRET_OK
;
}
...
...
dlls/ddraw/ddraw_private.h
View file @
304d7138
...
...
@@ -411,7 +411,7 @@ struct IDirectDrawClipperImpl
const
IDirectDrawClipperVtbl
*
lpVtbl
;
LONG
ref
;
IWineD3DClipper
*
wineD3DClipper
;
struct
wined3d_clipper
*
wineD3DClipper
;
BOOL
initialized
;
};
...
...
dlls/wined3d/clipper.c
View file @
304d7138
...
...
@@ -28,70 +28,51 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
d3d
);
static
HRESULT
WINAPI
IWineD3DClipperImpl_QueryInterface
(
IWineD3DClipper
*
iface
,
REFIID
riid
,
void
**
object
)
ULONG
CDECL
wined3d_clipper_incref
(
struct
wined3d_clipper
*
clipper
)
{
TRACE
(
"iface %p, riid %s, object %p.
\n
"
,
iface
,
debugstr_guid
(
riid
),
object
);
ULONG
refcount
=
InterlockedIncrement
(
&
clipper
->
ref
);
if
(
IsEqualGUID
(
riid
,
&
IID_IWineD3DClipper
)
||
IsEqualGUID
(
riid
,
&
IID_IUnknown
))
{
IUnknown_AddRef
(
iface
);
*
object
=
iface
;
return
S_OK
;
}
WARN
(
"%s not implemented, returning E_NOINTERFACE.
\n
"
,
debugstr_guid
(
riid
));
*
object
=
NULL
;
return
E_NOINTERFACE
;
}
static
ULONG
WINAPI
IWineD3DClipperImpl_AddRef
(
IWineD3DClipper
*
iface
)
{
IWineD3DClipperImpl
*
This
=
(
IWineD3DClipperImpl
*
)
iface
;
ULONG
ref
=
InterlockedIncrement
(
&
This
->
ref
);
TRACE
(
"(%p)->() incrementing from %u.
\n
"
,
This
,
ref
-
1
);
TRACE
(
"%p increasing refcount to %u.
\n
"
,
clipper
,
refcount
);
return
ref
;
return
ref
count
;
}
static
ULONG
WINAPI
IWineD3DClipperImpl_Release
(
IWineD3DClipper
*
iface
)
ULONG
CDECL
wined3d_clipper_decref
(
struct
wined3d_clipper
*
clipper
)
{
IWineD3DClipperImpl
*
This
=
(
IWineD3DClipperImpl
*
)
iface
;
ULONG
ref
=
InterlockedDecrement
(
&
This
->
ref
);
ULONG
refcount
=
InterlockedDecrement
(
&
clipper
->
ref
);
TRACE
(
"
(%p)->() decrementing from %u.
\n
"
,
This
,
ref
+
1
);
TRACE
(
"
%p decreasing refcount to %u.
\n
"
,
clipper
,
refcount
);
if
(
!
ref
)
HeapFree
(
GetProcessHeap
(),
0
,
This
);
if
(
!
refcount
)
HeapFree
(
GetProcessHeap
(),
0
,
clipper
);
return
ref
;
return
ref
count
;
}
static
HRESULT
WINAPI
IWineD3DClipperImpl_SetHwnd
(
IWineD3DClipper
*
iface
,
DWORD
flags
,
HWND
hWnd
)
HRESULT
CDECL
wined3d_clipper_set_window
(
struct
wined3d_clipper
*
clipper
,
DWORD
flags
,
HWND
window
)
{
IWineD3DClipperImpl
*
This
=
(
IWineD3DClipperImpl
*
)
iface
;
TRACE
(
"clipper %p, flags %#x, window %p.
\n
"
,
clipper
,
flags
,
window
)
;
TRACE
(
"iface %p, flags %#x, window %p.
\n
"
,
iface
,
flags
,
hWnd
);
if
(
flags
)
{
FIXME
(
"flags %#x, not supported.
\n
"
,
flags
);
return
WINED3DERR_INVALIDCALL
;
}
This
->
hWnd
=
hWnd
;
clipper
->
hWnd
=
window
;
return
WINED3D_OK
;
}
static
HRESULT
WINAPI
IWineD3DClipperImpl_GetClipList
(
IWineD3DClipper
*
iface
,
const
RECT
*
R
ect
,
RGNDATA
*
ClipList
,
DWORD
*
S
ize
)
HRESULT
CDECL
wined3d_clipper_get_clip_list
(
const
struct
wined3d_clipper
*
clipper
,
const
RECT
*
r
ect
,
RGNDATA
*
clip_list
,
DWORD
*
clip_list_s
ize
)
{
IWineD3DClipperImpl
*
This
=
(
IWineD3DClipperImpl
*
)
iface
;
TRACE
(
"(%p,%p,%p,%p)
\n
"
,
This
,
Rect
,
ClipList
,
S
ize
);
TRACE
(
"clipper %p, rect %s, clip_list %p, clip_list_size %p.
\n
"
,
clipper
,
wine_dbgstr_rect
(
rect
),
clip_list
,
clip_list_s
ize
);
if
(
This
->
hWnd
)
if
(
clipper
->
hWnd
)
{
HDC
hDC
=
GetDCEx
(
This
->
hWnd
,
NULL
,
DCX_WINDOW
);
HDC
hDC
=
GetDCEx
(
clipper
->
hWnd
,
NULL
,
DCX_WINDOW
);
if
(
hDC
)
{
HRGN
hRgn
=
CreateRectRgn
(
0
,
0
,
0
,
0
);
...
...
@@ -101,55 +82,60 @@ static HRESULT WINAPI IWineD3DClipperImpl_GetClipList(IWineD3DClipper *iface, co
{
/* map region to screen coordinates */
POINT
org
;
GetDCOrgEx
(
hDC
,
&
org
);
OffsetRgn
(
hRgn
,
org
.
x
,
org
.
y
);
GetDCOrgEx
(
hDC
,
&
org
);
OffsetRgn
(
hRgn
,
org
.
x
,
org
.
y
);
}
if
(
R
ect
)
if
(
r
ect
)
{
HRGN
hRgnClip
=
CreateRectRgn
(
Rect
->
left
,
R
ect
->
top
,
Rect
->
right
,
R
ect
->
bottom
);
HRGN
hRgnClip
=
CreateRectRgn
(
rect
->
left
,
r
ect
->
top
,
rect
->
right
,
r
ect
->
bottom
);
CombineRgn
(
hRgn
,
hRgn
,
hRgnClip
,
RGN_AND
);
DeleteObject
(
hRgnClip
);
}
*
Size
=
GetRegionData
(
hRgn
,
*
Size
,
ClipL
ist
);
*
clip_list_size
=
GetRegionData
(
hRgn
,
*
clip_list_size
,
clip_l
ist
);
}
DeleteObject
(
hRgn
);
ReleaseDC
(
This
->
hWnd
,
hDC
);
ReleaseDC
(
clipper
->
hWnd
,
hDC
);
}
return
WINED3D_OK
;
}
else
{
static
int
warned
=
0
;
if
(
warned
++
<
10
)
FIXME
(
"(%p,%p,%p,%p),stub!
\n
"
,
This
,
Rect
,
ClipList
,
Size
);
if
(
Size
)
*
Size
=
0
;
static
unsigned
int
once
;
if
(
!
once
++
)
FIXME
(
"clipper %p, rect %s, clip_list %p, clip_list_size %p stub!
\n
"
,
clipper
,
wine_dbgstr_rect
(
rect
),
clip_list
,
clip_list_size
);
if
(
clip_list_size
)
*
clip_list_size
=
0
;
return
WINEDDERR_NOCLIPLIST
;
}
}
static
HRESULT
WINAPI
IWineD3DClipperImpl_SetClipList
(
IWineD3DClipper
*
iface
,
const
RGNDATA
*
rg
n
,
DWORD
flags
)
HRESULT
CDECL
wined3d_clipper_set_clip_list
(
struct
wined3d_clipper
*
clipper
,
const
RGNDATA
*
regio
n
,
DWORD
flags
)
{
static
int
warned
=
0
;
static
unsigned
int
once
;
if
(
warned
++
<
10
||
!
rg
n
)
FIXME
(
"
iface %p, region %p, flags %#x stub!
\n
"
,
iface
,
rg
n
,
flags
);
if
(
!
once
++
||
!
regio
n
)
FIXME
(
"
clipper %p, region %p, flags %#x stub!
\n
"
,
clipper
,
regio
n
,
flags
);
return
WINED3D_OK
;
}
static
HRESULT
WINAPI
IWineD3DClipperImpl_GetHwnd
(
IWineD3DClipper
*
iface
,
HWND
*
hwnd
)
HRESULT
CDECL
wined3d_clipper_get_window
(
const
struct
wined3d_clipper
*
clipper
,
HWND
*
window
)
{
IWineD3DClipperImpl
*
This
=
(
IWineD3DClipperImpl
*
)
iface
;
TRACE
(
"(%p)->(%p)
\n
"
,
This
,
hwnd
);
TRACE
(
"clipper %p, window %p.
\n
"
,
clipper
,
window
);
*
window
=
clipper
->
hWnd
;
*
hwnd
=
This
->
hWnd
;
return
WINED3D_OK
;
}
static
HRESULT
WINAPI
IWineD3DClipperImpl_IsClipListChanged
(
IWineD3DClipper
*
iface
,
BOOL
*
changed
)
HRESULT
CDECL
wined3d_clipper_is_clip_list_changed
(
const
struct
wined3d_clipper
*
clipper
,
BOOL
*
changed
)
{
FIXME
(
"
iface %p, changed %p stub!
\n
"
,
iface
,
changed
);
FIXME
(
"
clipper %p, changed %p stub!
\n
"
,
clipper
,
changed
);
/* XXX What is safest? */
*
changed
=
FALSE
;
...
...
@@ -157,19 +143,7 @@ static HRESULT WINAPI IWineD3DClipperImpl_IsClipListChanged(IWineD3DClipper *ifa
return
WINED3D_OK
;
}
static
const
IWineD3DClipperVtbl
IWineD3DClipper_Vtbl
=
{
IWineD3DClipperImpl_QueryInterface
,
IWineD3DClipperImpl_AddRef
,
IWineD3DClipperImpl_Release
,
IWineD3DClipperImpl_GetClipList
,
IWineD3DClipperImpl_GetHwnd
,
IWineD3DClipperImpl_IsClipListChanged
,
IWineD3DClipperImpl_SetClipList
,
IWineD3DClipperImpl_SetHwnd
};
IWineD3DClipper
*
WINAPI
WineDirect3DCreateClipper
(
void
)
struct
wined3d_clipper
*
CDECL
wined3d_clipper_create
(
void
)
{
IWineD3DClipperImpl
*
obj
;
...
...
@@ -182,8 +156,6 @@ IWineD3DClipper * WINAPI WineDirect3DCreateClipper(void)
return
NULL
;
}
obj
->
lpVtbl
=
&
IWineD3DClipper_Vtbl
;
IWineD3DClipper_AddRef
((
IWineD3DClipper
*
)
obj
);
wined3d_clipper_incref
(
obj
);
return
(
IWineD3DClipper
*
)
obj
;
}
dlls/wined3d/surface_base.c
View file @
304d7138
...
...
@@ -488,7 +488,7 @@ HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetClipper(IWineD3DSurface *iface, IWineD
*
clipper
=
(
IWineD3DClipper
*
)
This
->
clipper
;
if
(
*
clipper
)
IWineD3DClipper_AddR
ef
(
*
clipper
);
wined3d_clipper_incr
ef
(
*
clipper
);
return
WINED3D_OK
;
}
...
...
dlls/wined3d/wined3d.spec
View file @
304d7138
@ stdcall WineDirect3DCreateClipper()
@ stdcall wined3d_mutex_lock()
@ stdcall wined3d_mutex_unlock()
...
...
@@ -20,6 +19,15 @@
@ cdecl wined3d_incref(ptr)
@ cdecl wined3d_register_software_device(ptr ptr)
@ cdecl wined3d_clipper_create()
@ cdecl wined3d_clipper_decref(ptr)
@ cdecl wined3d_clipper_get_clip_list(ptr ptr ptr ptr)
@ cdecl wined3d_clipper_get_window(ptr ptr)
@ cdecl wined3d_clipper_incref(ptr)
@ cdecl wined3d_clipper_is_clip_list_changed(ptr ptr)
@ cdecl wined3d_clipper_set_clip_list(ptr ptr long)
@ cdecl wined3d_clipper_set_window(ptr long ptr)
@ cdecl wined3d_device_create(ptr long long ptr long ptr ptr)
@ cdecl wined3d_palette_decref(ptr)
...
...
dlls/wined3d/wined3d_private.h
View file @
304d7138
...
...
@@ -58,6 +58,8 @@ typedef struct IWineD3DSwapChainImpl IWineD3DSwapChainImpl;
struct
IWineD3DBaseShaderImpl
;
struct
IWineD3DBaseTextureImpl
;
struct
IWineD3DResourceImpl
;
typedef
struct
wined3d_clipper
IWineD3DClipperImpl
;
typedef
struct
wined3d_clipper
IWineD3DClipper
;
/* Texture format fixups */
...
...
@@ -2049,16 +2051,12 @@ struct fbo_entry
GLuint
id
;
};
/*****************************************************************************
* IWineD3DClipp implementation structure
*/
typedef
struct
IWineD3DClipperImpl
struct
wined3d_clipper
{
const
IWineD3DClipperVtbl
*
lpVtbl
;
LONG
ref
;
HWND
hWnd
;
}
IWineD3DClipperImpl
;
};
enum
wined3d_container_type
{
...
...
@@ -2138,7 +2136,7 @@ struct IWineD3DSurfaceImpl
SIZE
ds_current_size
;
/* DirectDraw clippers */
struct
IWineD3DClipperImpl
*
clipper
;
struct
wined3d_clipper
*
clipper
;
/* DirectDraw Overlay handling */
RECT
overlay_srcrect
;
...
...
include/wine/wined3d.idl
View file @
304d7138
...
...
@@ -2111,6 +2111,7 @@ interface IWineD3DVolume;
interface
IWineD3DSwapChain
;
interface
IWineD3DDevice
;
struct
wined3d
;
struct
wined3d_clipper
;
struct
wined3d_palette
;
struct
wined3d_stateblock
;
struct
wined3d_vertex_declaration
;
...
...
@@ -2238,34 +2239,6 @@ interface IWineD3DRendertargetView : IWineD3DBase
[
object
,
local
,
uuid
(
8
f2bceb1
-
d338
-
488
c
-
ab7f
-
0
ec980bf5d2d
)
]
interface
IWineD3DClipper
:
IUnknown
{
HRESULT
GetClipList
(
[
in
]
const
RECT
*
rect
,
[
out
]
RGNDATA
*
clip_list
,
[
in
,
out
]
DWORD
*
clip_list_size
)
;
HRESULT
GetHWnd
(
[
out
]
HWND
*
hwnd
)
;
HRESULT
IsClipListChanged
(
[
out
]
BOOL
*
changed
)
;
HRESULT
SetClipList
(
[
in
]
const
RGNDATA
*
clip_list
,
[
in
]
DWORD
flags
)
;
HRESULT
SetHWnd
(
[
in
]
DWORD
flags
,
[
in
]
HWND
hwnd
)
;
}
[
object
,
local
,
uuid
(
37
cd5526
-
6
f30
-
11
d9
-
c687
-
00046142
c14f
)
]
interface
IWineD3DSurface
:
IWineD3DResource
...
...
@@ -2350,10 +2323,10 @@ interface IWineD3DSurface : IWineD3DResource
[
in
]
const
WINEDDOVERLAYFX
*
fx
)
;
HRESULT
SetClipper
(
[
in
]
IWineD3DC
lipper
*
clipper
[
in
]
struct
wined3d_c
lipper
*
clipper
)
;
HRESULT
GetClipper
(
[
out
]
IWineD3DC
lipper
**
clipper
[
out
]
struct
wined3d_c
lipper
**
clipper
)
;
HRESULT
SetFormat
(
[
in
]
enum
wined3d_format_id
format_id
...
...
@@ -3233,7 +3206,6 @@ interface IWineD3DDevice : IUnknown
)
;
}
IWineD3DClipper
*
__stdcall
WineDirect3DCreateClipper
(
void
)
;
void
__stdcall
wined3d_mutex_lock
(
void
)
;
void
__stdcall
wined3d_mutex_unlock
(
void
)
;
...
...
@@ -3271,6 +3243,16 @@ void * __cdecl wined3d_get_parent(const struct wined3d *wined3d);
ULONG
__cdecl
wined3d_incref
(
struct
wined3d
*
wined3d
)
;
HRESULT
__cdecl
wined3d_register_software_device
(
struct
wined3d
*
wined3d
,
void
*
init_function
)
;
struct
wined3d_clipper
*
__cdecl
wined3d_clipper_create
(
void
)
;
ULONG
__cdecl
wined3d_clipper_decref
(
struct
wined3d_clipper
*
clipper
)
;
HRESULT
__cdecl
wined3d_clipper_get_clip_list
(
const
struct
wined3d_clipper
*
clipper
,
const
RECT
*
rect
,
RGNDATA
*
clip_list
,
DWORD
*
clip_list_size
)
;
HRESULT
__cdecl
wined3d_clipper_get_window
(
const
struct
wined3d_clipper
*
clipper
,
HWND
*
hwnd
)
;
ULONG
__cdecl
wined3d_clipper_incref
(
struct
wined3d_clipper
*
clipper
)
;
HRESULT
__cdecl
wined3d_clipper_is_clip_list_changed
(
const
struct
wined3d_clipper
*
clipper
,
BOOL
*
changed
)
;
HRESULT
__cdecl
wined3d_clipper_set_clip_list
(
struct
wined3d_clipper
*
clipper
,
const
RGNDATA
*
clip_list
,
DWORD
flags
)
;
HRESULT
__cdecl
wined3d_clipper_set_window
(
struct
wined3d_clipper
*
clipper
,
DWORD
flags
,
HWND
hwnd
)
;
HRESULT
__cdecl
wined3d_device_create
(
struct
wined3d
*
wined3d
,
UINT
adapter_idx
,
WINED3DDEVTYPE
device_type
,
HWND
focus_window
,
DWORD
behaviour_flags
,
IWineD3DDeviceParent
*
device_parent
,
IWineD3DDevice
**
device
)
;
...
...
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