From 1f60018acdf6970bdc72cd1496b1b0ecca7507e3 Mon Sep 17 00:00:00 2001 From: "Miso Zmiric (Mike Squinter)" Date: Mon, 24 Nov 2014 22:02:04 +0000 Subject: [PATCH 1/2] fix crash on window size decrease --- src/drawing/drawing.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/drawing/drawing.c b/src/drawing/drawing.c index 4ac9b14ac3..339581ed27 100644 --- a/src/drawing/drawing.c +++ b/src/drawing/drawing.c @@ -500,12 +500,18 @@ void redraw_peep_and_rain() if (rain_no_pixels == 0) { return; } + rct_window *window = window_get_main(); + uint32 pixels = window->width * window->height; uint32 *rain_pixels = RCT2_ADDRESS(RCT2_ADDRESS_RAIN_PIXEL_STORE, uint32); if (rain_pixels) { uint8 *screen_pixels = RCT2_ADDRESS(RCT2_ADDRESS_SCREEN_DPI, rct_drawpixelinfo)->bits; for (int i = 0; i < rain_no_pixels; i++) { uint32 pixel = rain_pixels[i]; + if (pixel >> 8 > pixels) { + log_verbose("Pixel error, skipping rain draw in this frame"); + break; + } screen_pixels[pixel >> 8] = pixel & 0xFF; } RCT2_GLOBAL(0x009E2C78, uint32) = 1; From b75612467afa1f878c268229b6f5f99cf5291440 Mon Sep 17 00:00:00 2001 From: "Miso Zmiric (Mike Squinter)" Date: Mon, 24 Nov 2014 22:07:28 +0000 Subject: [PATCH 2/2] rename to follow convention and add the hack comment --- src/drawing/drawing.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/drawing/drawing.c b/src/drawing/drawing.c index 339581ed27..c206a26834 100644 --- a/src/drawing/drawing.c +++ b/src/drawing/drawing.c @@ -501,14 +501,15 @@ void redraw_peep_and_rain() return; } rct_window *window = window_get_main(); - uint32 pixels = window->width * window->height; + uint32 numPixels = window->width * window->height; uint32 *rain_pixels = RCT2_ADDRESS(RCT2_ADDRESS_RAIN_PIXEL_STORE, uint32); if (rain_pixels) { uint8 *screen_pixels = RCT2_ADDRESS(RCT2_ADDRESS_SCREEN_DPI, rct_drawpixelinfo)->bits; for (int i = 0; i < rain_no_pixels; i++) { uint32 pixel = rain_pixels[i]; - if (pixel >> 8 > pixels) { + //HACK + if (pixel >> 8 > numPixels) { log_verbose("Pixel error, skipping rain draw in this frame"); break; }