From ee3e51aa1624693217b1a4ae7bfb2730424c08f2 Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Tue, 18 Jul 2017 21:23:22 +0200 Subject: added a virtual mouse driver interface, made the PS/2 mouse a specialization of it --- src/kernel/kernel.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/kernel/kernel.c') diff --git a/src/kernel/kernel.c b/src/kernel/kernel.c index d708850..4314ca8 100644 --- a/src/kernel/kernel.c +++ b/src/kernel/kernel.c @@ -12,7 +12,7 @@ #include "interrupts.h" #include "driver.h" #include "keyboard.h" -#include "mouse.h" +#include "ps2mouse.h" #include "pci.h" #include "memorymanagement.h" @@ -133,9 +133,10 @@ void kernel_main( void ) keyboard_init( global_context.keyboard, &handle_keyboard_event, &interrupt, (void *)&global_context ); driver_manager_add_driver( &global_context.driver_manager, (driver_t *)global_context.keyboard ); - global_context.mouse = (mouse_t *)malloc( sizeof( mouse_t ) ); - mouse_init( global_context.mouse, &handle_mouse_event, &interrupt, (void *)&global_context ); - mouse_set_resolution( global_context.mouse, global_context.vga_text.res_x, global_context.vga_text.res_y ); + global_context.mouse = (mouse_t *)malloc( sizeof( ps2mouse_t ) ); + ps2mouse_init( (ps2mouse_t *)global_context.mouse, &handle_mouse_event, &interrupt, (void *)&global_context ); + ((mouse_vtable_t *)(global_context.mouse->base.vtable))->set_resolution( global_context.mouse, global_context.vga_text.res_x, global_context.vga_text.res_y ); + driver_manager_add_driver( &global_context.driver_manager, (driver_t *)global_context.mouse ); // dynamically detected and registered drivers @@ -372,7 +373,7 @@ static void switch_to_graphics_mode( global_context_t *global_context ) 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, VGA_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_set_resolution( mouse, vga->mode.x, vga->mode.y ); + ((mouse_vtable_t *)(mouse->base.vtable))->set_resolution( mouse, vga->mode.x, vga->mode.y ); // enable Z buffering vga_use_z_buffer( global_context->vga, true ); @@ -391,7 +392,7 @@ static void switch_to_text_mode( global_context_t *global_context ) if( vga_set_mode( vga, vga_make_mode( VGA_MODE_TYPE_TEXT, 640, 480, 4 ) ) ) { vga_text_set_cursor( vga_text, vga_text->cursor_x, vga_text->cursor_y ); - mouse_set_resolution( mouse, vga_text->res_x, vga_text->res_y ); + ((mouse_vtable_t *)(mouse->base.vtable))->set_resolution( mouse, vga_text->res_x, vga_text->res_y ); global_context->mode = MODE_TEXT; } } -- cgit v1.2.3-54-g00ecf