mirror of
https://github.com/CTCaer/RetroArch.git
synced 2024-12-14 22:38:34 +00:00
win32: selectable monitor in wgl context
This commit is contained in:
parent
b80227cf81
commit
1aef7faacb
@ -28,6 +28,8 @@ static HWND g_hwnd;
|
||||
static HGLRC g_hrc;
|
||||
static HDC g_hdc;
|
||||
static HMONITOR g_last_hm;
|
||||
static HMONITOR g_all_hms[20];
|
||||
static unsigned g_num_mons;
|
||||
|
||||
static bool g_quit;
|
||||
static bool g_inited;
|
||||
@ -186,6 +188,12 @@ static void gfx_ctx_get_video_size(unsigned *width, unsigned *height)
|
||||
}
|
||||
}
|
||||
|
||||
BOOL CALLBACK monitor_enum_proc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData)
|
||||
{
|
||||
g_all_hms[g_num_mons++] = hMonitor;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bool gfx_ctx_init(void)
|
||||
{
|
||||
if (g_inited)
|
||||
@ -194,6 +202,9 @@ static bool gfx_ctx_init(void)
|
||||
g_quit = false;
|
||||
g_restore_desktop = false;
|
||||
|
||||
g_num_mons = 0;
|
||||
EnumDisplayMonitors(NULL,NULL,monitor_enum_proc,0);
|
||||
|
||||
WNDCLASSEX wndclass = {0};
|
||||
wndclass.cbSize = sizeof(wndclass);
|
||||
wndclass.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
|
||||
@ -236,13 +247,19 @@ static bool gfx_ctx_set_video_mode(
|
||||
unsigned bits, bool fullscreen)
|
||||
{
|
||||
(void)bits;
|
||||
int fs_monitor = 0;
|
||||
|
||||
DWORD style;
|
||||
MONITORINFOEX current_mon = {{0}};
|
||||
current_mon.cbSize = sizeof(MONITORINFOEX);
|
||||
if (!g_last_hm)
|
||||
g_last_hm = MonitorFromWindow(GetDesktopWindow(), MONITOR_DEFAULTTONEAREST);
|
||||
GetMonitorInfo(g_last_hm, (MONITORINFO*)¤t_mon);
|
||||
HMONITOR hm_to_use = g_last_hm;
|
||||
|
||||
if(fs_monitor > 0 && fs_monitor <= g_num_mons && g_all_hms[fs_monitor - 1])
|
||||
hm_to_use = g_all_hms[fs_monitor - 1];
|
||||
|
||||
GetMonitorInfo(hm_to_use, (MONITORINFO*)¤t_mon);
|
||||
|
||||
g_resize_width = width;
|
||||
g_resize_height = height;
|
||||
@ -264,7 +281,7 @@ static bool gfx_ctx_set_video_mode(
|
||||
goto error;
|
||||
|
||||
// display settings might have changed, get new coordinates
|
||||
GetMonitorInfo(g_last_hm, (MONITORINFO*)¤t_mon);
|
||||
GetMonitorInfo(hm_to_use, (MONITORINFO*)¤t_mon);
|
||||
g_restore_desktop = true;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user