pandora: use automatic tv layer switch

This commit is contained in:
notaz 2013-09-24 00:47:33 +03:00
parent 334d9fb654
commit 55d7dcb209
2 changed files with 31 additions and 10 deletions

@ -1 +1 @@
Subproject commit 18306c325f0d24fc7232dff055e814432e06d5d1
Subproject commit 1bc471ebf1c85cf78f1862f5596a76f051e7112d

View file

@ -33,6 +33,8 @@
#include <pico/pico_int.h>
#define LAYER_MEM_SIZE (320*240*2 * 4)
static struct vout_fbdev *main_fb, *layer_fb;
// g_layer_* - in use, g_layer_c* - configured custom
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_mem_info mi;
int is_enabled;
int retval = 0;
int ret;
ret = ioctl(fd, OMAPFB_QUERY_PLANE, &pi);
@ -254,19 +258,28 @@ static int pnd_setup_layer_(int fd, int enabled, int x, int y, int w, int h)
}
/* must disable when changing stuff */
if (pi.enabled) {
is_enabled = pi.enabled;
if (is_enabled) {
pi.enabled = 0;
ret = ioctl(fd, OMAPFB_SETUP_PLANE, &pi);
if (ret != 0)
perror("SETUP_PLANE");
else
is_enabled = 0;
}
mi.size = 320*240*2*4;
if (mi.size < LAYER_MEM_SIZE) {
unsigned int size_old = mi.size;
mi.size = LAYER_MEM_SIZE;
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_y = y;
@ -275,12 +288,17 @@ static int pnd_setup_layer_(int fd, int enabled, int x, int y, int w, int h)
pi.enabled = enabled;
ret = ioctl(fd, OMAPFB_SETUP_PLANE, &pi);
if (ret != 0) {
if (ret == 0) {
is_enabled = pi.enabled;
}
else {
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)
@ -479,6 +497,9 @@ void plat_init(void)
pnd_menu_init();
// default ROM path
strcpy(rom_fname_loaded, "/media");
in_evdev_init(in_evdev_defbinds);
in_probe();
plat_target_setup_input();