DirectDraw now attempts fall back to system buffers if initialization has failed, patch from mainline PCem;

The WM_SIZE handler no longer resizes the window if the window is not set to resizable.
This commit is contained in:
OBattler
2017-06-11 19:21:41 +02:00
parent 7b1a96302e
commit c4a6f8dbf4
3 changed files with 39 additions and 14 deletions

View File

@@ -2163,18 +2163,22 @@ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM
break;
}
winsizex = (lParam & 0xFFFF);
winsizey = (lParam >> 16) - (17 + 6);
pause = 1;
MoveWindow(hwndRender, 0, 0, winsizex, winsizey, TRUE);
if (vid_apis[video_fullscreen][vid_api].resize)
if (vid_resize)
{
startblit();
video_wait_for_blit();
endblit();
vid_apis[video_fullscreen][vid_api].resize(winsizex, winsizey);
winsizex = (lParam & 0xFFFF);
winsizey = (lParam >> 16) - (17 + 6);
pause = 1;
MoveWindow(hwndRender, 0, 0, winsizex, winsizey, TRUE);
if (vid_apis[video_fullscreen][vid_api].resize)
{
startblit();
video_wait_for_blit();
endblit();
vid_apis[video_fullscreen][vid_api].resize(winsizex, winsizey);
}
}
MoveWindow(hwndStatus, 0, winsizey + 6, winsizex, 17, TRUE);

View File

@@ -65,7 +65,14 @@ int ddraw_init(HWND h)
ddsd.dwHeight = 2048;
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY;
if (FAILED(lpdd7->CreateSurface(&ddsd, &lpdds_back, NULL)))
return 0;
{
ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
ddsd.dwWidth = 2048;
ddsd.dwHeight = 2048;
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY;
if (FAILED(lpdd7->CreateSurface(&ddsd, &lpdds_back, NULL)))
fatal("CreateSurface back failed\n");
}
memset(&ddsd, 0, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
@@ -75,7 +82,14 @@ int ddraw_init(HWND h)
ddsd.dwHeight = 2048;
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY;
if (FAILED(lpdd7->CreateSurface(&ddsd, &lpdds_back2, NULL)))
return 0;
{
ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
ddsd.dwWidth = 2048;
ddsd.dwHeight = 2048;
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY;
if (FAILED(lpdd7->CreateSurface(&ddsd, &lpdds_back2, NULL)))
fatal("CreateSurface back failed\n");
}
if (FAILED(lpdd7->CreateClipper(0, &lpdd_clipper, NULL)))
return 0;

View File

@@ -78,7 +78,14 @@ int ddraw_fs_init(HWND h)
ddsd.dwHeight = 2048;
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY;
if (FAILED(lpdd7->CreateSurface(&ddsd, &lpdds_back, NULL)))
return 0;
{
ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
ddsd.dwWidth = 2048;
ddsd.dwHeight = 2048;
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY;
if (FAILED(lpdd7->CreateSurface(&ddsd, &lpdds_back, NULL)))
return 0;
}
pclog("DDRAW_INIT complete\n");
ddraw_hwnd = h;