@@ -195,7 +195,7 @@ def __init__(self, component: GUI) -> None:
195195
196196 self .pause_redraw = 0
197197 self .pause_colour_change = False
198- self .redraw_queue : list [Pixel ] = []
198+ self ._pixel_redraw_queue : list [tuple [ tuple [ int , int ] | None , tuple [ int , int ] | None , tuple [ int , int ] | None ] ] = []
199199 self ._last_save_time = self ._last_thumbnail_time = self ._last_app_reload_time = int (time .time () * 10 )
200200 self ._delete_mouse_pressed = False
201201 self ._delete_keyboard_pressed = False
@@ -2290,6 +2290,10 @@ def draw_pixmap_line(self, old_position: tuple[int, int] | None, new_position: t
22902290 if not self .isVisible () or not self .is_live or self ._is_closing or self .ui .thumbnail .pixmap ().isNull ():
22912291 return
22922292
2293+ # If in the middle of switching profiles, queue the coordinates to redraw after
2294+ if self .pause_redraw :
2295+ self ._pixel_redraw_queue .append ((old_position , new_position , force_monitor ))
2296+
22932297 # Convert pixels from logical coordinates to physical
22942298 if force_monitor is None :
22952299 if old_position is not None :
@@ -2322,19 +2326,12 @@ def draw_pixmap_line(self, old_position: tuple[int, int] | None, new_position: t
23222326 unique_pixels .add ((x , y ))
23232327
23242328 # Send unique pixels to be drawn
2325- self .update_pixmap_pixels (* (Pixel (QtCore .QPoint (x , y ), self .pixel_colour ) for x , y in unique_pixels ))
2329+ self .ui . thumbnail . update_pixels (* (Pixel (QtCore .QPoint (x , y ), self .pixel_colour ) for x , y in unique_pixels ))
23262330
2327- def update_pixmap_pixels (self , * pixels : Pixel ) -> None :
2328- """Update a specific pixel in the QImage and refresh the display."""
2329- self .ui .thumbnail .update_pixels (* pixels )
2330-
2331- # Queue commands if redrawing is paused
2332- # This allows them to be resubmitted after an update
2333- if self .pause_redraw :
2334- self .redraw_queue .extend (pixels )
2335- elif self .redraw_queue :
2336- redraw_queue , self .redraw_queue = self .redraw_queue , []
2337- self .ui .thumbnail .update_pixels (* redraw_queue )
2331+ # Redraw any queued coordinates after profile switch
2332+ while not self .pause_redraw and self ._pixel_redraw_queue :
2333+ _old_position , _new_position , _force_monitor = self ._pixel_redraw_queue .pop ()
2334+ self .draw_pixmap_line (_old_position , _new_position , _force_monitor )
23382335
23392336 def update_thumbnail_size (self ) -> None :
23402337 """Set a new thumbnail size after the window has finished resizing."""
0 commit comments