refactor(core/rendering): Screen desacoblat de SDL3GPUShader concret (COUP-02a)

Screen ja no inclou sdl3gpu/sdl3gpu_shader.hpp ni instancia la classe
concreta. S'afegeix la fàbrica Rendering::makeDefaultShaderBackend()
declarada a shader_backend.hpp i implementada a sdl3gpu_shader.cpp
(únic fitxer que encara coneix la classe concreta).

Per a que Screen no necessite static_cast, releaseWindow() passa a ser
mètode virtual pur de la interfície ShaderBackend (abans només existia
a SDL3GPUShader). SDL3GPUShader::releaseWindow marca override.

Build + smoke 5s xvfb OK (exit 124).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
JailDesignerandClaude Opus 4.7 committed 2026-04-20 09:36:11 +02:00
1 parent a63deac6a3
commit 029907d5a0
5 files changed
+21 -7

No files matched your search

+2 -3
View File
@@ -10,7 +10,6 @@
#include <memory>
#include <ranges>
#include "core/rendering/sdl3gpu/sdl3gpu_shader.hpp"
#include "utils/defines.hpp"
namespace {
@@ -74,7 +73,7 @@ void Screen::destroySdl() {
// 2) Destruir el GPU device (vkDestroyInstance amb Wayland encara viu).
// 3) Destruir la finestra SDL (tanca la surface de Wayland al final).
if (shader_backend_ != nullptr) {
static_cast<Rendering::SDL3GPUShader*>(shader_backend_.get())->releaseWindow();
shader_backend_->releaseWindow();
}
shader_backend_.reset();
if (game_texture_ != nullptr) {
@@ -106,7 +105,7 @@ void Screen::createSdl() {
// Primer intent: path SDL3 GPU. Si falla, fallback automàtic a SDL_Renderer.
if (config_.gpu_acceleration) {
auto backend = std::make_unique<Rendering::SDL3GPUShader>();
auto backend = Rendering::makeDefaultShaderBackend();
backend->setPreferredDriver(config_.preferred_driver);
backend->setVSync(config_.vsync);
if (backend->init(window_, canvas_width_, canvas_height_)) {