mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-25 01:57:47 +01:00
forward all input to video window
This commit is contained in:
parent
65969de0bd
commit
ddfae6cd67
2
inc/dd.h
2
inc/dd.h
@ -136,7 +136,7 @@ typedef struct CNCDDRAW
|
|||||||
void* last_freed_palette; /* Dungeon Keeper hack */
|
void* last_freed_palette; /* Dungeon Keeper hack */
|
||||||
void* last_freed_surface; /* Nox hack */
|
void* last_freed_surface; /* Nox hack */
|
||||||
BOOL child_window_exists;
|
BOOL child_window_exists;
|
||||||
BOOL video_window_exists;
|
HWND video_window_hwnd;
|
||||||
BOOL got_child_windows;
|
BOOL got_child_windows;
|
||||||
DWORD last_set_window_pos_tick; /* WINE hack */
|
DWORD last_set_window_pos_tick; /* WINE hack */
|
||||||
SPEEDLIMITER ticks_limiter;
|
SPEEDLIMITER ticks_limiter;
|
||||||
|
@ -540,7 +540,8 @@ DWORD WINAPI d3d9_render_main(void)
|
|||||||
|
|
||||||
if (g_config.fixchilds)
|
if (g_config.fixchilds)
|
||||||
{
|
{
|
||||||
g_ddraw->child_window_exists = g_ddraw->video_window_exists = FALSE;
|
g_ddraw->child_window_exists = FALSE;
|
||||||
|
InterlockedExchangePointer(&g_ddraw->video_window_hwnd, NULL);
|
||||||
EnumChildWindows(g_ddraw->hwnd, util_enum_child_proc, (LPARAM)g_ddraw->primary);
|
EnumChildWindows(g_ddraw->hwnd, util_enum_child_proc, (LPARAM)g_ddraw->primary);
|
||||||
|
|
||||||
if (g_ddraw->render.width != g_ddraw->width || g_ddraw->render.height != g_ddraw->height)
|
if (g_ddraw->render.width != g_ddraw->width || g_ddraw->render.height != g_ddraw->height)
|
||||||
|
@ -83,7 +83,8 @@ DWORD WINAPI gdi_render_main(void)
|
|||||||
|
|
||||||
if (g_config.fixchilds)
|
if (g_config.fixchilds)
|
||||||
{
|
{
|
||||||
g_ddraw->child_window_exists = g_ddraw->video_window_exists = FALSE;
|
g_ddraw->child_window_exists = FALSE;
|
||||||
|
InterlockedExchangePointer(&g_ddraw->video_window_hwnd, NULL);
|
||||||
EnumChildWindows(g_ddraw->hwnd, util_enum_child_proc, (LPARAM)g_ddraw->primary);
|
EnumChildWindows(g_ddraw->hwnd, util_enum_child_proc, (LPARAM)g_ddraw->primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -769,7 +769,8 @@ static void ogl_render()
|
|||||||
|
|
||||||
if (g_config.fixchilds)
|
if (g_config.fixchilds)
|
||||||
{
|
{
|
||||||
g_ddraw->child_window_exists = g_ddraw->video_window_exists = FALSE;
|
g_ddraw->child_window_exists = FALSE;
|
||||||
|
InterlockedExchangePointer(&g_ddraw->video_window_hwnd, NULL);
|
||||||
EnumChildWindows(g_ddraw->hwnd, util_enum_child_proc, (LPARAM)g_ddraw->primary);
|
EnumChildWindows(g_ddraw->hwnd, util_enum_child_proc, (LPARAM)g_ddraw->primary);
|
||||||
|
|
||||||
if (g_ddraw->render.width != g_ddraw->width || g_ddraw->render.height != g_ddraw->height)
|
if (g_ddraw->render.width != g_ddraw->width || g_ddraw->render.height != g_ddraw->height)
|
||||||
|
@ -476,7 +476,7 @@ BOOL CALLBACK util_enum_child_proc(HWND hwnd, LPARAM lparam)
|
|||||||
strcmp(class_name, "Afx:400000:3") == 0 ||
|
strcmp(class_name, "Afx:400000:3") == 0 ||
|
||||||
strcmp(class_name, "MCIWndClass") == 0)
|
strcmp(class_name, "MCIWndClass") == 0)
|
||||||
{
|
{
|
||||||
g_ddraw->video_window_exists = TRUE;
|
InterlockedExchangePointer(&g_ddraw->video_window_hwnd, hwnd);
|
||||||
|
|
||||||
LONG style = real_GetWindowLongA(hwnd, GWL_EXSTYLE);
|
LONG style = real_GetWindowLongA(hwnd, GWL_EXSTYLE);
|
||||||
|
|
||||||
|
@ -729,10 +729,11 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_ddraw->video_window_exists)
|
HWND video_hwnd = (HWND)InterlockedExchangeAdd((LONG*)&g_ddraw->video_window_hwnd, 0);
|
||||||
|
if (video_hwnd)
|
||||||
{
|
{
|
||||||
if (wParam != VK_ESCAPE)
|
PostMessageA(video_hwnd, uMsg, wParam, lParam);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -742,10 +743,11 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
|||||||
if (g_config.hotkeys.screenshot && wParam == g_config.hotkeys.screenshot)
|
if (g_config.hotkeys.screenshot && wParam == g_config.hotkeys.screenshot)
|
||||||
ss_take_screenshot(g_ddraw->primary);
|
ss_take_screenshot(g_ddraw->primary);
|
||||||
|
|
||||||
if (g_ddraw->video_window_exists)
|
HWND video_hwnd = (HWND)InterlockedExchangeAdd((LONG*)&g_ddraw->video_window_hwnd, 0);
|
||||||
|
if (video_hwnd)
|
||||||
{
|
{
|
||||||
if (wParam != VK_ESCAPE)
|
PostMessageA(video_hwnd, uMsg, wParam, lParam);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -796,8 +798,10 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
|||||||
case WM_MBUTTONDOWN:
|
case WM_MBUTTONDOWN:
|
||||||
case WM_MOUSEMOVE:
|
case WM_MOUSEMOVE:
|
||||||
{
|
{
|
||||||
if (g_ddraw->video_window_exists)
|
HWND video_hwnd = (HWND)InterlockedExchangeAdd((LONG*)&g_ddraw->video_window_hwnd, 0);
|
||||||
|
if (video_hwnd)
|
||||||
{
|
{
|
||||||
|
PostMessageA(video_hwnd, uMsg, wParam, lParam);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user