diff --git a/src/gl/render.c b/src/gl/render.c
index 41670016fa3872969e352ea937bf684c5ba987cb..73ce92a4390892e76009478be58d04f916003c08 100644 (file)
--- a/src/gl/render.c
+++ b/src/gl/render.c
}
}
-void R_init (void) {
- int res = 0;
+void R_set_videomode (int w, int h, int fullscreen) {
+ assert(w > 0);
+ assert(h > 0);
+ int was = Y_videomode_setted();
int flags = SYSTEM_USE_OPENGL;
if (fullscreen) {
flags |= SYSTEM_USE_FULLSCREEN;
}
- logo("R_init: intialize opengl render\n");
- int was = Y_videomode_setted();
- if (SCRW <= 0 || SCRH <= 0) {
- ERR_failinit("Invalid screen size %ix%i\n", SCRW, SCRH);
- }
- if (was == 0) {
- R_init_playpal(); // only onece
- }
- res = Y_set_videomode(SCRW, SCRH, flags);
+ int res = Y_set_videomode(w, h, flags);
if (res == 0) {
- ERR_failinit("Unable to set video mode\n");
+ if (was == 0) {
+ ERR_failinit("Unable to set video mode\n");
+ }
+ } else {
+ SCRW = w;
+ SCRH = h;
}
+}
+
+void R_toggle_fullscreen (void) {
+ Y_set_fullscreen(!Y_get_fullscreen());
+ fullscreen = Y_get_fullscreen();
+}
+
+void R_init (void) {
+ logo("R_init: intialize opengl render\n");
+ R_init_playpal();
+ R_set_videomode(SCRW, SCRH, fullscreen);
root = R_cache_new();
assert(root);
R_alloc();
void R_done (void) {
R_cache_free(root, 1);
Y_unset_videomode();
+ root = NULL;
}
void R_setgamma (int g) {
return gamma;
}
-void R_toggle_fullscreen (void) {
- Y_set_fullscreen(!Y_get_fullscreen());
- fullscreen = Y_get_fullscreen();
- R_alloc();
-}
-
void R_get_name (int n, char s[8]) {
assert(n >= 0 && n < 256);
if (walp[n].res == -1) {