diff options
author | Michael Lutz <michi@icosahedron.de> | 2021-01-16 16:43:09 +0100 |
---|---|---|
committer | Michael Lutz <michi@icosahedron.de> | 2021-02-22 22:16:07 +0100 |
commit | 73ed748deb65f14f280b8cefebb0a6beff16a4a5 (patch) | |
tree | 0705eac7965d4dd07ac523fe2e2be8e1b453d07f /src/video/win32_v.cpp | |
parent | 5ad545dcc16a27cdabd8636f4970ee12b9cec54b (diff) | |
download | openttd-73ed748deb65f14f280b8cefebb0a6beff16a4a5.tar.xz |
Codechange: [Win32] Move the global video buffer pointer into the driver class.
Diffstat (limited to 'src/video/win32_v.cpp')
-rw-r--r-- | src/video/win32_v.cpp | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/video/win32_v.cpp b/src/video/win32_v.cpp index 6df1d3528..f66f2d9f8 100644 --- a/src/video/win32_v.cpp +++ b/src/video/win32_v.cpp @@ -41,7 +41,6 @@ #endif static struct { - void *buffer_bits; ///< Internal rendering buffer. int width; ///< Width in pixels of our display surface. int height; ///< Height in pixels of our display surface. int width_org; ///< Original monitor resolution width, before we changed it. @@ -1112,7 +1111,9 @@ float VideoDriver_Win32Base::GetDPIScale() bool VideoDriver_Win32Base::LockVideoBuffer() { if (_draw_threaded) this->draw_lock.lock(); - _screen.dst_ptr = _wnd.buffer_bits; + + _screen.dst_ptr = this->GetVideoPointer(); + return true; } @@ -1172,14 +1173,14 @@ bool VideoDriver_Win32GDI::AllocateBackingStore(int w, int h, bool force) if (this->dib_sect) DeleteObject(this->dib_sect); HDC dc = GetDC(0); - this->dib_sect = CreateDIBSection(dc, bi, DIB_RGB_COLORS, (VOID **)&_wnd.buffer_bits, nullptr, 0); + this->dib_sect = CreateDIBSection(dc, bi, DIB_RGB_COLORS, (VOID **)&this->buffer_bits, nullptr, 0); if (this->dib_sect == nullptr) usererror("CreateDIBSection failed"); ReleaseDC(0, dc); _screen.width = w; _screen.pitch = (bpp == 8) ? Align(w, 4) : w; _screen.height = h; - _screen.dst_ptr = _wnd.buffer_bits; + _screen.dst_ptr = this->GetVideoPointer(); return true; } @@ -1307,11 +1308,11 @@ void VideoDriver_Win32GDI::PaintThread() { static int _fooctr; - _screen.dst_ptr = _wnd.buffer_bits; - UpdateWindows(); - VideoDriver_Win32GDI *drv = static_cast<VideoDriver_Win32GDI *>(VideoDriver::GetInstance()); + _screen.dst_ptr = drv->GetVideoPointer(); + UpdateWindows(); + drv->Paint(); GdiFlush(); @@ -1445,10 +1446,12 @@ bool VideoDriver_Win32OpenGL::AllocateBackingStore(int w, int h, bool force) if (this->gl_rc == nullptr) return false; this->dirty_rect = {}; + return OpenGLBackend::Get()->Resize(w, h, force); +} - bool res = OpenGLBackend::Get()->Resize(w, h); - _wnd.buffer_bits = OpenGLBackend::Get()->GetVideoBuffer(); - return res; +void *VideoDriver_Win32OpenGL::GetVideoPointer() +{ + return OpenGLBackend::Get()->GetVideoBuffer(); } void VideoDriver_Win32OpenGL::Paint() |