diff -r 47e5109c7f53 -r 9a14d6b2de7f thermferm/lcd-buffer.c --- a/thermferm/lcd-buffer.c Sat Aug 09 23:13:56 2014 +0200 +++ b/thermferm/lcd-buffer.c Sun Aug 10 12:09:07 2014 +0200 @@ -30,8 +30,6 @@ int current_lines = 0; int current_offset = 0; -int first_time = 1; -int previous_key = KEY_NONE; lcd_rows *my_lcd_rows = NULL; extern int lcdHandle; @@ -90,43 +88,37 @@ -/* - * This will be called from the main thread if not in edit mode. - */ -void lcd_buf_show(void) +void lcd_buf_step(void) { - int i = 0, r = 0, key, doit = FALSE; - lcd_rows *tmp; + int key; key = keycheck(); - if ((key == KEY_NONE) && (previous_key == KEY_DOWN)) { + if (key == KEY_DOWN) { if (current_offset < (current_lines - Config.lcd_rows)) current_offset = current_offset + Config.lcd_rows; else current_offset = 0; - doit = TRUE; + lcd_buf_show(); } - if ((key == KEY_NONE) && (previous_key == KEY_UP)) { + if (key == KEY_UP) { if (current_offset > Config.lcd_rows) current_offset = current_offset - Config.lcd_rows; else current_offset = (current_lines - Config.lcd_rows); - doit = TRUE; + lcd_buf_show(); } - previous_key = key; +} + - /* - * Make sure the display works when the program starts. - */ - if (first_time) { - first_time = 0; - doit = TRUE; - } - - if (! doit) - return; +/* + * This will be called from the main thread every second. + */ +void lcd_buf_show(void) +{ + int i = 0, r = 0; + lcd_rows *tmp; for (tmp = my_lcd_rows; tmp; tmp = tmp->next) { if (i == current_offset)