Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Main
Synchronet
Commits
8a6d6bae
Commit
8a6d6bae
authored
May 17, 2021
by
Deucе
👌🏾
Browse files
Set High DPI Awareness before calling SDL_Init()
parent
fccd7c1d
Pipeline
#2223
passed with stage
in 8 minutes and 22 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
38 additions
and
38 deletions
+38
-38
src/conio/sdl_con.c
src/conio/sdl_con.c
+0
-38
src/conio/sdlfuncs.c
src/conio/sdlfuncs.c
+38
-0
No files found.
src/conio/sdl_con.c
View file @
8a6d6bae
...
...
@@ -467,44 +467,6 @@ int sdl_init(int mode)
cio_api
.
mode
=
fullscreen
?
CIOLIB_MODE_SDL_FULLSCREEN
:
CIOLIB_MODE_SDL
;
#ifdef _WIN32
FreeConsole
();
// code that tells windows we're High DPI aware so it doesn't scale our windows
// taken from Yamagi Quake II
typedef
enum
D3_PROCESS_DPI_AWARENESS
{
D3_PROCESS_DPI_UNAWARE
=
0
,
D3_PROCESS_SYSTEM_DPI_AWARE
=
1
,
D3_PROCESS_PER_MONITOR_DPI_AWARE
=
2
}
YQ2_PROCESS_DPI_AWARENESS
;
/* For Vista, Win7 and Win8 */
BOOL
(
WINAPI
*
SetProcessDPIAware
)(
void
)
=
NULL
;
/* Win8.1 and later */
HRESULT
(
WINAPI
*
SetProcessDpiAwareness
)(
enum
D3_PROCESS_DPI_AWARENESS
dpiAwareness
)
=
NULL
;
const
char
*
user32dll
[]
=
{
"User32"
,
NULL
};
dll_handle
userDLL
=
xp_dlopen
(
user32dll
,
RTLD_LAZY
,
0
);
if
(
userDLL
)
{
SetProcessDPIAware
=
xp_dlsym
(
userDLL
,
"SetProcessDPIAware"
);
}
const
char
*
shcoredll
[]
=
{
"SHCore"
,
NULL
};
dll_handle
shcoreDLL
=
xp_dlopen
(
shcoredll
,
RTLD_LAZY
,
0
);
if
(
shcoreDLL
)
{
SetProcessDpiAwareness
=
xp_dlsym
(
shcoreDLL
,
"SetProcessDpiAwareness"
);
}
if
(
SetProcessDpiAwareness
)
{
SetProcessDpiAwareness
(
D3_PROCESS_PER_MONITOR_DPI_AWARE
);
}
else
if
(
SetProcessDPIAware
)
{
SetProcessDPIAware
();
}
#endif
cio_api
.
options
|=
CONIO_OPT_PALETTE_SETTING
|
CONIO_OPT_SET_TITLE
|
CONIO_OPT_SET_NAME
|
CONIO_OPT_SET_ICON
;
return
(
0
);
...
...
src/conio/sdlfuncs.c
View file @
8a6d6bae
...
...
@@ -231,6 +231,44 @@ int init_sdl_video(void)
sdl
.
SetHint
(
SDL_HINT_RENDER_SCALE_QUALITY
,
"2"
);
sdl
.
SetHint
(
SDL_HINT_VIDEO_ALLOW_SCREENSAVER
,
"1"
);
#ifdef _WIN32
// code that tells windows we're High DPI aware so it doesn't scale our windows
// taken from Yamagi Quake II
typedef
enum
D3_PROCESS_DPI_AWARENESS
{
D3_PROCESS_DPI_UNAWARE
=
0
,
D3_PROCESS_SYSTEM_DPI_AWARE
=
1
,
D3_PROCESS_PER_MONITOR_DPI_AWARE
=
2
}
YQ2_PROCESS_DPI_AWARENESS
;
/* For Vista, Win7 and Win8 */
BOOL
(
WINAPI
*
SetProcessDPIAware
)(
void
)
=
NULL
;
/* Win8.1 and later */
HRESULT
(
WINAPI
*
SetProcessDpiAwareness
)(
enum
D3_PROCESS_DPI_AWARENESS
dpiAwareness
)
=
NULL
;
const
char
*
user32dll
[]
=
{
"User32"
,
NULL
};
dll_handle
userDLL
=
xp_dlopen
(
user32dll
,
RTLD_LAZY
,
0
);
if
(
userDLL
)
{
SetProcessDPIAware
=
xp_dlsym
(
userDLL
,
"SetProcessDPIAware"
);
}
const
char
*
shcoredll
[]
=
{
"SHCore"
,
NULL
};
dll_handle
shcoreDLL
=
xp_dlopen
(
shcoredll
,
RTLD_LAZY
,
0
);
if
(
shcoreDLL
)
{
SetProcessDpiAwareness
=
xp_dlsym
(
shcoreDLL
,
"SetProcessDpiAwareness"
);
}
if
(
SetProcessDpiAwareness
)
{
SetProcessDpiAwareness
(
D3_PROCESS_PER_MONITOR_DPI_AWARE
);
}
else
if
(
SetProcessDPIAware
)
{
SetProcessDPIAware
();
}
/* Fail to windib (ie: No mouse attached) */
if
(
sdl
.
Init
(
SDL_INIT_VIDEO
)
==
0
)
{
sdl_video_initialized
=
TRUE
;
...
...
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