DEADSOFTWARE

software: fix crashes on buffer resize
[flatwaifu.git] / src / soft / render.c
index aaaea63749ccb2f9d8c947794fa4dd212601cb53..bda872709396df868677befde09a226678e5b2b4 100644 (file)
@@ -1354,21 +1354,24 @@ void R_set_videomode (int w, int h, int fullscreen) {
   assert(w > 0);
   assert(h > 0);
   int was = Y_videomode_setted();
-  int res = Y_set_videomode(w, h, fullscreen ? SYSTEM_USE_FULLSCREEN : 0);
+  int res = Y_set_videomode_software(w, h, fullscreen);
   if (res == 0) {
     if (was == 0) {
       ERR_failinit("Unable to set video mode");
     }
   } else {
-    SCRW = w;
-    SCRH = h;
-    Y_get_buffer(&buffer, &buf_w, &buf_h, &pitch);
+    Y_get_videomode(&SCRW, &SCRH);
+    V_update_buffer();
+    R_setgamma(gammaa);
   }
 }
 
 void R_toggle_fullscreen (void) {
   Y_set_fullscreen(!Y_get_fullscreen());
   fullscreen = Y_get_fullscreen();
+  Y_get_videomode(&SCRW, &SCRH);
+  V_update_buffer();
+  R_setgamma(gammaa);
 }
 
 void R_init () {
@@ -1381,7 +1384,6 @@ void R_init () {
   F_loadres(F_getresid("MIXMAP"), mixmap, 0, 0x10000);
   F_loadres(F_getresid("COLORMAP"), clrmap, 0, 256*12);
   R_set_videomode(SCRW, SCRH, fullscreen);
-  R_setgamma(gammaa);
   V_setrect(0, SCRW, 0, SCRH);
   V_clr(0, SCRW, 0, SCRH, 0);
   R_alloc();