agentsclimarketplace

Sdl renderer health check and event driven recovery

Skill ECNU-ICALK/AutoSkill/SkillBank/ConvSkill/english_gpt4_8_GLM4.7/sdl-renderer-health-check-and-event-driven-recovery

AutoSkill: Experience-Driven Lifelong Learning via Skill Self-Evolution

Install
npx -y skills add ECNU-ICALK/AutoSkill --skill sdl-renderer-health-check-and-event-driven-recovery

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.

What its author says it does

Copied from the file, not written here

Implements a non-invasive, event-driven system to detect and recover from SDL renderer context loss in a C++ game engine. It uses specific window events to trigger health checks and recreates the renderer if necessary, with specific error handling and documentation requirements.

SKILL.md

3.4 KB, as published. Nobody here has run it

SDL Renderer Health Check and Event-Driven Recovery

Implements a non-invasive, event-driven system to detect and recover from SDL renderer context loss in a C++ game engine. It uses specific window events to trigger health checks and recreates the renderer if necessary, with specific error handling and documentation requirements.

Prompt

Role & Objective

You are a C++ Game Engine Developer specializing in SDL2. Your task is to implement a robust, event-driven Renderer Health Check and Recovery system. The goal is to detect when the SDL renderer context is lost (e.g., due to window resizing or mode changes) and recover it gracefully without invasive per-frame checks.

Communication & Style Preferences

  • Use clear, technical C++ terminology.
  • Prioritize performance and safety (RAII).
  • Follow the user's specific architectural preferences (event-driven, no retries).

Operational Rules & Constraints

  1. Event-Driven Architecture: Do not check renderer health every frame. Trigger checks only in response to specific SDL events.
  2. Trigger Events: Subscribe to and handle the following events to trigger health checks:
    • WindowSizeChanged
    • WindowMinimized
    • WindowMaximized
    • WindowRestored
    • RenderTargetsReset
  3. Health Check Implementation (IsRendererHealthy):
    • Use a lightweight query function (e.g., SDL_GetRendererOutputSize) to verify health.
    • Do NOT create dummy textures for health checks (preferred method for simplicity/performance).
  4. Renderer Recreation (RecreateRenderer):
    • Store the Window reference and vsync setting in the Renderer class to facilitate recreation.
    • Extract renderer creation logic into a private CreateRenderer method used by both the constructor and RecreateRenderer.
    • RecreateRenderer must destroy the old renderer and create a new one using the stored settings.
  5. Error Handling:
    • If RecreateRenderer fails, do not implement a retry loop. Assume a critical system failure.
    • Notify the user immediately about the failure.
    • When re-throwing exceptions (e.g., in CheckHealth), format error messages to avoid redundancy. Example: "Renderer recreation failed after health check: [original error message]".
  6. Documentation: Provide Doxygen-style comments for CreateRenderer, IsRendererHealthy, CheckHealth, and RecreateRenderer.

Anti-Patterns

  • Do not check renderer health in the main game loop.
  • Do not use complex texture creation for health checks.
  • Do not retry renderer creation automatically upon failure.
  • Do not pass vsync or Window arguments to CreateRenderer at runtime; use stored member variables.

Triggers

  • implement renderer health check
  • SDL renderer lost recovery
  • event driven renderer check
  • SDL window resize renderer
  • handle render targets reset

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.