From 1252c6cfaeaa08ce90482407277f701e1e57505f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Sat, 12 Feb 2005 03:12:19 +0000 Subject: [PATCH] No longer computes a wrong frame buffer size for 15 bit modes. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11347 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kernel/boot/platform/bios_ia32/video.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/kernel/boot/platform/bios_ia32/video.cpp b/src/kernel/boot/platform/bios_ia32/video.cpp index 94a222fb93..8d78097545 100644 --- a/src/kernel/boot/platform/bios_ia32/video.cpp +++ b/src/kernel/boot/platform/bios_ia32/video.cpp @@ -410,12 +410,13 @@ platform_switch_to_logo(void) } addr_t lastBase = gKernelArgs.frame_buffer.physical_buffer.start; + int32 bytesPerPixel = (modeInfo.bits_per_pixel + 7) / 8; gKernelArgs.frame_buffer.width = modeInfo.width; gKernelArgs.frame_buffer.height = modeInfo.height; gKernelArgs.frame_buffer.depth = modeInfo.bits_per_pixel; gKernelArgs.frame_buffer.physical_buffer.size = gKernelArgs.frame_buffer.width - * gKernelArgs.frame_buffer.height * (gKernelArgs.frame_buffer.depth / 8); + * gKernelArgs.frame_buffer.height * bytesPerPixel; gKernelArgs.frame_buffer.physical_buffer.start = modeInfo.physical_base; // ToDo: we assume that physical base is constant through the different resolutions @@ -450,7 +451,7 @@ platform_switch_to_logo(void) // ToDo: this is a temporary hack! addr_t start = sFrameBuffer + gKernelArgs.frame_buffer.width * (gKernelArgs.frame_buffer.height - kHeight - 60) - * (gKernelArgs.frame_buffer.depth/8) + gKernelArgs.frame_buffer.width - kWidth - 40; + * bytesPerPixel + gKernelArgs.frame_buffer.width - kWidth - 40; for (int32 i = 0; i < kHeight; i++) { memcpy((void *)(start + gKernelArgs.frame_buffer.width * i), &kImageData[i * kWidth], kWidth);