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:
1 parent
a63deac6a3
commit
029907d5a0
5 files changed
+21
-7
No files matched your search
@@ -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_)) {
|
||||
|
||||
Reference in new issue
Block a user