step B.2: elimina fiber — Director posseeix l'escena, JD8_Flip sense yield, fiber.hpp/cpp esborrats

This commit is contained in:
2026-04-16 11:14:48 +02:00
parent 4e18f83ec5
commit 96a3cf9ebc
8 changed files with 105 additions and 296 deletions

View File

@@ -3,7 +3,6 @@
#include <fstream>
#include "core/jail/jfile.hpp"
#include "core/system/fiber.hpp"
#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-but-set-variable"
@@ -151,16 +150,16 @@ void JD8_BlitCKToSurface(int x, int y, JD8_Surface surface, int sx, int sy, int
}
void JD8_Flip() {
// Converteix el framebuffer indexat (paletted) a ARGB (pixel_data).
// El Director crida aquesta funció després del tick de cada escena
// per preparar el frame abans de presentar-lo. Ja no fa yield —
// tot corre en un sol thread sense fibers des de Phase B.2.
for (int x = 0; x < 320; x++) {
for (int y = 0; y < 200; y++) {
Uint32 color = 0xFF000000 + main_palette[screen[x + (y * 320)]].r + (main_palette[screen[x + (y * 320)]].g << 8) + (main_palette[screen[x + (y * 320)]].b << 16);
pixel_data[x + (y * 320)] = color;
}
}
// Cedeix el control al Director. Quan Director::run() ens torne a fer
// resume(), continuarem just ací i el joc continuarà amb la següent
// iteració del seu loop sense bloquejos de mutex/cv.
GameFiber::yield();
}
Uint32* JD8_GetFramebuffer() {
@@ -254,20 +253,9 @@ bool JD8_FadeTickStep() {
return false;
}
void JD8_FadeOut() {
JD8_FadeStartOut();
while (true) {
const bool done = JD8_FadeTickStep();
JD8_Flip();
if (done) break;
}
}
void JD8_FadeToPal(JD8_Palette pal) {
JD8_FadeStartToPal(pal);
while (true) {
const bool done = JD8_FadeTickStep();
JD8_Flip();
if (done) break;
}
}
// Els shims bloquejants `JD8_FadeOut` i `JD8_FadeToPal` han estat
// eliminats a Phase B.2: feien un bucle de 32 iteracions amb `JD8_Flip`
// entre cada una que només funcionava mentre l'entorn tenia fibers i
// `JD8_Flip` cedia el control al Director. Ara tot fade es fa tick a
// tick via `scenes::PaletteFade` (que encapsula `JD8_FadeStartOut` /
// `JD8_FadeStartToPal` + `JD8_FadeTickStep`).