diff options
Diffstat (limited to 'plugins/gpulib/vout_pl.c')
-rw-r--r-- | plugins/gpulib/vout_pl.c | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/plugins/gpulib/vout_pl.c b/plugins/gpulib/vout_pl.c index 91de057..79b6c3e 100644 --- a/plugins/gpulib/vout_pl.c +++ b/plugins/gpulib/vout_pl.c @@ -36,8 +36,8 @@ static void check_mode_change(void) { old_status = gpu.status.reg; old_h = gpu.screen.h; - screen_buf = cbs->pl_vout_set_mode(gpu.screen.hres, - gpu.screen.h, gpu.status.rgb24 ? 24 : 16); + screen_buf = cbs->pl_vout_set_mode(gpu.screen.hres, gpu.screen.h, + (gpu.status.rgb24 && !cbs->only_16bpp) ? 24 : 16); } } @@ -60,21 +60,22 @@ static void blit(void) if (gpu.status.rgb24) { -#ifndef MAEMO - dest += (doffs / 8) * 24; - for (; h-- > 0; dest += stride * 3, fb_offs += 1024) - { - fb_offs &= 1024*512-1; - bgr888_to_rgb888(dest, vram + fb_offs, w * 3); + if (cbs->only_16bpp) { + dest += doffs * 2; + for (; h-- > 0; dest += stride * 2, fb_offs += 1024) + { + fb_offs &= 1024*512-1; + bgr888_to_rgb565(dest, vram + fb_offs, w * 3); + } } -#else - dest += doffs * 2; - for (; h-- > 0; dest += stride * 2, fb_offs += 1024) - { - fb_offs &= 1024*512-1; - bgr888_to_rgb565(dest, vram + fb_offs, w * 3); + else { + dest += (doffs / 8) * 24; + for (; h-- > 0; dest += stride * 3, fb_offs += 1024) + { + fb_offs &= 1024*512-1; + bgr888_to_rgb888(dest, vram + fb_offs, w * 3); + } } -#endif } else { |