diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2017-06-30 16:45:12 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2017-06-30 16:45:12 +0200 |
commit | c1bbac52d78b2e3e93fa43a5a7b3907073493216 (patch) | |
tree | 13ec009562358d01b1845dd08135f4ac8d384551 /src/kernel | |
parent | 915dd4b023d0826166d4887100dbed64d46821a9 (diff) | |
download | abaos-c1bbac52d78b2e3e93fa43a5a7b3907073493216.tar.gz abaos-c1bbac52d78b2e3e93fa43a5a7b3907073493216.tar.bz2 |
text widget has a constant buffer and owns the string to draw now
(passing a const char * from a local stack context is not really a
good idea!)
added more efficiet draw method for characters in vga driver
protected desktop for now against too often redraws (boolean global
variable needs_redraw, this is later a soffisticated set-of-areas-to
-redraw algorithm)
Diffstat (limited to 'src/kernel')
-rw-r--r-- | src/kernel/kernel.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/kernel/kernel.c b/src/kernel/kernel.c index aacfcbd..9bd3d98 100644 --- a/src/kernel/kernel.c +++ b/src/kernel/kernel.c @@ -139,7 +139,7 @@ void kernel_main( void ) // for now we are only interested in interrupts, // so we let the main thread sleep instead of // burning CPU.. -// kernel_halt( ); + kernel_halt( ); switch( global_context.mode ) { case MODE_TEXT: @@ -152,7 +152,8 @@ void kernel_main( void ) // wait for VGA retrace, assume drawing the desktop // is fast enough to finish in time (so we don't recheck - // for retrace) + // for retrace), it Z-buffering, this is done in vga_refresh + // directly, no need to do it here // vga_wait_for_retrace( &global_context.vga ); // as vga_t is equals to the graphical context for now @@ -238,6 +239,7 @@ static void handle_keyboard_event( keyboard_event_t *event, void *context ) ((composite_widget_vtable_t *)global_context->desktop.vtable)->add_child( &global_context->desktop, (widget_t *)&global_context->window2 ); char s[100]; + char *p = s; for( char c = ' '; c <= '~'; c++ ) { *p++ = c; @@ -248,7 +250,7 @@ static void handle_keyboard_event( keyboard_event_t *event, void *context ) ((composite_widget_vtable_t *)global_context->desktop.vtable)->add_child( &global_context->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, VGA_COLOR_RED, s ); -// ((composite_widget_vtable_t *)global_context->window3.vtable)->add_child( (composite_widget_t *)&global_context->window3, (widget_t *)&global_context->widget3 ); + ((composite_widget_vtable_t *)global_context->window3.vtable)->add_child( (composite_widget_t *)&global_context->window3, (widget_t *)&global_context->widget3 ); mouse_set_resolution( mouse, vga->mode.x, vga->mode.y ); } @@ -257,7 +259,7 @@ static void handle_keyboard_event( keyboard_event_t *event, void *context ) vga_use_z_buffer( &global_context->vga, true ); // draw on mode switch - ((widget_vtable_t *)global_context->desktop.vtable)->draw( &global_context->desktop, &global_context->vga ); +// ((widget_vtable_t *)global_context->desktop.vtable)->draw( &global_context->desktop, &global_context->vga ); global_context->mode = MODE_GRAPHICS; break; @@ -336,9 +338,7 @@ static void handle_mouse_event( mouse_event_t *event, void *context ) // alternative way of redrawing on mouse event // on qemu looses the mouse.. -// interrupts_disable( ); // ((widget_vtable_t *)desktop->vtable)->draw( &global_context->desktop, &global_context->vga ); -// interrupts_enable( ); break; } |