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
737e9d7f
Commit
737e9d7f
authored
Feb 27, 2024
by
Rémi Bernon
Committed by
Alexandre Julliard
Mar 14, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
win32u: Add an adapter struct to the device manager context.
parent
866907ee
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
20 additions
and
24 deletions
+20
-24
sysparams.c
dlls/win32u/sysparams.c
+20
-24
No files found.
dlls/win32u/sysparams.c
View file @
737e9d7f
...
...
@@ -125,7 +125,8 @@ struct adapter
unsigned
int
id
;
struct
gpu
*
gpu
;
const
WCHAR
*
config_key
;
unsigned
int
mode_count
;
UINT
monitor_count
;
UINT
mode_count
;
DEVMODEW
*
modes
;
};
...
...
@@ -994,13 +995,12 @@ static unsigned int format_date( WCHAR *bufferW, LONGLONG time )
struct
device_manager_ctx
{
unsigned
int
gpu_count
;
unsigned
int
video_count
;
unsigned
int
monitor_count
;
unsigned
int
output_count
;
unsigned
int
mode_count
;
UINT
gpu_count
;
UINT
adapter_count
;
UINT
monitor_count
;
HANDLE
mutex
;
struct
gpu
gpu
;
struct
adapter
adapter
;
HKEY
adapter_key
;
/* for the virtual desktop settings */
BOOL
is_primary
;
...
...
@@ -1276,9 +1276,6 @@ static void add_gpu( const struct gdi_gpu *gpu, void *param )
lstrcpyW
(
ctx
->
gpu
.
name
,
gpu
->
name
);
ctx
->
gpu
.
vulkan_uuid
=
gpu
->
vulkan_uuid
;
ctx
->
monitor_count
=
0
;
ctx
->
mode_count
=
0
;
sprintf
(
ctx
->
gpu
.
path
,
"PCI
\\
VEN_%04X&DEV_%04X&SUBSYS_%08X&REV_%02X
\\
%08X"
,
gpu
->
vendor_id
,
gpu
->
device_id
,
gpu
->
subsys_id
,
gpu
->
revision_id
,
ctx
->
gpu
.
index
);
if
(
!
(
hkey
=
reg_create_ascii_key
(
enum_key
,
ctx
->
gpu
.
path
,
0
,
NULL
)))
return
;
...
...
@@ -1329,7 +1326,7 @@ static void add_gpu( const struct gdi_gpu *gpu, void *param )
static
void
add_adapter
(
const
struct
gdi_adapter
*
adapter
,
void
*
param
)
{
struct
device_manager_ctx
*
ctx
=
param
;
unsigned
int
adapter_index
,
video_index
,
len
;
unsigned
int
adapter_index
,
len
;
char
name
[
64
],
buffer
[
MAX_PATH
];
WCHAR
bufferW
[
MAX_PATH
];
HKEY
hkey
;
...
...
@@ -1343,24 +1340,23 @@ static void add_adapter( const struct gdi_adapter *adapter, void *param )
}
adapter_index
=
ctx
->
gpu
.
adapter_count
++
;
video_index
=
ctx
->
video_count
++
;
ctx
->
monitor_count
=
0
;
ctx
->
mode_count
=
0
;
snprintf
(
buffer
,
ARRAY_SIZE
(
buffer
),
"
\\
Registry
\\
Machine
\\
System
\\
CurrentControlSet
\\
Control
\\
Video
\\
%s
\\
%04x"
,
ctx
->
gpu
.
guid
,
adapter_index
);
memset
(
&
ctx
->
adapter
,
0
,
sizeof
(
ctx
->
adapter
)
);
ctx
->
adapter
.
gpu
=
&
ctx
->
gpu
;
ctx
->
adapter
.
id
=
ctx
->
adapter_count
++
;
snprintf
(
buffer
,
ARRAY_SIZE
(
buffer
),
"%s
\\
Video
\\
%s
\\
%04x"
,
control_keyA
,
ctx
->
gpu
.
guid
,
adapter_index
);
len
=
asciiz_to_unicode
(
bufferW
,
buffer
)
-
sizeof
(
WCHAR
);
hkey
=
reg_create_ascii_key
(
NULL
,
buffer
,
REG_OPTION_VOLATILE
|
REG_OPTION_CREATE_LINK
,
NULL
);
if
(
!
hkey
)
hkey
=
reg_create_ascii_key
(
NULL
,
buffer
,
REG_OPTION_VOLATILE
|
REG_OPTION_OPEN_LINK
,
NULL
);
sprintf
(
name
,
"
\\
Device
\\
Video%u"
,
video_index
);
sprintf
(
name
,
"
\\
Device
\\
Video%u"
,
ctx
->
adapter
.
id
);
set_reg_ascii_value
(
video_key
,
name
,
buffer
);
if
(
hkey
)
{
sprintf
(
buffer
,
"
\\
Registry
\\
Machine
\\
System
\\
CurrentControlSet
\\
Control
\\
Class
\\
"
"%s
\\
%04X"
,
guid_devclass_displayA
,
ctx
->
gpu_count
-
1
);
sprintf
(
buffer
,
"%s
\\
Class
\\
%s
\\
%04X"
,
control_keyA
,
guid_devclass_displayA
,
ctx
->
gpu
.
index
);
len
=
asciiz_to_unicode
(
bufferW
,
buffer
)
-
sizeof
(
WCHAR
);
set_reg_value
(
hkey
,
symbolic_link_valueW
,
REG_LINK
,
bufferW
,
len
);
NtClose
(
hkey
);
...
...
@@ -1387,8 +1383,8 @@ static void add_monitor( const struct gdi_monitor *monitor, void *param )
HKEY
hkey
,
subkey
;
unsigned
int
len
;
monitor_index
=
ctx
->
monitor_count
++
;
output_index
=
ctx
->
output
_count
++
;
monitor_index
=
ctx
->
adapter
.
monitor_count
++
;
output_index
=
ctx
->
monitor
_count
++
;
TRACE
(
"%u %s %s
\n
"
,
monitor_index
,
wine_dbgstr_rect
(
&
monitor
->
rc_monitor
),
wine_dbgstr_rect
(
&
monitor
->
rc_work
)
);
...
...
@@ -1399,7 +1395,7 @@ static void add_monitor( const struct gdi_monitor *monitor, void *param )
strcpy
(
monitor_id_string
,
"Default_Monitor"
);
sprintf
(
buffer
,
"MonitorID%u"
,
monitor_index
);
sprintf
(
instance
,
"DISPLAY
\\
%s
\\
%04X&%04X"
,
monitor_id_string
,
ctx
->
video_count
-
1
,
monitor_index
);
sprintf
(
instance
,
"DISPLAY
\\
%s
\\
%04X&%04X"
,
monitor_id_string
,
ctx
->
adapter
.
id
,
monitor_index
);
set_reg_ascii_value
(
ctx
->
adapter_key
,
buffer
,
instance
);
hkey
=
reg_create_ascii_key
(
enum_key
,
instance
,
0
,
NULL
);
...
...
@@ -1491,10 +1487,10 @@ static void add_mode( const DEVMODEW *mode, BOOL current, void *param )
nopos_mode
.
dmPosition
.
y
=
0
;
nopos_mode
.
dmFields
&=
~
DM_POSITION
;
if
(
write_adapter_mode
(
ctx
->
adapter_key
,
ctx
->
mode_count
,
&
nopos_mode
))
if
(
write_adapter_mode
(
ctx
->
adapter_key
,
ctx
->
adapter
.
mode_count
,
&
nopos_mode
))
{
ctx
->
mode_count
++
;
set_reg_value
(
ctx
->
adapter_key
,
mode_countW
,
REG_DWORD
,
&
ctx
->
mode_count
,
sizeof
(
ctx
->
mode_count
)
);
ctx
->
adapter
.
mode_count
++
;
set_reg_value
(
ctx
->
adapter_key
,
mode_countW
,
REG_DWORD
,
&
ctx
->
adapter
.
mode_count
,
sizeof
(
ctx
->
adapter
.
mode_count
)
);
if
(
current
)
{
if
(
!
read_adapter_mode
(
ctx
->
adapter_key
,
ENUM_REGISTRY_SETTINGS
,
&
nopos_mode
))
...
...
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