summaryrefslogtreecommitdiff
path: root/src/kernel/kernel.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/kernel.c')
-rw-r--r--src/kernel/kernel.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/kernel/kernel.c b/src/kernel/kernel.c
index d11d6c6..ae31e5a 100644
--- a/src/kernel/kernel.c
+++ b/src/kernel/kernel.c
@@ -21,7 +21,6 @@
#include "kernel.h"
// TODO: move away from main!
-#include "vga.h"
#include "graphics_context.h"
#include "widget.h"
#include "composite_widget.h"
@@ -46,7 +45,7 @@ typedef struct {
driver_manager_t driver_manager;
task_manager_t task_manager;
memory_manager_t memory_manager;
- vga_t *vga;
+ video_t *video;
mode_t mode;
keyboard_t *keyboard;
mouse_t *mouse;
@@ -148,7 +147,7 @@ void kernel_main( void )
// TODO: merge with the text mode vga_text_t object
// TODO: introduce a graphics driver type, don't cast diretly here
// TODO: also, what to do if there is more than one driver?
- global_context.vga = (vga_t *)driver_manager_find_driver( &global_context.driver_manager, DRIVER_TYPE_VIDEO );
+ global_context.video = (video_t *)driver_manager_find_driver( &global_context.driver_manager, DRIVER_TYPE_VIDEO );
puts( "Activating drivers" );
driver_manager_activate_all( &global_context.driver_manager );
@@ -330,9 +329,9 @@ static void refresh_screen( void )
interrupts_disable( );
// as vga_t is equals to the graphical context for now
- ((widget_t *)&global_context.desktop)->vtable->draw( &global_context.desktop, global_context.vga );
+ ((widget_t *)&global_context.desktop)->vtable->draw( &global_context.desktop, global_context.video );
- vga_refresh( global_context.vga );
+ ((video_vtable_t *)( global_context.video->base.vtable))->refresh( global_context.video );
interrupts_enable( );
@@ -343,13 +342,13 @@ static void refresh_screen( void )
static void switch_to_graphics_mode( global_context_t *global_context )
{
- vga_t *vga = global_context->vga;
+ video_t *video = global_context->video;
vga_text_t *vga_text = &global_context->vga_text;
mouse_t *mouse = global_context->mouse;
desktop_t *desktop = &global_context->desktop;
video_mode_t mode = video_make_mode( VIDEO_MODE_TYPE_GRAPHICS, 320, 200, 8 );
- if( ((video_vtable_t *)(vga->base.base.vtable))->set_mode( vga, mode ) ) {
+ if( ((video_vtable_t *)(video->base.vtable))->set_mode( video, mode ) ) {
vga_text_save( vga_text );
desktop_init( desktop, 320, 200, VIDEO_RGB_COLOR_BLUE );
@@ -369,16 +368,16 @@ static void switch_to_graphics_mode( global_context_t *global_context )
}
*p = '\0';
- window_init( &global_context->window3, (widget_t *)desktop, 55, 5, vga->mode->base.x - 65, 100, VIDEO_RGB_COLOR_CYAN );
+ window_init( &global_context->window3, (widget_t *)desktop, 55, 5, video->mode->x - 65, 100, VIDEO_RGB_COLOR_CYAN );
((composite_widget_vtable_t *)global_context->desktop.base.base.vtable)->add_child( desktop, (widget_t *)&global_context->window3 );
text_widget_init( &global_context->widget3, (widget_t *)&global_context->window3, 1, 1, global_context->window3.base.base.w - 2, global_context->window3.base.base.h - 2, VIDEO_RGB_COLOR_RED, s );
((composite_widget_vtable_t *)global_context->window3.base.base.vtable)->add_child( (composite_widget_t *)&global_context->window3, (widget_t *)&global_context->widget3 );
- ((mouse_vtable_t *)(mouse->base.vtable))->set_resolution( mouse, vga->mode->base.x, vga->mode->base.y );
+ ((mouse_vtable_t *)(mouse->base.vtable))->set_resolution( mouse, video->mode->x, video->mode->y );
// enable Z buffering
- vga_use_z_buffer( global_context->vga, true );
+ ((video_vtable_t *)(global_context->video->base.vtable))->use_z_buffer( global_context->video, true );
global_context->mode = MODE_GRAPHICS;
}
@@ -386,14 +385,14 @@ static void switch_to_graphics_mode( global_context_t *global_context )
static void switch_to_text_mode( global_context_t *global_context )
{
- vga_t *vga = global_context->vga;
+ video_t *video = global_context->video;
vga_text_t *vga_text = &global_context->vga_text;
mouse_t *mouse = global_context->mouse;
vga_text_restore( vga_text );
video_mode_t mode = video_make_mode( VIDEO_MODE_TYPE_TEXT, 640, 480, 4 );
- if( ((video_vtable_t *)(vga->base.base.vtable))->set_mode( vga, mode ) ) {
+ if( ((video_vtable_t *)(video->base.vtable))->set_mode( video, mode ) ) {
vga_text_set_cursor( vga_text, vga_text->cursor_x, vga_text->cursor_y );
((mouse_vtable_t *)(mouse->base.vtable))->set_resolution( mouse, vga_text->res_x, vga_text->res_y );
global_context->mode = MODE_TEXT;