--- nono/vm/renderer.h 2026/04/29 17:04:42 1.1.1.4 +++ nono/vm/renderer.h 2026/04/29 17:04:50 1.1.1.6 @@ -24,10 +24,11 @@ class Renderer : public Device static const uint REQ_TERMINATE = 0x01; // スレッド終了指示 static const uint REQ_REND_POWEROFF = 0x02; // 電源オフ時の描画指示 static const uint REQ_REND_NORMAL = 0x04; // 通常の描画指示 + static const uint REQ_INVALIDATE = 0x08; // 全画面更新指示 public: Renderer(); - ~Renderer() override; + virtual ~Renderer() override; bool Init() override; bool PowerOff() override; @@ -39,6 +40,9 @@ class Renderer : public Device // 画面合成処理 (CRTC とかから呼ばれる) void Render(); + // 全画面無効化の指示 (パレット変更で呼ばれる) + void Invalidate(); + // 仮想画面幅(ピクセル)を取得 int GetWidth() const { return width; } @@ -70,6 +74,9 @@ class Renderer : public Device // ここから直接 wxWindow::Refresh() を呼べないため。 void (*refresh_callback)(void) {}; + // 次の画面更新で全画面を無効化する場合は true + bool invalidate {}; + // リクエストフラグ uint32 request {}; std::mutex mtx {}; @@ -91,7 +98,7 @@ class X68030Renderer : public Renderer using inherited = Renderer; public: X68030Renderer(); - ~X68030Renderer() override; + virtual ~X68030Renderer() override; bool RenderMain() override; }; @@ -104,9 +111,14 @@ class LunaRenderer : public Renderer using inherited = Renderer; public: LunaRenderer(); - ~LunaRenderer() override; + virtual ~LunaRenderer() override; + + bool Init() override; bool RenderMain() override; + + private: + const uint8 *pal {}; }; extern std::unique_ptr gRenderer;