diff --git a/gfx/common/win32_common.cpp b/gfx/common/win32_common.cpp index bfb219a889..e58d95e675 100644 --- a/gfx/common/win32_common.cpp +++ b/gfx/common/win32_common.cpp @@ -156,7 +156,10 @@ void win32_monitor_from_window(void) { #ifndef _XBOX win32_monitor_last = MonitorFromWindow(main_window.hwnd, MONITOR_DEFAULTTONEAREST); - ui_window_win32_destroy(&main_window); + const ui_window_t *window = ui_companion_driver_get_window_ptr(); + + if (window) + window->destroy(&main_window); #endif } @@ -373,14 +376,16 @@ LRESULT CALLBACK WndProcD3D(HWND hwnd, UINT message, break; case WM_CREATE: { - ui_window_win32_t window; + ui_window_win32_t win32_window; + const ui_window_t *window = ui_companion_driver_get_window_ptr(); LPCREATESTRUCT p_cs = (LPCREATESTRUCT)lparam; curD3D = p_cs->lpCreateParams; g_inited = true; - window.hwnd = hwnd; + win32_window.hwnd = hwnd; - ui_window_win32_set_droppable(&window, true); + if (window) + window->set_droppable(&win32_window, true); } return 0; } @@ -417,11 +422,14 @@ LRESULT CALLBACK WndProcGL(HWND hwnd, UINT message, break; case WM_CREATE: { - ui_window_win32_t window; - window.hwnd = hwnd; + ui_window_win32_t win32_window; + const ui_window_t *window = ui_companion_driver_get_window_ptr(); + win32_window.hwnd = hwnd; create_graphics_context(hwnd, &g_quit); - ui_window_win32_set_droppable(&window, true); + + if (window) + window->set_droppable(&win32_window, true); } return 0; } @@ -660,6 +668,8 @@ void win32_set_window(unsigned *width, unsigned *height, if (!fullscreen || windowed_full) { + const ui_window_t *window = ui_companion_driver_get_window_ptr(); + if (!fullscreen && settings->ui.menubar_enable) { RECT rc_temp = {0, 0, (LONG)*height, 0x7FFF}; @@ -672,7 +682,9 @@ void win32_set_window(unsigned *width, unsigned *height, ShowWindow(main_window.hwnd, SW_RESTORE); UpdateWindow(main_window.hwnd); SetForegroundWindow(main_window.hwnd); - ui_window_win32_set_focused(&main_window); + + if (window) + window->set_focused(&main_window); } win32_show_cursor(!fullscreen); @@ -742,13 +754,18 @@ BOOL IsIconic(HWND hwnd) bool win32_has_focus(void) { +#ifndef _XBOX + const ui_window_t *window = ui_companion_driver_get_window_ptr(); +#endif if (!g_inited) return false; #ifdef _XBOX return GetForegroundWindow() == main_window.hwnd; #else - return ui_window_win32_focused(&main_window); + if (window) + return window->focused(&main_window); + return false; #endif } diff --git a/gfx/drivers_context/d3d_ctx.cpp b/gfx/drivers_context/d3d_ctx.cpp index 33c4c511f6..8cf8077841 100644 --- a/gfx/drivers_context/d3d_ctx.cpp +++ b/gfx/drivers_context/d3d_ctx.cpp @@ -76,15 +76,16 @@ static void gfx_ctx_d3d_swap_buffers(void *data) static void gfx_ctx_d3d_update_title(void *data) { - char buf[128] = {0}; - char buffer_fps[128] = {0}; - settings_t *settings = config_get_ptr(); + char buf[128] = {0}; + char buffer_fps[128] = {0}; + settings_t *settings = config_get_ptr(); + const ui_window_t *window = ui_companion_driver_get_window_ptr(); - if (video_monitor_get_fps(buf, sizeof(buf), + if (window && video_monitor_get_fps(buf, sizeof(buf), buffer_fps, sizeof(buffer_fps))) { #ifndef _XBOX - ui_window_win32_set_title(&main_window, buf); + window->set_title(&main_window, buf); #endif } diff --git a/gfx/drivers_context/wgl_ctx.cpp b/gfx/drivers_context/wgl_ctx.cpp index 6a2e06bcf8..7eeef85e63 100644 --- a/gfx/drivers_context/wgl_ctx.cpp +++ b/gfx/drivers_context/wgl_ctx.cpp @@ -389,10 +389,11 @@ 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(); + const ui_window_t *window = ui_companion_driver_get_window_ptr(); - if (video_monitor_get_fps(buf, sizeof(buf), + if (window && video_monitor_get_fps(buf, sizeof(buf), buf_fps, sizeof(buf_fps))) - ui_window_win32_set_title(&main_window, buf); + window->set_title(&main_window, buf); if (settings->fps_show) runloop_msg_queue_push(buf_fps, 1, 1, false); } diff --git a/ui/drivers/ui_win32.c b/ui/drivers/ui_win32.c index de8d103e9e..b3f7e2daa6 100644 --- a/ui/drivers/ui_win32.c +++ b/ui/drivers/ui_win32.c @@ -187,6 +187,7 @@ static void shader_dlg_params_clear(void) for (i = 0; i < GFX_MAX_PARAMETERS; i++) { + const ui_window_t *window = ui_companion_driver_get_window_ptr(); shader_param_ctrl_t*control = &g_shader_dlg.controls[i]; if (control->type == SHADER_PARAM_CTRL_NONE) @@ -197,7 +198,8 @@ static void shader_dlg_params_clear(void) case SHADER_PARAM_CTRL_NONE: break; case SHADER_PARAM_CTRL_CHECKBOX: - ui_window_win32_destroy(&control->checkbox); + if (window) + window->destroy(&control->checkbox); break; case SHADER_PARAM_CTRL_TRACKBAR: DestroyWindow(control->trackbar.label_title); @@ -216,7 +218,7 @@ void shader_dlg_params_reload(void) RECT parent_rect; int i, pos_x, pos_y; video_shader_ctx_t shader_info; - + const ui_window_t *window = ui_companion_driver_get_window_ptr(); video_shader_driver_get_current_shader(&shader_info); shader_dlg_params_clear(); @@ -295,8 +297,8 @@ void shader_dlg_params_reload(void) } - if (g_shader_dlg.separator.hwnd) - ui_window_win32_destroy(&g_shader_dlg.separator); + if (window && g_shader_dlg.separator.hwnd) + window->destroy(&g_shader_dlg.separator); g_shader_dlg.separator.hwnd = CreateWindowEx(0, "STATIC", "", SS_ETCHEDHORZ | WS_VISIBLE | WS_CHILD, SHADER_DLG_CTRL_X, @@ -325,6 +327,8 @@ static void shader_dlg_update_on_top_state(void) void shader_dlg_show(HWND parent_hwnd) { + const ui_window_t *window = ui_companion_driver_get_window_ptr(); + if (!IsWindowVisible(g_shader_dlg.window.hwnd)) { if (parent_hwnd) @@ -335,7 +339,7 @@ void shader_dlg_show(HWND parent_hwnd) 0, 0, SWP_NOSIZE | SWP_SHOWWINDOW); } else - ui_window_win32_set_visible(&g_shader_dlg.window, true); + window->set_visible(&g_shader_dlg.window, true); shader_dlg_update_on_top_state(); @@ -343,7 +347,7 @@ void shader_dlg_show(HWND parent_hwnd) } - ui_window_win32_set_focused(&g_shader_dlg.window); + window->set_focused(&g_shader_dlg.window); } static LRESULT CALLBACK ShaderDlgWndProc(HWND hwnd, UINT message, @@ -351,6 +355,7 @@ static LRESULT CALLBACK ShaderDlgWndProc(HWND hwnd, UINT message, { int i, pos; video_shader_ctx_t shader_info; + const ui_window_t *window = ui_companion_driver_get_window_ptr(); video_shader_driver_get_current_shader(&shader_info); @@ -362,7 +367,8 @@ static LRESULT CALLBACK ShaderDlgWndProc(HWND hwnd, UINT message, case WM_CLOSE: case WM_DESTROY: case WM_QUIT: - ui_window_win32_set_visible(&g_shader_dlg.window, false); + if (window) + window->set_visible(&g_shader_dlg.window, false); return 0; case WM_COMMAND: diff --git a/ui/drivers/win32/ui_win32_window.c b/ui/drivers/win32/ui_win32_window.c index 0ef6e066ee..49d8a1c244 100644 --- a/ui/drivers/win32/ui_win32_window.c +++ b/ui/drivers/win32/ui_win32_window.c @@ -48,38 +48,38 @@ #include "../../../runloop.h" #include "../../../tasks/tasks_internal.h" -void ui_window_win32_destroy(void *data) +static void ui_window_win32_destroy(void *data) { ui_window_win32_t *window = (ui_window_win32_t*)data; DestroyWindow(window->hwnd); } -void ui_window_win32_set_focused(void *data) +static void ui_window_win32_set_focused(void *data) { ui_window_win32_t *window = (ui_window_win32_t*)data; SetFocus(window->hwnd); } -void ui_window_win32_set_visible(void *data, +static void ui_window_win32_set_visible(void *data, bool set_visible) { ui_window_win32_t *window = (ui_window_win32_t*)data; ShowWindow(window->hwnd, set_visible ? SW_SHOWNORMAL : SW_HIDE); } -void ui_window_win32_set_title(void *data, char *buf) +static void ui_window_win32_set_title(void *data, char *buf) { ui_window_win32_t *window = (ui_window_win32_t*)data; SetWindowText(window->hwnd, buf); } -void ui_window_win32_set_droppable(void *data, bool droppable) +static void ui_window_win32_set_droppable(void *data, bool droppable) { ui_window_win32_t *window = (ui_window_win32_t*)data; DragAcceptFiles(window->hwnd, droppable); } -bool ui_window_win32_focused(void *data) +static bool ui_window_win32_focused(void *data) { ui_window_win32_t *window = (ui_window_win32_t*)data; return (GetForegroundWindow() == window->hwnd); diff --git a/ui/drivers/win32/ui_win32_window.h b/ui/drivers/win32/ui_win32_window.h index 3e6fa6a88d..957b2109b6 100644 --- a/ui/drivers/win32/ui_win32_window.h +++ b/ui/drivers/win32/ui_win32_window.h @@ -37,19 +37,6 @@ typedef struct ui_window_win32 HWND hwnd; } ui_window_win32_t; -void ui_window_win32_set_visible(void *data, - bool set_visible); - -void ui_window_win32_set_focused(void *data); - -void ui_window_win32_destroy(void *data); - -void ui_window_win32_set_title(void *data, char *buf); - -void ui_window_win32_set_droppable(void *data, bool droppable); - -bool ui_window_win32_focused(void *data); - RETRO_END_DECLS #endif