Fixed taking screenshots with DirectDraw;
Reenabled minimizing the window - it no longer crashes the emulator.
This commit is contained in:
15
src/pc.c
15
src/pc.c
@@ -152,7 +152,19 @@ int64_t main_time;
|
|||||||
|
|
||||||
|
|
||||||
static int unscaled_size_x = SCREEN_RES_X, /* current unscaled size X */
|
static int unscaled_size_x = SCREEN_RES_X, /* current unscaled size X */
|
||||||
unscaled_size_y = SCREEN_RES_Y; /* current unscaled size Y */
|
unscaled_size_y = SCREEN_RES_Y, /* current unscaled size Y */
|
||||||
|
efscrnsz_y = SCREEN_RES_Y;
|
||||||
|
|
||||||
|
|
||||||
|
int get_actual_size_x(void)
|
||||||
|
{
|
||||||
|
return unscaled_size_x;
|
||||||
|
}
|
||||||
|
|
||||||
|
int get_actual_size_y(void)
|
||||||
|
{
|
||||||
|
return efscrnsz_y;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Log something to the logfile or stdout. */
|
/* Log something to the logfile or stdout. */
|
||||||
@@ -210,7 +222,6 @@ set_screen_size(int x, int y)
|
|||||||
int temp_overscan_x = overscan_x;
|
int temp_overscan_x = overscan_x;
|
||||||
int temp_overscan_y = overscan_y;
|
int temp_overscan_y = overscan_y;
|
||||||
double dx, dy, dtx, dty;
|
double dx, dy, dtx, dty;
|
||||||
int efscrnsz_y;
|
|
||||||
|
|
||||||
/* Make sure we keep usable values. */
|
/* Make sure we keep usable values. */
|
||||||
#if 0
|
#if 0
|
||||||
|
@@ -218,6 +218,9 @@ extern void video_update_timing(void);
|
|||||||
|
|
||||||
extern void loadfont(wchar_t *s, int format);
|
extern void loadfont(wchar_t *s, int format);
|
||||||
|
|
||||||
|
extern int get_actual_size_x(void);
|
||||||
|
extern int get_actual_size_y(void);
|
||||||
|
|
||||||
#ifdef ENABLE_VRAM_DUMP
|
#ifdef ENABLE_VRAM_DUMP
|
||||||
extern void svga_dump_vram(void);
|
extern void svga_dump_vram(void);
|
||||||
#endif
|
#endif
|
||||||
|
@@ -963,10 +963,10 @@ WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpszArg, int nFunsterStil)
|
|||||||
/* Set up main window for resizing if configured. */
|
/* Set up main window for resizing if configured. */
|
||||||
if (vid_resize)
|
if (vid_resize)
|
||||||
SetWindowLongPtr(hwnd, GWL_STYLE,
|
SetWindowLongPtr(hwnd, GWL_STYLE,
|
||||||
(WS_OVERLAPPEDWINDOW&~WS_MINIMIZEBOX));
|
(WS_OVERLAPPEDWINDOW));
|
||||||
else
|
else
|
||||||
SetWindowLongPtr(hwnd, GWL_STYLE,
|
SetWindowLongPtr(hwnd, GWL_STYLE,
|
||||||
(WS_OVERLAPPEDWINDOW&~WS_SIZEBOX&~WS_THICKFRAME&~WS_MAXIMIZEBOX&~WS_MINIMIZEBOX));
|
(WS_OVERLAPPEDWINDOW&~WS_SIZEBOX&~WS_THICKFRAME&~WS_MAXIMIZEBOX));
|
||||||
|
|
||||||
/* Move to the last-saved position if needed. */
|
/* Move to the last-saved position if needed. */
|
||||||
if (window_remember)
|
if (window_remember)
|
||||||
|
@@ -353,6 +353,7 @@ ddraw_blit(int x, int y, int y1, int y2, int w, int h)
|
|||||||
void
|
void
|
||||||
ddraw_take_screenshot(wchar_t *fn)
|
ddraw_take_screenshot(wchar_t *fn)
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
xs = xsize;
|
xs = xsize;
|
||||||
ys = ys2 = ysize;
|
ys = ys2 = ysize;
|
||||||
|
|
||||||
@@ -369,6 +370,15 @@ ddraw_take_screenshot(wchar_t *fn)
|
|||||||
else
|
else
|
||||||
ys += overscan_y;
|
ys += overscan_y;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
xs = get_actual_size_x();
|
||||||
|
ys = ys2 = get_actual_size_y();
|
||||||
|
|
||||||
|
if (ysize <= 250) {
|
||||||
|
ys >>= 1;
|
||||||
|
ys2 >>= 1;
|
||||||
|
}
|
||||||
|
|
||||||
CopySurface(lpdds_back2);
|
CopySurface(lpdds_back2);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user