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
699f68cd
Commit
699f68cd
authored
Jul 07, 2009
by
Henri Verbeet
Committed by
Alexandre Julliard
Jul 07, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wined3d: Get rid of some pointers in WINED3DADAPTER_IDENTIFIER.
This also avoids some unchecked strcpy() calls.
parent
32fd8f21
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
97 additions
and
61 deletions
+97
-61
directx.c
dlls/d3d8/directx.c
+20
-16
directx.c
dlls/d3d9/directx.c
+15
-13
directx.c
dlls/wined3d/directx.c
+49
-22
wined3d.idl
include/wine/wined3d.idl
+13
-10
No files found.
dlls/d3d8/directx.c
View file @
699f68cd
...
...
@@ -103,30 +103,34 @@ static UINT WINAPI IDirect3D8Impl_GetAdapterCount (LPDIRECT3D8 iface) {
return
hr
;
}
static
HRESULT
WINAPI
IDirect3D8Impl_GetAdapterIdentifier
(
LPDIRECT3D8
iface
,
UINT
Adapter
,
DWORD
Flags
,
D3DADAPTER_IDENTIFIER8
*
pIdentifier
)
{
static
HRESULT
WINAPI
IDirect3D8Impl_GetAdapterIdentifier
(
LPDIRECT3D8
iface
,
UINT
Adapter
,
DWORD
Flags
,
D3DADAPTER_IDENTIFIER8
*
pIdentifier
)
{
IDirect3D8Impl
*
This
=
(
IDirect3D8Impl
*
)
iface
;
WINED3DADAPTER_IDENTIFIER
adapter_id
;
HRESULT
hr
;
TRACE
(
"(%p)->(%d,%08x, %p
\n
"
,
This
,
Adapter
,
Flags
,
pIdentifier
);
EnterCriticalSection
(
&
d3d8_cs
);
/* dx8 and dx9 have different structures to be filled in, with incompatible
layouts so pass in pointers to the places to be filled via an internal
structure */
adapter_id
.
Driver
=
pIdentifier
->
Driver
;
adapter_id
.
Description
=
pIdentifier
->
Description
;
adapter_id
.
DeviceName
=
NULL
;
/* d3d9 only */
adapter_id
.
DriverVersion
=
&
pIdentifier
->
DriverVersion
;
adapter_id
.
VendorId
=
&
pIdentifier
->
VendorId
;
adapter_id
.
DeviceId
=
&
pIdentifier
->
DeviceId
;
adapter_id
.
SubSysId
=
&
pIdentifier
->
SubSysId
;
adapter_id
.
Revision
=
&
pIdentifier
->
Revision
;
adapter_id
.
DeviceIdentifier
=
&
pIdentifier
->
DeviceIdentifier
;
adapter_id
.
WHQLLevel
=
&
pIdentifier
->
WHQLLevel
;
adapter_id
.
driver
=
pIdentifier
->
Driver
;
adapter_id
.
driver_size
=
sizeof
(
pIdentifier
->
Driver
);
adapter_id
.
description
=
pIdentifier
->
Description
;
adapter_id
.
description_size
=
sizeof
(
pIdentifier
->
Description
);
adapter_id
.
device_name
=
NULL
;
/* d3d9 only */
adapter_id
.
device_name_size
=
0
;
/* d3d9 only */
EnterCriticalSection
(
&
d3d8_cs
);
hr
=
IWineD3D_GetAdapterIdentifier
(
This
->
WineD3D
,
Adapter
,
Flags
,
&
adapter_id
);
LeaveCriticalSection
(
&
d3d8_cs
);
pIdentifier
->
DriverVersion
=
adapter_id
.
driver_version
;
pIdentifier
->
VendorId
=
adapter_id
.
vendor_id
;
pIdentifier
->
DeviceId
=
adapter_id
.
device_id
;
pIdentifier
->
SubSysId
=
adapter_id
.
subsystem_id
;
pIdentifier
->
Revision
=
adapter_id
.
revision
;
memcpy
(
&
pIdentifier
->
DeviceIdentifier
,
&
adapter_id
.
device_identifier
,
sizeof
(
pIdentifier
->
DeviceIdentifier
));
pIdentifier
->
WHQLLevel
=
adapter_id
.
whql_level
;
return
hr
;
}
...
...
dlls/d3d9/directx.c
View file @
699f68cd
...
...
@@ -106,23 +106,25 @@ static HRESULT WINAPI IDirect3D9Impl_GetAdapterIdentifier(LPDIRECT3D9EX iface, U
WINED3DADAPTER_IDENTIFIER
adapter_id
;
HRESULT
hr
;
/* dx8 and dx9 have different structures to be filled in, with incompatible
layouts so pass in pointers to the places to be filled via an internal
structure */
adapter_id
.
Driver
=
pIdentifier
->
Driver
;
adapter_id
.
Description
=
pIdentifier
->
Description
;
adapter_id
.
DeviceName
=
pIdentifier
->
DeviceName
;
adapter_id
.
DriverVersion
=
&
pIdentifier
->
DriverVersion
;
adapter_id
.
VendorId
=
&
pIdentifier
->
VendorId
;
adapter_id
.
DeviceId
=
&
pIdentifier
->
DeviceId
;
adapter_id
.
SubSysId
=
&
pIdentifier
->
SubSysId
;
adapter_id
.
Revision
=
&
pIdentifier
->
Revision
;
adapter_id
.
DeviceIdentifier
=
&
pIdentifier
->
DeviceIdentifier
;
adapter_id
.
WHQLLevel
=
&
pIdentifier
->
WHQLLevel
;
adapter_id
.
driver
=
pIdentifier
->
Driver
;
adapter_id
.
driver_size
=
sizeof
(
pIdentifier
->
Driver
);
adapter_id
.
description
=
pIdentifier
->
Description
;
adapter_id
.
description_size
=
sizeof
(
pIdentifier
->
Description
);
adapter_id
.
device_name
=
pIdentifier
->
DeviceName
;
adapter_id
.
device_name_size
=
sizeof
(
pIdentifier
->
DeviceName
);
EnterCriticalSection
(
&
d3d9_cs
);
hr
=
IWineD3D_GetAdapterIdentifier
(
This
->
WineD3D
,
Adapter
,
Flags
,
&
adapter_id
);
LeaveCriticalSection
(
&
d3d9_cs
);
pIdentifier
->
DriverVersion
=
adapter_id
.
driver_version
;
pIdentifier
->
VendorId
=
adapter_id
.
vendor_id
;
pIdentifier
->
DeviceId
=
adapter_id
.
device_id
;
pIdentifier
->
SubSysId
=
adapter_id
.
subsystem_id
;
pIdentifier
->
Revision
=
adapter_id
.
revision
;
memcpy
(
&
pIdentifier
->
DeviceIdentifier
,
&
adapter_id
.
device_identifier
,
sizeof
(
pIdentifier
->
DeviceIdentifier
));
pIdentifier
->
WHQLLevel
=
adapter_id
.
whql_level
;
return
hr
;
}
...
...
dlls/wined3d/directx.c
View file @
699f68cd
...
...
@@ -2224,6 +2224,7 @@ static HRESULT WINAPI IWineD3DImpl_GetAdapterDisplayMode(IWineD3D *iface, UINT A
static
HRESULT
WINAPI
IWineD3DImpl_GetAdapterIdentifier
(
IWineD3D
*
iface
,
UINT
Adapter
,
DWORD
Flags
,
WINED3DADAPTER_IDENTIFIER
*
pIdentifier
)
{
IWineD3DImpl
*
This
=
(
IWineD3DImpl
*
)
iface
;
size_t
len
;
TRACE_
(
d3d_caps
)(
"(%p}->(Adapter: %d, Flags: %x, pId=%p)
\n
"
,
This
,
Adapter
,
Flags
,
pIdentifier
);
...
...
@@ -2233,39 +2234,65 @@ static HRESULT WINAPI IWineD3DImpl_GetAdapterIdentifier(IWineD3D *iface, UINT Ad
/* Return the information requested */
TRACE_
(
d3d_caps
)(
"device/Vendor Name and Version detection using FillGLCaps
\n
"
);
strcpy
(
pIdentifier
->
Driver
,
This
->
adapters
[
Adapter
].
driver
);
if
(
This
->
adapters
[
Adapter
].
gl_info
.
driver_description
)
strcpy
(
pIdentifier
->
Description
,
This
->
adapters
[
Adapter
].
gl_info
.
driver_description
);
else
/* Copy default description "Direct3D HAL" */
strcpy
(
pIdentifier
->
Description
,
This
->
adapters
[
Adapter
].
description
);
/* Note dx8 doesn't supply a DeviceName */
if
(
NULL
!=
pIdentifier
->
DeviceName
)
strcpy
(
pIdentifier
->
DeviceName
,
"
\\\\
.
\\
DISPLAY1"
);
/* FIXME: May depend on desktop? */
pIdentifier
->
DriverVersion
->
u
.
HighPart
=
This
->
adapters
[
Adapter
].
gl_info
.
driver_version_hipart
;
pIdentifier
->
DriverVersion
->
u
.
LowPart
=
This
->
adapters
[
Adapter
].
gl_info
.
driver_version
;
*
(
pIdentifier
->
VendorId
)
=
This
->
adapters
[
Adapter
].
gl_info
.
gl_vendor
;
*
(
pIdentifier
->
DeviceId
)
=
This
->
adapters
[
Adapter
].
gl_info
.
gl_card
;
*
(
pIdentifier
->
SubSysId
)
=
0
;
*
(
pIdentifier
->
Revision
)
=
0
;
*
pIdentifier
->
DeviceIdentifier
=
IID_D3DDEVICE_D3DUID
;
if
(
pIdentifier
->
driver_size
)
{
len
=
min
(
strlen
(
This
->
adapters
[
Adapter
].
driver
),
pIdentifier
->
driver_size
-
1
);
memcpy
(
pIdentifier
->
driver
,
This
->
adapters
[
Adapter
].
driver
,
len
);
pIdentifier
->
driver
[
len
]
=
'\0'
;
}
if
(
pIdentifier
->
description_size
)
{
const
char
*
description
;
if
(
This
->
adapters
[
Adapter
].
gl_info
.
driver_description
)
description
=
This
->
adapters
[
Adapter
].
gl_info
.
driver_description
;
else
description
=
This
->
adapters
[
Adapter
].
description
;
len
=
min
(
strlen
(
description
),
pIdentifier
->
description_size
-
1
);
memcpy
(
pIdentifier
->
description
,
description
,
len
);
pIdentifier
->
description
[
len
]
=
'\0'
;
}
/* Note that d3d8 doesn't supply a device name. */
if
(
pIdentifier
->
device_name_size
)
{
static
const
char
*
device_name
=
"
\\\\
.
\\
DISPLAY1"
;
/* FIXME: May depend on desktop? */
len
=
strlen
(
device_name
);
if
(
len
>=
pIdentifier
->
device_name_size
)
{
ERR
(
"Device name size too small.
\n
"
);
return
WINED3DERR_INVALIDCALL
;
}
memcpy
(
pIdentifier
->
device_name
,
device_name
,
len
);
pIdentifier
->
device_name
[
len
]
=
'\0'
;
}
pIdentifier
->
driver_version
.
u
.
HighPart
=
This
->
adapters
[
Adapter
].
gl_info
.
driver_version_hipart
;
pIdentifier
->
driver_version
.
u
.
LowPart
=
This
->
adapters
[
Adapter
].
gl_info
.
driver_version
;
pIdentifier
->
vendor_id
=
This
->
adapters
[
Adapter
].
gl_info
.
gl_vendor
;
pIdentifier
->
device_id
=
This
->
adapters
[
Adapter
].
gl_info
.
gl_card
;
pIdentifier
->
subsystem_id
=
0
;
pIdentifier
->
revision
=
0
;
memcpy
(
&
pIdentifier
->
device_identifier
,
&
IID_D3DDEVICE_D3DUID
,
sizeof
(
pIdentifier
->
device_identifier
));
if
(
wined3d_settings
.
pci_device_id
!=
PCI_DEVICE_NONE
)
{
TRACE_
(
d3d_caps
)(
"Overriding pci device id with: %x
\n
"
,
wined3d_settings
.
pci_device_id
);
*
(
pIdentifier
->
DeviceId
)
=
wined3d_settings
.
pci_device_id
;
pIdentifier
->
device_id
=
wined3d_settings
.
pci_device_id
;
}
if
(
wined3d_settings
.
pci_vendor_id
!=
PCI_VENDOR_NONE
)
{
TRACE_
(
d3d_caps
)(
"Overriding pci vendor id with: %x
\n
"
,
wined3d_settings
.
pci_vendor_id
);
*
(
pIdentifier
->
VendorId
)
=
wined3d_settings
.
pci_vendor_id
;
pIdentifier
->
vendor_id
=
wined3d_settings
.
pci_vendor_id
;
}
if
(
Flags
&
WINED3DENUM_NO_WHQL_LEVEL
)
{
*
(
pIdentifier
->
WHQLLevel
)
=
0
;
}
else
{
*
(
pIdentifier
->
WHQLLevel
)
=
1
;
}
pIdentifier
->
whql_level
=
(
Flags
&
WINED3DENUM_NO_WHQL_LEVEL
)
?
0
:
1
;
return
WINED3D_OK
;
}
...
...
include/wine/wined3d.idl
View file @
699f68cd
...
...
@@ -1691,16 +1691,19 @@ typedef struct _WINED3DTRIPATCH_INFO
typedef
struct
_WINED3DADAPTER_IDENTIFIER
{
char
*
Driver
;
char
*
Description
;
char
*
DeviceName
;
LARGE_INTEGER
*
DriverVersion
;
DWORD
*
VendorId
;
DWORD
*
DeviceId
;
DWORD
*
SubSysId
;
DWORD
*
Revision
;
GUID
*
DeviceIdentifier
;
DWORD
*
WHQLLevel
;
char
*
driver
;
UINT
driver_size
;
char
*
description
;
UINT
description_size
;
char
*
device_name
;
UINT
device_name_size
;
LARGE_INTEGER
driver_version
;
DWORD
vendor_id
;
DWORD
device_id
;
DWORD
subsystem_id
;
DWORD
revision
;
GUID
device_identifier
;
DWORD
whql_level
;
}
WINED3DADAPTER_IDENTIFIER
;
typedef
struct
_WINED3DPRESENT_PARAMETERS
...
...
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