omap: reserve enough memory for 24bpp modes
[pcsx_rearmed.git] / frontend / plat_omap.c
index e5f9ebd..710a45b 100644 (file)
@@ -64,7 +64,7 @@ struct in_default_bind in_evdev_defbinds[] = {
        { 0, 0, 0 }
 };
 
-static int omap_setup_layer_(int fd, int enabled, int x, int y, int w, int h)
+static int omap_setup_layer_(int fd, int enabled, int x, int y, int w, int h, int first_call)
 {
        struct omapfb_plane_info pi;
        struct omapfb_mem_info mi;
@@ -90,11 +90,13 @@ static int omap_setup_layer_(int fd, int enabled, int x, int y, int w, int h)
                        perror("SETUP_PLANE");
        }
 
-       mi.size = 640*512*2*3;
-       ret = ioctl(fd, OMAPFB_SETUP_MEM, &mi);
-       if (ret != 0) {
-               perror("SETUP_MEM");
-               return -1;
+       if (first_call) {
+               mi.size = 640*512*3*3;
+               ret = ioctl(fd, OMAPFB_SETUP_MEM, &mi);
+               if (ret != 0) {
+                       perror("SETUP_MEM");
+                       return -1;
+               }
        }
 
        pi.pos_x = x;
@@ -115,11 +117,7 @@ static int omap_setup_layer_(int fd, int enabled, int x, int y, int w, int h)
 int omap_enable_layer(int enabled)
 {
        return omap_setup_layer_(vout_fbdev_get_fd(layer_fb), enabled,
-               g_layer_x, g_layer_y, g_layer_w, g_layer_h);
-}
-
-void plat_video_menu_enter(int is_rom_loaded)
-{
+               g_layer_x, g_layer_y, g_layer_w, g_layer_h, 0);
 }
 
 void plat_video_menu_begin(void)
@@ -153,7 +151,7 @@ void plat_init(void)
                exit(1);
        }
 
-       ret = omap_setup_layer_(fd, 1, g_layer_x, g_layer_y, g_layer_w, g_layer_h);
+       ret = omap_setup_layer_(fd, 1, g_layer_x, g_layer_y, g_layer_w, g_layer_h, 1);
        close(fd);
        if (ret != 0) {
                fprintf(stderr, "failed to set up layer, exiting.\n");
@@ -187,7 +185,6 @@ void plat_init(void)
                goto fail1;
        }
        g_menubg_ptr = temp_frame;
-       g_menubg_src_ptr = temp_frame;
 
        in_set_config(in_name_to_id("evdev:gpio-keys"), IN_CFG_KEY_NAMES,
                      pandora_gpio_keys, sizeof(pandora_gpio_keys));
@@ -201,3 +198,11 @@ fail0:
 
 }
 
+void plat_finish(void)
+{
+       omap_enable_layer(0);
+       vout_fbdev_finish(layer_fb);
+       vout_fbdev_finish(main_fb);
+       oshide_finish();
+}
+