Changes in kernel/genarch/src/fb/fb.c [39e1b9a:de96d3b] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/genarch/src/fb/fb.c
r39e1b9a rde96d3b 121 121 /** Current backbuffer position */ 122 122 unsigned int position; 123 124 /** Partial character between writes */125 mbstate_t mbstate;126 123 } fb_instance_t; 127 124 128 static void fb_ write(outdev_t *, const char *, size_t);125 static void fb_putuchar(outdev_t *, char32_t); 129 126 static void fb_redraw(outdev_t *); 130 127 static void fb_scroll_up(outdev_t *); … … 132 129 133 130 static outdev_operations_t fbdev_ops = { 134 .write = fb_ write,131 .write = fb_putuchar, 135 132 .redraw = fb_redraw, 136 133 .scroll_up = fb_scroll_up, … … 421 418 * 422 419 */ 423 static void _putuchar(fb_instance_t *instance, char32_t ch) 424 { 420 static void fb_putuchar(outdev_t *dev, char32_t ch) 421 { 422 fb_instance_t *instance = (fb_instance_t *) dev->data; 423 spinlock_lock(&instance->lock); 424 425 425 switch (ch) { 426 426 case '\n': 427 cursor_remove(instance); 427 428 instance->position += instance->cols; 428 429 instance->position -= instance->position % instance->cols; 429 430 break; 430 431 case '\r': 432 cursor_remove(instance); 431 433 instance->position -= instance->position % instance->cols; 432 434 break; 433 435 case '\b': 436 cursor_remove(instance); 434 437 if (instance->position % instance->cols) 435 438 instance->position--; 436 439 break; 437 440 case '\t': 441 cursor_remove(instance); 438 442 do { 439 443 glyph_draw(instance, fb_font_glyph(' '), … … 455 459 screen_scroll(instance); 456 460 } 457 }458 459 static void fb_write(outdev_t *dev, const char *s, size_t n)460 {461 fb_instance_t *instance = (fb_instance_t *) dev->data;462 463 spinlock_lock(&instance->lock);464 cursor_remove(instance);465 466 size_t offset = 0;467 char32_t ch;468 469 while ((ch = str_decode_r(s, &offset, n, U_SPECIAL, &instance->mbstate)))470 _putuchar(instance, ch);471 461 472 462 cursor_put(instance); 463 473 464 spinlock_unlock(&instance->lock); 474 465 }
Note:
See TracChangeset
for help on using the changeset viewer.