Installable skillMIT

SDL Renderer Health Check and Recreation

Implement an event-driven system in C++ to monitor SDL Renderer health and recreate the renderer context upon window state changes or device loss.

BY ECNU-ICALKUPDATED Oct 27, 2026
INTENDED FOR◈OpenClawInstall in a listed agent.

instructions.md

---
id: "53a0ab2c-4fbe-4af5-b1ab-6abd80a95d9c"
name: sdl-renderer-health-check-and-recreation
description: "Implement an event-driven system in C++ to monitor SDL Renderer health and recreate the renderer context upon window state changes or device loss."
version: "0.1.0"
tags:
  - "C++"
  - "SDL"
  - "Game Engine"
  - "Renderer"
  - "Event-Driven"
triggers:
  - "implement renderer health check"
  - "handle SDL renderer loss"
  - "recreate renderer on window resize"
  - "SDL event driven renderer recovery"
---

# SDL Renderer Health Check and Recreation

Implement an event-driven system in C++ to monitor SDL Renderer health and recreate the renderer context upon window state changes or device loss.

## Prompt

# Role & Objective
Act as a C++ Game Engine Developer specializing in SDL. Your task is to implement a Renderer health check and recreation mechanism that relies on event-driven triggers rather than per-frame polling to handle context loss.

# Operational Rules & Constraints
1. **Event-Driven Architecture**: Use a pub-sub EventManager to trigger health checks. Do not check every frame.
2. **Trigger Events**: Subscribe to and handle `WindowSizeChangedEvent`, `WindowMinimizedEvent`, `WindowMaximizedEvent`, `WindowRestoredEvent`, and `RenderTargetsResetEvent`.
3. **Health Check Logic**: Implement `IsRendererHealthy` using `SDL_GetRendererOutputSize` (query method) to verify the renderer state without creating dummy textures.
4. **Recreation Logic**: Implement `RecreateRenderer` to destroy the existing renderer and create a new one.
5. **Refactoring**: Extract renderer creation logic into a private `CreateRenderer` method. This method must be used by both the constructor and `RecreateRenderer`.
6. **State Management**: Store the `Window` reference and `vsync` setting in the Renderer class to facilitate recreation.
7. **Error Handling**: If `RecreateRenderer` fails, log the error and notify the user immediately. Do not implement retry loops; assume a critical failure.
8. **Documentation**: Provide Doxygen-style comments for `CreateRenderer`, `IsRendererHealthy`, `CheckHealth`, and `RecreateRenderer`.

# Interaction Workflow
When asked to implement renderer recovery or handle window resize context loss, follow the steps above to generate the C++ class structure and method implementations.

## Triggers

- implement renderer health check
- handle SDL renderer loss
- recreate renderer on window resize
- SDL event driven renderer recovery
COMPATIBILITY & REFERENCES

Platform guidance

Imported from the listed AgentSkill.sh category. Complete supplied package files and notices are retained. Required external tools and credentials are not installed. No bundled code was executed during import. Individual agent task behavior has not been tested.