diff options
Diffstat (limited to 'klippy/extras/display/display.py')
-rw-r--r-- | klippy/extras/display/display.py | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/klippy/extras/display/display.py b/klippy/extras/display/display.py index 11f60a57..8e47e5a1 100644 --- a/klippy/extras/display/display.py +++ b/klippy/extras/display/display.py @@ -100,9 +100,12 @@ class PrinterLCD: self.show_data_group = self.display_data_groups.get(dgroup) if self.show_data_group is None: raise config.error("Unknown display_data group '%s'" % (dgroup,)) + # Screen updating self.printer.register_event_handler("klippy:ready", self.handle_ready) self.screen_update_timer = self.reactor.register_timer( self.screen_update_event) + self.redraw_request_pending = False + self.redraw_time = 0. # Register g-code commands gcode = self.printer.lookup_object("gcode") gcode.register_mux_command('SET_DISPLAY_GROUP', 'DISPLAY', name, @@ -111,6 +114,8 @@ class PrinterLCD: if name == 'display': gcode.register_mux_command('SET_DISPLAY_GROUP', 'DISPLAY', None, self.cmd_SET_DISPLAY_GROUP) + def get_dimensions(self): + return self.lcd_chip.get_dimensions() # Configurable display def _parse_glyph(self, config, glyph_name, data, width, height): glyph_data = [] @@ -184,19 +189,28 @@ class PrinterLCD: self.reactor.update_timer(self.screen_update_timer, self.reactor.NOW) # Screen updating def screen_update_event(self, eventtime): + if self.redraw_request_pending: + self.redraw_request_pending = False + self.redraw_time = eventtime + 0.250 + self.lcd_chip.clear() # update menu component if self.menu is not None: ret = self.menu.screen_update_event(eventtime) if ret: - return ret + self.lcd_chip.flush() + return eventtime + .500 # Update normal display - self.lcd_chip.clear() try: self.show_data_group.show(self, self.display_templates, eventtime) except: logging.exception("Error during display screen update") self.lcd_chip.flush() return eventtime + .500 + def request_redraw(self): + if self.redraw_request_pending: + return + self.redraw_request_pending = True + self.reactor.update_timer(self.screen_update_timer, self.redraw_time) def draw_text(self, row, col, mixed_text, eventtime): pos = col for i, text in enumerate(mixed_text.split('~')): |