From bd64c9d8b726a266fc452bdceef6450ac0073be8 Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Wed, 12 Jul 2017 13:03:09 +0200 Subject: added segment_size to vga mode structure, using for memcpy in Z buffer refreshing the video memory and when allocating the Z buffer --- src/drivers/video/vga.c | 6 +++--- src/drivers/video/vga.h | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/drivers/video/vga.c b/src/drivers/video/vga.c index 751cbc5..fd5bb10 100644 --- a/src/drivers/video/vga.c +++ b/src/drivers/video/vga.c @@ -284,6 +284,7 @@ bool vga_set_mode( vga_t *vga, const vga_mode_t mode ) vga->mode = mode; vga->mode.segment = get_frame_buffer_segment( vga ); + vga->mode.segment_size = get_frame_buffer_segment_size( vga ); vga_use_z_buffer( vga, false ); @@ -429,8 +430,7 @@ void vga_use_z_buffer( vga_t *vga, bool use ) vga->use_z_buffer = use; if( vga->use_z_buffer ) { - size_t size = get_frame_buffer_segment_size( vga ); - vga->zbuffer = (uint8_t *)malloc( size ); + vga->zbuffer = (uint8_t *)malloc( vga->mode.segment_size ); vga->base_addr = &vga->zbuffer[0]; } else { if( vga->zbuffer != NULL ) { @@ -445,7 +445,7 @@ void vga_refresh( vga_t *vga ) { if( vga->use_z_buffer ) { vga_wait_for_retrace( vga ); - memcpy( vga->mode.segment, vga->zbuffer, 65535 ); + memcpy( vga->mode.segment, vga->zbuffer, vga->mode.segment_size ); } } diff --git a/src/drivers/video/vga.h b/src/drivers/video/vga.h index aa842dc..0947856 100644 --- a/src/drivers/video/vga.h +++ b/src/drivers/video/vga.h @@ -4,6 +4,7 @@ #include #include "string.h" +#include "stddef.h" #include "interrupts.h" #include "port.h" @@ -24,6 +25,7 @@ typedef struct { int color_depth; uint8_t regs[NOF_MODE_REGS]; uint8_t *segment; + size_t segment_size; } vga_mode_t; typedef struct { -- cgit v1.2.3-54-g00ecf