From 603ed3829721afffbbb7cc74b65849a8fd7a2062 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Wed, 8 Apr 2009 07:55:52 +0000 Subject: [PATCH] Fixed a potentially dangerous bug : the palette setup screen was reading things in an area just released when closing the window ! Makes the palette sliders work correctly for me. git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@744 416bcca6-2ee7-4201-b75f-2eb2f807beb1 --- palette.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/palette.c b/palette.c index 1c7858a6..1e14ccee 100644 --- a/palette.c +++ b/palette.c @@ -2110,6 +2110,7 @@ void Button_Secondary_palette(void) T_Scroller_button * rgb_scale_slider; char str[4]; byte palette_vertical = Config.Palette_vertical; + byte palette_cols, palette_lines, rgb_scale; byte palette_needs_redraw=0; Open_window(200,146,"Palettes"); @@ -2156,18 +2157,22 @@ void Button_Secondary_palette(void) switch(clicked_button) { case 5: + // Column slider Num2str(256-Window_attribute2,str,3); Print_in_window(38,89,str,MC_Black,MC_Light); break; case 6: + // Line slider Num2str(16-Window_attribute2,str,3); Print_in_window(94,89,str,MC_Black,MC_Light); break; case 7: + // RGB scale slider Num2str(256-Window_attribute2,str,3); Print_in_window(157,89,str,MC_Black,MC_Light); break; case 8: + // Vertical switch palette_vertical = !palette_vertical; Hide_cursor(); Print_in_window(38,108,(palette_vertical)?"X":" ",MC_Black,MC_Light); @@ -2177,6 +2182,11 @@ void Button_Secondary_palette(void) } while (clicked_button!=1 && clicked_button!=3 && clicked_button!=4); + // We need to get the sliders positions before closing the window, because they will be freed. + palette_cols=256-columns_slider->Position; + palette_lines=16-lines_slider->Position; + rgb_scale=256-rgb_scale_slider->Position; + Close_window(); Unselect_bouton(BUTTON_PALETTE); Display_cursor(); @@ -2189,16 +2199,16 @@ void Button_Secondary_palette(void) Config.Palette_vertical=palette_vertical; palette_needs_redraw=1; } - if (columns_slider->Position!=256-Config.Palette_cells_X || - lines_slider->Position!=16-Config.Palette_cells_Y) + if (palette_cols!=Config.Palette_cells_X || + palette_lines!=Config.Palette_cells_Y) { - Config.Palette_cells_X = 256-columns_slider->Position; - Config.Palette_cells_Y = 16-lines_slider->Position; + Config.Palette_cells_X = palette_cols; + Config.Palette_cells_Y = palette_lines; palette_needs_redraw=1; } - if (rgb_scale_slider->Position!=256-RGB_scale) + if (rgb_scale!=RGB_scale) { - Set_palette_RGB_scale(256-rgb_scale_slider->Position); + Set_palette_RGB_scale(rgb_scale); Set_palette(Main_palette); }