diff --git a/src/video/win32_v.h b/src/video/win32_v.h --- a/src/video/win32_v.h +++ b/src/video/win32_v.h @@ -37,15 +37,20 @@ protected: void InputLoop() override; bool LockVideoBuffer() override; void UnlockVideoBuffer() override; - void Paint() override; - void PaintThread() override; void CheckPaletteAnim() override; bool MakeWindow(bool full_screen); + /** (Re-)create the backing store. */ + virtual bool AllocateBackingStore(int w, int h, bool force = false) = 0; + /** Palette of the window has changed. */ + virtual void PaletteChanged(HWND hWnd) = 0; + private: std::unique_lock draw_lock; + void ClientSizeChanged(int w, int h); + static void PaintThreadThunk(VideoDriver_Win32Base *drv); friend LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); @@ -60,6 +65,13 @@ public: bool AfterBlitterChange() override; const char *GetName() const override { return "win32"; } + +protected: + void Paint() override; + void PaintThread() override; + + bool AllocateBackingStore(int w, int h, bool force = false) override; + void PaletteChanged(HWND hWnd) override; }; /** The factory for Windows' video driver. */