graphics: add support for "single buffering"
diff --git a/minuitwrp/graphics.c b/minuitwrp/graphics.c
index b30a92e..3576392 100644
--- a/minuitwrp/graphics.c
+++ b/minuitwrp/graphics.c
@@ -66,6 +66,7 @@
 static GGLSurface gr_framebuffer[2];
 static GGLSurface gr_mem_surface;
 static unsigned gr_active_fb = 0;
+static unsigned double_buffering = 0;
 
 static int gr_fb_fd = -1;
 static int gr_vt_fd = -1;
@@ -199,6 +200,12 @@
 
     fb++;
 
+    /* check if we can use double buffering */
+    if (vi.yres * fi.line_length * 2 > fi.smem_len)
+        return fd;
+
+    double_buffering = 1;
+
     fb->version = sizeof(*fb);
     fb->width = vi.xres;
     fb->height = vi.yres;
@@ -230,7 +237,7 @@
 
 static void set_active_framebuffer(unsigned n)
 {
-    if (n > 1) return;
+    if (n > 1  || !double_buffering) return;
     vi.yres_virtual = vi.yres * 2;
     vi.yoffset = n * vi.yres;
 //    vi.bits_per_pixel = PIXEL_SIZE * 8;
@@ -244,7 +251,8 @@
     GGLContext *gl = gr_context;
 
     /* swap front and back buffers */
-    gr_active_fb = (gr_active_fb + 1) & 1;
+    if (double_buffering)
+        gr_active_fb = (gr_active_fb + 1) & 1;
 
 #ifdef BOARD_HAS_FLIPPED_SCREEN
     /* flip buffer 180 degrees for devices with physicaly inverted screens */