Skip to content

Commit 05926e7

Browse files
callsopejaquay
authored andcommitted
Don't record the maximized window size
1 parent 0cee514 commit 05926e7

File tree

3 files changed

+29
-9
lines changed

3 files changed

+29
-9
lines changed

DirectDrawInterface.cpp

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,19 @@ bool CreateDDWindow(SystemState *CWState)
248248
return TRUE;
249249
}
250250

251+
/*--------------------------------------------------------------------------*/
252+
253+
254+
bool IsMaximized(SystemState* DFState)
255+
{
256+
WINDOWPLACEMENT wp;
257+
memset(&wp, 0, sizeof(wp));
258+
wp.length = sizeof(wp);
259+
GetWindowPlacement(DFState->WindowHandle, &wp);
260+
return wp.showCmd == SW_MAXIMIZE;
261+
}
262+
263+
251264
void DisplayFlip(SystemState *DFState) // Double buffering flip
252265
{
253266
if (g_Display)
@@ -284,18 +297,22 @@ void DisplayFlip(SystemState *DFState) // Double buffering flip
284297
int clientWidth = (int)CurScreen.right;
285298
int clientHeight = (int)CurScreen.bottom;
286299

300+
if (!IsMaximized(DFState) && !DFState->FullScreen && !DFState->Exiting)
301+
{
287302
#if USE_DEFAULT_POSITIONING
288-
// preserve default positioning (like older versions):
289-
RememberWin.x = RememberWin.IsDefaultX() ? CW_USEDEFAULT : CurWindow.left;
290-
RememberWin.y = RememberWin.IsDefaultY() ? CW_USEDEFAULT : CurWindow.top;
303+
// preserve default positioning (like older versions):
304+
RememberWin.x = RememberWin.IsDefaultX() ? CW_USEDEFAULT : CurWindow.left;
305+
RememberWin.y = RememberWin.IsDefaultY() ? CW_USEDEFAULT : CurWindow.top;
291306
#else // !USE_DEFAULT_POSITIONING
292-
// remember positioning:
293-
RememberWin.x = CurWindow.left;
294-
RememberWin.y = CurWindow.top;
307+
// remember positioning:
308+
RememberWin.x = CurWindow.left;
309+
RememberWin.y = CurWindow.top;
295310
#endif // !USE_DEFAULT_POSITIONING
296-
// remember size:
297-
RememberWin.w = clientWidth; // Used for saving new window size to the ini file.
298-
RememberWin.h = clientHeight-StatusBarHeight;
311+
312+
// remember size:
313+
RememberWin.w = clientWidth; // Used for saving new window size to the ini file.
314+
RememberWin.h = clientHeight - StatusBarHeight;
315+
}
299316
return;
300317
}
301318

Vcc.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ int APIENTRY WinMain(HINSTANCE hInstance,
158158
EmuState.Throttle = 1;
159159
EmuState.WindowSize.w=DefaultWidth;
160160
EmuState.WindowSize.h=DefaultHeight;
161+
EmuState.Exiting = false;
161162
LoadConfig(&EmuState);
162163
EmuState.ResetPending=2; // after LoadConfig pls
163164
InitInstance(hInstance, nCmdShow);
@@ -217,6 +218,7 @@ int APIENTRY WinMain(HINSTANCE hInstance,
217218
TranslateMessage(&Msg);
218219
DispatchMessage(&Msg) ;
219220
}
221+
EmuState.Exiting = true;
220222

221223
PostThreadMessage(threadID, WM_QUIT, 0, 0);
222224
SetEvent(hEMUQuit); // Signal emulation thread to finish up.

defines.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@ struct SystemState
244244
unsigned char ResetPending;
245245
VCC::Size WindowSize;
246246
unsigned char FullScreen;
247+
bool Exiting;
247248
unsigned char MousePointer;
248249
unsigned char OverclockFlag;
249250
char StatusLine[256];

0 commit comments

Comments
 (0)