use quad buffering, as emu sometimes runs ahead
authornotaz <notaz@pixelinis>
Sun, 7 Jun 2009 22:57:08 +0000 (01:57 +0300)
committernotaz <notaz@pixelinis>
Sun, 7 Jun 2009 22:57:08 +0000 (01:57 +0300)
gp2x/gp2x.c
video.c

index 2107e61..eeefcf6 100644 (file)
@@ -41,11 +41,11 @@ static volatile u32 *gpsp_gp2x_memregl;
 #ifdef WIZ_BUILD
 #include <linux/fb.h>
 void *gpsp_gp2x_screen;
-static u32 fb_paddr[3];
-static void *fb_vaddr[3];
+#define fb_buf_count 4
+static u32 fb_paddr[fb_buf_count];
+static void *fb_vaddr[fb_buf_count];
 static u32 fb_work_buf;
-const int fb_buf_count = 3;
-static int fb_buf_use = 3;
+static int fb_buf_use;
 
 static void fb_video_init()
 {
@@ -111,6 +111,7 @@ void fb_use_buffers(int count)
   else if (count > fb_buf_count)
     count = fb_buf_count;
   fb_buf_use = count;
+  memset(fb_vaddr[0], 0, 320*240*2*count);
 }
 
 static void fb_video_exit()
diff --git a/video.c b/video.c
index 457a7b5..ada3fea 100644 (file)
--- a/video.c
+++ b/video.c
@@ -3702,10 +3702,7 @@ void video_resolution_small()
   resolution_width = 240;
   resolution_height = 160;
 
-  fb_use_buffers(3);
-  clear_screen(0);
-  flip_screen();
-  clear_screen(0);
+  fb_use_buffers(4);
   flip_screen();
   clear_screen(0);
 }