@@ -156,6 +156,8 @@ def __init__(self, width: int, height: int):
156156 self ._mouse = MouseState (self ._scale )
157157 self ._mouse_events : list [MouseEvent ] = []
158158
159+ self ._should_render = True
160+
159161 # Debug variables
160162 self ._mouse_history : deque [MousePos ] = deque (maxlen = MOUSE_THREAD_RATE )
161163
@@ -237,6 +239,9 @@ def set_modal_overlay(self, overlay, callback: Callable | None = None):
237239
238240 self ._modal_overlay = ModalOverlay (overlay = overlay , callback = callback )
239241
242+ def set_should_render (self , should_render : bool ):
243+ self ._should_render = should_render
244+
240245 def texture (self , asset_path : str , width : int | None = None , height : int | None = None ,
241246 alpha_premultiply = False , keep_aspect_ratio = True ):
242247 cache_key = f"{ asset_path } _{ width } _{ height } _{ alpha_premultiply } { keep_aspect_ratio } "
@@ -322,6 +327,12 @@ def render(self):
322327 # Store all mouse events for the current frame
323328 self ._mouse_events = self ._mouse .get_events ()
324329
330+ # Skip rendering when screen is off
331+ if not self ._should_render :
332+ time .sleep (1 / self ._target_fps )
333+ yield False
334+ continue
335+
325336 if self ._render_texture :
326337 rl .begin_texture_mode (self ._render_texture )
327338 rl .clear_background (rl .BLACK )
@@ -344,9 +355,9 @@ def render(self):
344355 self ._modal_overlay = ModalOverlay ()
345356 if original_modal .callback is not None :
346357 original_modal .callback (result )
347- yield True
348- else :
349358 yield False
359+ else :
360+ yield True
350361
351362 if self ._render_texture :
352363 rl .end_texture_mode ()
0 commit comments