mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 07:17:45 -04:00
pandora: use automatic tv layer switch
This commit is contained in:
parent
334d9fb654
commit
55d7dcb209
2 changed files with 31 additions and 10 deletions
|
@ -1 +1 @@
|
||||||
Subproject commit 18306c325f0d24fc7232dff055e814432e06d5d1
|
Subproject commit 1bc471ebf1c85cf78f1862f5596a76f051e7112d
|
|
@ -33,6 +33,8 @@
|
||||||
|
|
||||||
#include <pico/pico_int.h>
|
#include <pico/pico_int.h>
|
||||||
|
|
||||||
|
#define LAYER_MEM_SIZE (320*240*2 * 4)
|
||||||
|
|
||||||
static struct vout_fbdev *main_fb, *layer_fb;
|
static struct vout_fbdev *main_fb, *layer_fb;
|
||||||
// g_layer_* - in use, g_layer_c* - configured custom
|
// g_layer_* - in use, g_layer_c* - configured custom
|
||||||
int g_layer_cx, g_layer_cy, g_layer_cw, g_layer_ch;
|
int g_layer_cx, g_layer_cy, g_layer_cw, g_layer_ch;
|
||||||
|
@ -239,6 +241,8 @@ static int pnd_setup_layer_(int fd, int enabled, int x, int y, int w, int h)
|
||||||
{
|
{
|
||||||
struct omapfb_plane_info pi;
|
struct omapfb_plane_info pi;
|
||||||
struct omapfb_mem_info mi;
|
struct omapfb_mem_info mi;
|
||||||
|
int is_enabled;
|
||||||
|
int retval = 0;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = ioctl(fd, OMAPFB_QUERY_PLANE, &pi);
|
ret = ioctl(fd, OMAPFB_QUERY_PLANE, &pi);
|
||||||
|
@ -254,18 +258,27 @@ static int pnd_setup_layer_(int fd, int enabled, int x, int y, int w, int h)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* must disable when changing stuff */
|
/* must disable when changing stuff */
|
||||||
if (pi.enabled) {
|
is_enabled = pi.enabled;
|
||||||
|
if (is_enabled) {
|
||||||
pi.enabled = 0;
|
pi.enabled = 0;
|
||||||
ret = ioctl(fd, OMAPFB_SETUP_PLANE, &pi);
|
ret = ioctl(fd, OMAPFB_SETUP_PLANE, &pi);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
perror("SETUP_PLANE");
|
perror("SETUP_PLANE");
|
||||||
|
else
|
||||||
|
is_enabled = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
mi.size = 320*240*2*4;
|
if (mi.size < LAYER_MEM_SIZE) {
|
||||||
ret = ioctl(fd, OMAPFB_SETUP_MEM, &mi);
|
unsigned int size_old = mi.size;
|
||||||
if (ret != 0) {
|
|
||||||
perror("SETUP_MEM");
|
mi.size = LAYER_MEM_SIZE;
|
||||||
return -1;
|
ret = ioctl(fd, OMAPFB_SETUP_MEM, &mi);
|
||||||
|
if (ret != 0) {
|
||||||
|
perror("SETUP_MEM");
|
||||||
|
fprintf(stderr, "(requested %u, had %u)\n",
|
||||||
|
mi.size, size_old);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pi.pos_x = x;
|
pi.pos_x = x;
|
||||||
|
@ -275,12 +288,17 @@ static int pnd_setup_layer_(int fd, int enabled, int x, int y, int w, int h)
|
||||||
pi.enabled = enabled;
|
pi.enabled = enabled;
|
||||||
|
|
||||||
ret = ioctl(fd, OMAPFB_SETUP_PLANE, &pi);
|
ret = ioctl(fd, OMAPFB_SETUP_PLANE, &pi);
|
||||||
if (ret != 0) {
|
if (ret == 0) {
|
||||||
|
is_enabled = pi.enabled;
|
||||||
|
}
|
||||||
|
else {
|
||||||
perror("SETUP_PLANE");
|
perror("SETUP_PLANE");
|
||||||
return -1;
|
retval = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
plat_target_switch_layer(1, is_enabled);
|
||||||
|
|
||||||
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
int pnd_setup_layer(int enabled, int x, int y, int w, int h)
|
int pnd_setup_layer(int enabled, int x, int y, int w, int h)
|
||||||
|
@ -479,6 +497,9 @@ void plat_init(void)
|
||||||
|
|
||||||
pnd_menu_init();
|
pnd_menu_init();
|
||||||
|
|
||||||
|
// default ROM path
|
||||||
|
strcpy(rom_fname_loaded, "/media");
|
||||||
|
|
||||||
in_evdev_init(in_evdev_defbinds);
|
in_evdev_init(in_evdev_defbinds);
|
||||||
in_probe();
|
in_probe();
|
||||||
plat_target_setup_input();
|
plat_target_setup_input();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue