diff --git a/src/display_controller.py b/src/display_controller.py index c52a7350..c4989452 100644 --- a/src/display_controller.py +++ b/src/display_controller.py @@ -430,11 +430,9 @@ class DisplayController: logger.info(f"Initial display mode: {self.current_display_mode}") logger.info("DisplayController initialized with display_manager: %s", id(self.display_manager)) - # --- SCHEDULING & CONFIG REFRESH --- - self.config_check_interval = 30 - self.last_config_check = 0 + # --- SCHEDULING --- self.is_display_active = True - self._load_config() # Initial load of schedule + self._load_schedule_config() # Load schedule config once at startup def _handle_music_update(self, track_info: Dict[str, Any], significant_change: bool = False): """Callback for when music track info changes.""" @@ -865,14 +863,14 @@ class DisplayController: self.ncaa_fb_showing_recent = True # Reset to recent for the new team # --- SCHEDULING METHODS --- - def _load_config(self): - """Load configuration from the config manager and parse schedule settings.""" - self.config = self.config_manager.load_config() + def _load_schedule_config(self): + """Load schedule configuration once at startup.""" schedule_config = self.config.get('schedule', {}) self.schedule_enabled = schedule_config.get('enabled', False) try: self.start_time = datetime.strptime(schedule_config.get('start_time', '07:00'), '%H:%M').time() self.end_time = datetime.strptime(schedule_config.get('end_time', '22:00'), '%H:%M').time() + logger.info(f"Schedule loaded: enabled={self.schedule_enabled}, start={self.start_time}, end={self.end_time}") except (ValueError, TypeError): logger.warning("Invalid time format in schedule config. Using defaults.") self.start_time = time_obj(7, 0) @@ -962,12 +960,7 @@ class DisplayController: while True: current_time = time.time() - # Periodically check for config changes - if current_time - self.last_config_check > self.config_check_interval: - self._load_config() - self.last_config_check = current_time - - # Enforce the schedule + # Check the schedule (no config reload needed) self._check_schedule() if not self.is_display_active: time.sleep(60) diff --git a/src/leaderboard_manager.py b/src/leaderboard_manager.py index bf75db36..aa3accac 100644 --- a/src/leaderboard_manager.py +++ b/src/leaderboard_manager.py @@ -887,7 +887,7 @@ class LeaderboardManager: # Move to next league section current_x += teams_width + 20 # Teams width + spacing - current_x += spacing # Add spacing between leagues + # Note: spacing between leagues is already included in total_width calculation # Set total scroll width for dynamic duration calculation self.total_scroll_width = total_width @@ -930,7 +930,7 @@ class LeaderboardManager: league_width = league_logo_width + teams_width + 20 logger.info(f"League {league_key}: {len(teams)} teams, width {league_width}px, starts at x={current_x}") - current_x += league_width + spacing # Use same spacing as main calculation + current_x += league_width # No additional spacing - already included in total_width calculation # Calculate dynamic duration using proper scroll-based calculation if self.dynamic_duration_enabled: @@ -1040,7 +1040,7 @@ class LeaderboardManager: except Exception as e: logger.error(f"Error updating leaderboard for dynamic duration: {e}") - logger.info(f"get_dynamic_duration called, returning: {self.dynamic_duration}s") + logger.debug(f"get_dynamic_duration called, returning: {self.dynamic_duration}s") return self.dynamic_duration def update(self) -> None: