fix: prevent calendar display flashing by removing unnecessary delay and improving display update logic

This commit is contained in:
ChuckBuilds
2025-04-22 10:35:29 -05:00
parent 792bca625f
commit aa4ccf5bb3
2 changed files with 13 additions and 13 deletions

View File

@@ -258,7 +258,7 @@ class CalendarManager:
logging.error(f"Could not parse time string: {start} - {e}") logging.error(f"Could not parse time string: {start} - {e}")
return "Invalid Time" return "Invalid Time"
def display(self): def display(self, force_clear=False):
"""Display the current calendar event on the matrix""" """Display the current calendar event on the matrix"""
if not self.enabled: if not self.enabled:
logger.debug("Calendar manager is disabled, skipping display") logger.debug("Calendar manager is disabled, skipping display")
@@ -266,9 +266,10 @@ class CalendarManager:
if not self.events: if not self.events:
# Display "No Events" message if the list is empty # Display "No Events" message if the list is empty
logger.info("--> CalendarManager: Attempting to draw DEBUG (no events).") logger.debug("No calendar events to display")
self.display_manager.clear() if force_clear:
self.display_manager.draw_text("Calendar DEBUG", small_font=True, color=self.text_color) self.display_manager.clear()
self.display_manager.draw_text("No Events", small_font=True, color=self.text_color)
self.display_manager.update_display() self.display_manager.update_display()
return return
@@ -278,24 +279,23 @@ class CalendarManager:
event_to_display = self.events[self.current_event_index] event_to_display = self.events[self.current_event_index]
logger.debug(f"CalendarManager displaying event index {self.current_event_index}: {event_to_display.get('summary')}") logger.debug(f"CalendarManager displaying event index {self.current_event_index}: {event_to_display.get('summary')}")
# Clear the display before drawing the current event # Only clear if forced or if this is a new event
logger.debug("CalendarManager clearing display for event.") if force_clear:
self.display_manager.clear() self.display_manager.clear()
# Draw the event # Draw the event
draw_successful = self.draw_event(event_to_display) draw_successful = self.draw_event(event_to_display)
if draw_successful: if draw_successful:
# Add a small delay to ensure the content stays visible
time.sleep(0.1) # 100ms delay
# Update the display # Update the display
self.display_manager.update_display() self.display_manager.update_display()
logger.debug("CalendarManager event display updated.") logger.debug("CalendarManager event display updated.")
else: else:
# Draw failed (error logged in draw_event), show debug message # Draw failed (error logged in draw_event), show debug message
logger.info("--> CalendarManager: Attempting to draw DEBUG (draw_event failed).") logger.warning("Failed to draw calendar event")
self.display_manager.clear() # Clear any partial drawing if force_clear:
self.display_manager.draw_text("Calendar DEBUG", small_font=True, color=self.text_color) self.display_manager.clear()
self.display_manager.draw_text("Calendar Error", small_font=True, color=self.text_color)
self.display_manager.update_display() self.display_manager.update_display()
def advance_event(self): def advance_event(self):

View File

@@ -372,7 +372,7 @@ class DisplayController:
self.news.display_news() self.news.display_news()
elif self.current_display_mode == 'calendar' and self.calendar: elif self.current_display_mode == 'calendar' and self.calendar:
self.calendar.display() self.calendar.display(force_clear=self.force_clear)
elif self.current_display_mode == 'nhl_recent' and self.nhl_recent: elif self.current_display_mode == 'nhl_recent' and self.nhl_recent:
self.nhl_recent.display(force_clear=self.force_clear) self.nhl_recent.display(force_clear=self.force_clear)