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
Compare Revisions
fccd7c1dd05309a672690d0ddc39419dacd0c91c...8a6d6bae3cb67262e1719ab6d3e9e9d062901327
Commits (1)
Set High DPI Awareness before calling SDL_Init()
· 8a6d6bae
Deucе
authored
May 17, 2021
8a6d6bae
Show 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
;
...
...