diff --git a/gfx/common/win32_common.cpp b/gfx/common/win32_common.cpp index 03fc815257..74052d7243 100644 --- a/gfx/common/win32_common.cpp +++ b/gfx/common/win32_common.cpp @@ -685,3 +685,8 @@ bool win32_has_focus(void) return GetFocus() == g_hwnd; } + +HWND win32_get_window(void) +{ + return g_hwnd; +} diff --git a/gfx/common/win32_common.h b/gfx/common/win32_common.h index 2c2533baa1..3bddca66a0 100644 --- a/gfx/common/win32_common.h +++ b/gfx/common/win32_common.h @@ -75,6 +75,8 @@ bool win32_get_metrics(void *data, void win32_show_cursor(bool state); +HWND win32_get_window(void); + bool win32_has_focus(void); void win32_check_window(bool *quit, diff --git a/gfx/d3d/d3d.cpp b/gfx/d3d/d3d.cpp index 9712a9e36a..293cc9e4d2 100644 --- a/gfx/d3d/d3d.cpp +++ b/gfx/d3d/d3d.cpp @@ -161,7 +161,7 @@ void d3d_make_d3dpp(void *data, #endif info->rgb32 ? D3DFMT_X8R8G8B8 : D3DFMT_LIN_R5G6B5; #else - d3dpp->hDeviceWindow = g_hwnd; + d3dpp->hDeviceWindow = win32_get_window(); d3dpp->BackBufferFormat = !d3dpp->Windowed ? D3DFMT_X8R8G8B8 : D3DFMT_UNKNOWN; #endif @@ -247,7 +247,7 @@ static bool d3d_init_base(void *data, const video_info_t *info) if (FAILED(d3d->d3d_err = d3d->g_pD3D->CreateDevice( d3d->cur_mon_id, D3DDEVTYPE_HAL, - g_hwnd, + win32_get_window(), D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp, &d3d->dev))) @@ -258,7 +258,7 @@ static bool d3d_init_base(void *data, const video_info_t *info) if (FAILED(d3d->d3d_err = d3d->g_pD3D->CreateDevice( d3d->cur_mon_id, D3DDEVTYPE_HAL, - g_hwnd, + win32_get_window(), D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &d3d->dev))) @@ -647,20 +647,22 @@ static bool d3d_construct(d3d_video_t *d3d, if (!info->fullscreen || windowed_full) { + HWND window = win32_get_window(); + if (!info->fullscreen && settings->ui.menubar_enable) { RECT rc_temp = {0, 0, (LONG)win_height, 0x7FFF}; - SetMenu(g_hwnd, LoadMenu(GetModuleHandle(NULL),MAKEINTRESOURCE(IDR_MENU))); - SendMessage(g_hwnd, WM_NCCALCSIZE, FALSE, (LPARAM)&rc_temp); + SetMenu(window, LoadMenu(GetModuleHandle(NULL),MAKEINTRESOURCE(IDR_MENU))); + SendMessage(window, WM_NCCALCSIZE, FALSE, (LPARAM)&rc_temp); g_resize_height = win_height += rc_temp.top + rect.top; - SetWindowPos(g_hwnd, NULL, 0, 0, win_width, win_height, SWP_NOMOVE); + SetWindowPos(window, NULL, 0, 0, win_width, win_height, SWP_NOMOVE); } - ShowWindow(g_hwnd, SW_RESTORE); - UpdateWindow(g_hwnd); - SetForegroundWindow(g_hwnd); - SetFocus(g_hwnd); + ShowWindow(window, SW_RESTORE); + UpdateWindow(window); + SetForegroundWindow(window); + SetFocus(window); } #endif @@ -819,7 +821,8 @@ error: static void d3d_free(void *data) { - d3d_video_t *d3d = (d3d_video_t*)data; + d3d_video_t *d3d = (d3d_video_t*)data; + HWND window = win32_get_window(); if (!d3d) return; @@ -844,7 +847,7 @@ static void d3d_free(void *data) d3d->g_pD3D->Release(); #ifdef HAVE_MONITOR - win32_monitor_from_window(g_hwnd, true); + win32_monitor_from_window(window, true); #endif if (d3d) @@ -1468,6 +1471,7 @@ static bool d3d_frame(void *data, const void *frame, LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev; driver_t *driver = driver_get_ptr(); settings_t *settings = config_get_ptr(); + HWND window = win32_get_window(); const font_renderer_t *font_ctx = driver->font_osd_driver; (void)i; @@ -1482,7 +1486,7 @@ static bool d3d_frame(void *data, const void *frame, #ifndef _XBOX /* We cannot recover in fullscreen. */ - if (d3d->needs_restore && IsIconic(g_hwnd)) + if (d3d->needs_restore && IsIconic(window)) return true; #endif if (d3d->needs_restore && !d3d_restore(d3d)) diff --git a/gfx/drivers_context/d3d_ctx.cpp b/gfx/drivers_context/d3d_ctx.cpp index bb0bb44c3e..910893aec3 100644 --- a/gfx/drivers_context/d3d_ctx.cpp +++ b/gfx/drivers_context/d3d_ctx.cpp @@ -84,14 +84,13 @@ static void gfx_ctx_d3d_update_title(void *data) char buf[128] = {0}; char buffer_fps[128] = {0}; settings_t *settings = config_get_ptr(); + HWND window = win32_get_window(); if (video_monitor_get_fps(buf, sizeof(buf), buffer_fps, sizeof(buffer_fps))) { #ifndef _XBOX - d3d_video_t *d3d = (d3d_video_t*)data; - - SetWindowText(g_hwnd, buf); + SetWindowText(window, buf); #endif } diff --git a/gfx/drivers_context/wgl_ctx.cpp b/gfx/drivers_context/wgl_ctx.cpp index 0e397fd5c3..8bceee3fb0 100644 --- a/gfx/drivers_context/wgl_ctx.cpp +++ b/gfx/drivers_context/wgl_ctx.cpp @@ -266,12 +266,13 @@ static void gfx_ctx_wgl_update_window_title(void *data) char buf[128] = {0}; char buf_fps[128] = {0}; settings_t *settings = config_get_ptr(); + HWND window = win32_get_window(); (void)data; if (video_monitor_get_fps(buf, sizeof(buf), buf_fps, sizeof(buf_fps))) - SetWindowText(g_hwnd, buf); + SetWindowText(window, buf); if (settings->fps_show) rarch_main_msg_queue_push(buf_fps, 1, 1, false); } @@ -279,8 +280,9 @@ static void gfx_ctx_wgl_update_window_title(void *data) static void gfx_ctx_wgl_get_video_size(void *data, unsigned *width, unsigned *height) { (void)data; + HWND window = win32_get_window(); - if (!g_hwnd) + if (!window) { unsigned mon_id; RECT mon_rect; @@ -342,6 +344,7 @@ error: static void gfx_ctx_wgl_destroy(void *data) { driver_t *driver = driver_get_ptr(); + HWND window = win32_get_window(); (void)data; @@ -360,15 +363,15 @@ static void gfx_ctx_wgl_destroy(void *data) } } - if (g_hwnd && g_hdc) + if (window && g_hdc) { - ReleaseDC(g_hwnd, g_hdc); + ReleaseDC(window, g_hdc); g_hdc = NULL; } - if (g_hwnd) + if (window) { - win32_monitor_from_window(g_hwnd, true); + win32_monitor_from_window(window, true); UnregisterClass("RetroArch", GetModuleHandle(NULL)); g_hwnd = NULL; }