--- nono/vm/renderer.h 2026/04/29 17:04:28 1.1.1.1 +++ nono/vm/renderer.h 2026/04/29 17:04:36 1.1.1.3 @@ -1,6 +1,9 @@ // // nono -// Copyright (C) 2018 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt +// + // // レンダラ // @@ -13,7 +16,7 @@ class Renderer : public Device { - typedef Device inherited; + using inherited = Device; public: // wxWidgets のビットマップは R8_G8_B8 の3バイト。 static const int BPP = 3; @@ -24,10 +27,10 @@ class Renderer : public Device public: Renderer(); - virtual ~Renderer(); + ~Renderer() override; - virtual bool Init(); - virtual bool PowerOff(); + bool Init() override; + bool PowerOff() override; // バッファとコールバック関数を指定 // XXX 名前... @@ -71,6 +74,13 @@ class Renderer : public Device uint32 request = 0; std::mutex mtx {}; std::condition_variable cv {}; + + private: + pthread_t thread {}; + bool thread_created = false; // スレッドが作成されたら true + + // スレッドの終了を指示 + void Terminate(); }; // @@ -78,12 +88,12 @@ class Renderer : public Device // class X68030Renderer : public Renderer { - typedef Renderer inherited; + using inherited = Renderer; public: X68030Renderer(); - virtual ~X68030Renderer(); + ~X68030Renderer() override; - virtual bool RenderMain(); + bool RenderMain() override; }; // @@ -91,12 +101,12 @@ class X68030Renderer : public Renderer // class LunaRenderer : public Renderer { - typedef Renderer inherited; + using inherited = Renderer; public: LunaRenderer(); - virtual ~LunaRenderer(); + ~LunaRenderer() override; - virtual bool RenderMain(); + bool RenderMain() override; }; -extern Renderer *gRenderer; +extern std::unique_ptr gRenderer;