Create win32_get_window

This commit is contained in:
twinaphex 2015-11-17 09:41:18 +01:00
parent f9e4ec72c4
commit 922b679769
5 changed files with 35 additions and 22 deletions

View File

@ -685,3 +685,8 @@ bool win32_has_focus(void)
return GetFocus() == g_hwnd;
}
HWND win32_get_window(void)
{
return g_hwnd;
}

View File

@ -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,

View File

@ -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))

View File

@ -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
}

View File

@ -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;
}