mirror of
https://github.com/libretro/RetroArch
synced 2025-02-04 21:40:02 +00:00
Move WndProc to win32_common.c
This commit is contained in:
parent
8f6deb9dac
commit
3c5f4bd243
@ -31,6 +31,13 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef _XBOX
|
#ifndef _XBOX
|
||||||
|
unsigned g_resize_width;
|
||||||
|
unsigned g_resize_height;
|
||||||
|
unsigned g_pos_x = CW_USEDEFAULT;
|
||||||
|
unsigned g_pos_y = CW_USEDEFAULT;
|
||||||
|
bool g_resized;
|
||||||
|
bool g_quit;
|
||||||
|
|
||||||
/* Power Request APIs */
|
/* Power Request APIs */
|
||||||
|
|
||||||
typedef REASON_CONTEXT POWER_REQUEST_CONTEXT, *PPOWER_REQUEST_CONTEXT, *LPPOWER_REQUEST_CONTEXT;
|
typedef REASON_CONTEXT POWER_REQUEST_CONTEXT, *PPOWER_REQUEST_CONTEXT, *LPPOWER_REQUEST_CONTEXT;
|
||||||
@ -133,7 +140,69 @@ void win32_monitor_info(void *data, void *hm_data, unsigned *mon_id)
|
|||||||
GetMonitorInfo(*hm_to_use, (MONITORINFO*)mon);
|
GetMonitorInfo(*hm_to_use, (MONITORINFO*)mon);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool win32_window_init(WNDCLASSEX *wndclass, LRESULT CALLBACK WndProc)
|
static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
|
||||||
|
WPARAM wparam, LPARAM lparam)
|
||||||
|
{
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
|
switch (message)
|
||||||
|
{
|
||||||
|
case WM_SYSCOMMAND:
|
||||||
|
/* Prevent screensavers, etc, while running. */
|
||||||
|
switch (wparam)
|
||||||
|
{
|
||||||
|
case SC_SCREENSAVE:
|
||||||
|
case SC_MONITORPOWER:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WM_CHAR:
|
||||||
|
case WM_KEYDOWN:
|
||||||
|
case WM_KEYUP:
|
||||||
|
case WM_SYSKEYUP:
|
||||||
|
case WM_SYSKEYDOWN:
|
||||||
|
return win32_handle_keyboard_event(hwnd, message, wparam, lparam);
|
||||||
|
|
||||||
|
case WM_CREATE:
|
||||||
|
create_gl_context(hwnd);
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
case WM_CLOSE:
|
||||||
|
case WM_DESTROY:
|
||||||
|
case WM_QUIT:
|
||||||
|
{
|
||||||
|
WINDOWPLACEMENT placement;
|
||||||
|
GetWindowPlacement(g_hwnd, &placement);
|
||||||
|
g_pos_x = placement.rcNormalPosition.left;
|
||||||
|
g_pos_y = placement.rcNormalPosition.top;
|
||||||
|
g_quit = true;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case WM_SIZE:
|
||||||
|
/* Do not send resize message if we minimize. */
|
||||||
|
if (wparam != SIZE_MAXHIDE && wparam != SIZE_MINIMIZED)
|
||||||
|
{
|
||||||
|
g_resize_width = LOWORD(lparam);
|
||||||
|
g_resize_height = HIWORD(lparam);
|
||||||
|
g_resized = true;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
case WM_COMMAND:
|
||||||
|
if (settings->ui.menubar_enable)
|
||||||
|
{
|
||||||
|
LRESULT ret = win32_menu_loop(g_hwnd, wparam);
|
||||||
|
(void)ret;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dinput_handle_message(dinput_wgl, message, wparam, lparam))
|
||||||
|
return 0;
|
||||||
|
return DefWindowProc(hwnd, message, wparam, lparam);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool win32_window_init(WNDCLASSEX *wndclass)
|
||||||
{
|
{
|
||||||
wndclass->cbSize = sizeof(*wndclass);
|
wndclass->cbSize = sizeof(*wndclass);
|
||||||
wndclass->style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
|
wndclass->style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
|
||||||
|
@ -35,6 +35,13 @@ extern "C" {
|
|||||||
#ifndef _XBOX
|
#ifndef _XBOX
|
||||||
#include "../drivers_wm/win32_resource.h"
|
#include "../drivers_wm/win32_resource.h"
|
||||||
|
|
||||||
|
extern unsigned g_resize_width;
|
||||||
|
extern unsigned g_resize_height;
|
||||||
|
extern unsigned g_pos_x;
|
||||||
|
extern unsigned g_pos_y;
|
||||||
|
extern bool g_resized;
|
||||||
|
extern bool g_quit;
|
||||||
|
|
||||||
LRESULT win32_handle_keyboard_event(HWND hwnd, UINT message,
|
LRESULT win32_handle_keyboard_event(HWND hwnd, UINT message,
|
||||||
WPARAM wparam, LPARAM lparam);
|
WPARAM wparam, LPARAM lparam);
|
||||||
|
|
||||||
@ -48,7 +55,9 @@ void win32_monitor_get_info(void);
|
|||||||
|
|
||||||
void win32_monitor_info(void *data, void *hm_data, unsigned *mon_id);
|
void win32_monitor_info(void *data, void *hm_data, unsigned *mon_id);
|
||||||
|
|
||||||
bool win32_window_init(WNDCLASSEX *wndclass, LRESULT CALLBACK WndProc);
|
bool win32_window_init(WNDCLASSEX *wndclass);
|
||||||
|
|
||||||
|
void create_gl_context(HWND hwnd);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool win32_suppress_screensaver(void *data, bool enable);
|
bool win32_suppress_screensaver(void *data, bool enable);
|
||||||
|
@ -75,16 +75,10 @@ static HDC g_hdc;
|
|||||||
static unsigned g_major;
|
static unsigned g_major;
|
||||||
static unsigned g_minor;
|
static unsigned g_minor;
|
||||||
|
|
||||||
static bool g_quit;
|
bool g_quit;
|
||||||
static bool g_inited;
|
static bool g_inited;
|
||||||
static unsigned g_interval;
|
static unsigned g_interval;
|
||||||
|
|
||||||
static unsigned g_resize_width;
|
|
||||||
static unsigned g_resize_height;
|
|
||||||
static unsigned g_pos_x = CW_USEDEFAULT;
|
|
||||||
static unsigned g_pos_y = CW_USEDEFAULT;
|
|
||||||
static bool g_resized;
|
|
||||||
|
|
||||||
static dylib_t dll_handle = NULL; /* Handle to OpenGL32.dll */
|
static dylib_t dll_handle = NULL; /* Handle to OpenGL32.dll */
|
||||||
|
|
||||||
static bool g_restore_desktop;
|
static bool g_restore_desktop;
|
||||||
@ -111,8 +105,7 @@ static void setup_pixel_format(HDC hdc)
|
|||||||
SetPixelFormat(hdc, ChoosePixelFormat(hdc, &pfd), &pfd);
|
SetPixelFormat(hdc, ChoosePixelFormat(hdc, &pfd), &pfd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void create_gl_context(HWND hwnd)
|
||||||
static void create_gl_context(HWND hwnd)
|
|
||||||
{
|
{
|
||||||
bool core_context;
|
bool core_context;
|
||||||
const struct retro_hw_render_callback *hw_render =
|
const struct retro_hw_render_callback *hw_render =
|
||||||
@ -243,68 +236,6 @@ bool dinput_handle_message(void *dinput, UINT message, WPARAM wParam, LPARAM lPa
|
|||||||
|
|
||||||
static void *dinput_wgl;
|
static void *dinput_wgl;
|
||||||
|
|
||||||
static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
|
|
||||||
WPARAM wparam, LPARAM lparam)
|
|
||||||
{
|
|
||||||
settings_t *settings = config_get_ptr();
|
|
||||||
|
|
||||||
switch (message)
|
|
||||||
{
|
|
||||||
case WM_SYSCOMMAND:
|
|
||||||
/* Prevent screensavers, etc, while running. */
|
|
||||||
switch (wparam)
|
|
||||||
{
|
|
||||||
case SC_SCREENSAVE:
|
|
||||||
case SC_MONITORPOWER:
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case WM_CHAR:
|
|
||||||
case WM_KEYDOWN:
|
|
||||||
case WM_KEYUP:
|
|
||||||
case WM_SYSKEYUP:
|
|
||||||
case WM_SYSKEYDOWN:
|
|
||||||
return win32_handle_keyboard_event(hwnd, message, wparam, lparam);
|
|
||||||
|
|
||||||
case WM_CREATE:
|
|
||||||
create_gl_context(hwnd);
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
case WM_CLOSE:
|
|
||||||
case WM_DESTROY:
|
|
||||||
case WM_QUIT:
|
|
||||||
{
|
|
||||||
WINDOWPLACEMENT placement;
|
|
||||||
GetWindowPlacement(g_hwnd, &placement);
|
|
||||||
g_pos_x = placement.rcNormalPosition.left;
|
|
||||||
g_pos_y = placement.rcNormalPosition.top;
|
|
||||||
g_quit = true;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case WM_SIZE:
|
|
||||||
/* Do not send resize message if we minimize. */
|
|
||||||
if (wparam != SIZE_MAXHIDE && wparam != SIZE_MINIMIZED)
|
|
||||||
{
|
|
||||||
g_resize_width = LOWORD(lparam);
|
|
||||||
g_resize_height = HIWORD(lparam);
|
|
||||||
g_resized = true;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
case WM_COMMAND:
|
|
||||||
if (settings->ui.menubar_enable)
|
|
||||||
{
|
|
||||||
LRESULT ret = win32_menu_loop(g_hwnd, wparam);
|
|
||||||
(void)ret;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dinput_handle_message(dinput_wgl, message, wparam, lparam))
|
|
||||||
return 0;
|
|
||||||
return DefWindowProc(hwnd, message, wparam, lparam);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void gfx_ctx_wgl_swap_interval(void *data, unsigned interval)
|
static void gfx_ctx_wgl_swap_interval(void *data, unsigned interval)
|
||||||
{
|
{
|
||||||
(void)data;
|
(void)data;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user