summaryrefslogtreecommitdiff
path: root/src/kernel
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2017-06-30 16:45:12 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2017-06-30 16:45:12 +0200
commitc1bbac52d78b2e3e93fa43a5a7b3907073493216 (patch)
tree13ec009562358d01b1845dd08135f4ac8d384551 /src/kernel
parent915dd4b023d0826166d4887100dbed64d46821a9 (diff)
downloadabaos-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.c12
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;
}