fix d3d9 alt+tab and alt+enter on windows 7
This commit is contained in:
parent
bbd430bd1e
commit
85563ef06b
2 changed files with 15 additions and 1 deletions
11
src/utils.c
11
src/utils.c
|
@ -371,6 +371,17 @@ void util_toggle_fullscreen()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (g_ddraw->render.thread)
|
||||||
|
{
|
||||||
|
EnterCriticalSection(&g_ddraw->cs);
|
||||||
|
g_ddraw->render.run = FALSE;
|
||||||
|
ReleaseSemaphore(g_ddraw->render.sem, 1, NULL);
|
||||||
|
LeaveCriticalSection(&g_ddraw->cs);
|
||||||
|
|
||||||
|
WaitForSingleObject(g_ddraw->render.thread, INFINITE);
|
||||||
|
g_ddraw->render.thread = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
ChangeDisplaySettings(NULL, g_ddraw->bnet_active ? CDS_FULLSCREEN : 0);
|
ChangeDisplaySettings(NULL, g_ddraw->bnet_active ? CDS_FULLSCREEN : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -487,7 +487,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||||
" hwndInsertAfter=%p, x=%d, y=%d, cx=%d, cy=%d\n",
|
" hwndInsertAfter=%p, x=%d, y=%d, cx=%d, cy=%d\n",
|
||||||
pos->hwndInsertAfter, pos->x, pos->y, pos->cx, pos->cy);
|
pos->hwndInsertAfter, pos->x, pos->y, pos->cx, pos->cy);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* workaround for a bug where sometimes a background window steals the focus */
|
/* workaround for a bug where sometimes a background window steals the focus */
|
||||||
if (g_mouse_locked)
|
if (g_mouse_locked)
|
||||||
{
|
{
|
||||||
|
@ -529,6 +529,9 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||||
{
|
{
|
||||||
if (g_ddraw->renderer != d3d9_render_main || g_ddraw->nonexclusive)
|
if (g_ddraw->renderer != d3d9_render_main || g_ddraw->nonexclusive)
|
||||||
{
|
{
|
||||||
|
if (g_ddraw->renderer == d3d9_render_main) /* Needed for Windows 7 */
|
||||||
|
real_ShowWindow(g_ddraw->hwnd, SW_RESTORE);
|
||||||
|
|
||||||
ChangeDisplaySettings(&g_ddraw->render.mode, CDS_FULLSCREEN);
|
ChangeDisplaySettings(&g_ddraw->render.mode, CDS_FULLSCREEN);
|
||||||
real_ShowWindow(g_ddraw->hwnd, SW_RESTORE);
|
real_ShowWindow(g_ddraw->hwnd, SW_RESTORE);
|
||||||
mouse_lock();
|
mouse_lock();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue