changeset 30207:6d8765b75f37

Fix fbdev2 to work with Intel framebuffer.
author reimar
date Sat, 09 Jan 2010 11:32:18 +0000
parents c3b1e5e728a4
children 4570bb6d0284
files libvo/vo_fbdev2.c
diffstat 1 files changed, 6 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/libvo/vo_fbdev2.c	Sat Jan 09 11:26:39 2010 +0000
+++ b/libvo/vo_fbdev2.c	Sat Jan 09 11:32:18 2010 +0000
@@ -319,13 +319,17 @@
 		set_bpp(&fb_vinfo, fb_target_bpp);
 		fb_vinfo.xres_virtual = fb_vinfo.xres;
 		fb_vinfo.yres_virtual = fb_vinfo.yres;
+		if (ioctl(fb_dev_fd, FBIOPUT_VSCREENINFO, &fb_vinfo))
+			// Needed for Intel framebuffer with 32 bpp
+			fb_vinfo.transp.length = fb_vinfo.transp.offset = 0;
 		if (ioctl(fb_dev_fd, FBIOPUT_VSCREENINFO, &fb_vinfo)) {
 			mp_msg(MSGT_VO, MSGL_ERR, "[fbdev2] Can't put VSCREENINFO: %s\n", strerror(errno));
 			return 0;
 		}
 		fb_pixel_size = fb_vinfo.bits_per_pixel / 8;
-		fb_bpp = fb_vinfo.red.length + fb_vinfo.green.length +
-			fb_vinfo.blue.length + fb_vinfo.transp.length;
+		fb_bpp = fb_vinfo.bits_per_pixel;
+		if (fb_bpp == 16)
+			fb_bpp = fb_vinfo.red.length + fb_vinfo.green.length + fb_vinfo.blue.length;
 		if (fb_bpp == fb_target_bpp)
 			return VFCAP_CSP_SUPPORTED|VFCAP_CSP_SUPPORTED_BY_HW|VFCAP_ACCEPT_STRIDE;
 	}