summaryrefslogtreecommitdiff
path: root/src/video
diff options
context:
space:
mode:
authorMichael Lutz <michi@icosahedron.de>2021-04-25 00:43:38 +0200
committerGitHub <noreply@github.com>2021-04-25 00:43:38 +0200
commitf4d5c8d99e9071efc54483f44b74a6d3c2a05214 (patch)
tree819e034d221a3e84b07075d8e4cb9234960f0a71 /src/video
parentfbc232569c149518911ca66fa8d71e2ef2183439 (diff)
downloadopenttd-f4d5c8d99e9071efc54483f44b74a6d3c2a05214.tar.xz
Fix: [OpenGL] Main loop expects to start with the video buffer unmapped. (#9100)
Diffstat (limited to 'src/video')
-rw-r--r--src/video/opengl.cpp1
-rw-r--r--src/video/sdl2_opengl_v.cpp2
-rw-r--r--src/video/win32_v.cpp2
3 files changed, 5 insertions, 0 deletions
diff --git a/src/video/opengl.cpp b/src/video/opengl.cpp
index 1eab9b10e..ecafeb613 100644
--- a/src/video/opengl.cpp
+++ b/src/video/opengl.cpp
@@ -1154,6 +1154,7 @@ void *OpenGLBackend::GetVideoBuffer()
#endif
if (!this->persistent_mapping_supported) {
+ assert(this->vid_buffer == nullptr);
_glBindBuffer(GL_PIXEL_UNPACK_BUFFER, this->vid_pbo);
this->vid_buffer = _glMapBuffer(GL_PIXEL_UNPACK_BUFFER, GL_READ_WRITE);
} else if (this->vid_buffer == nullptr) {
diff --git a/src/video/sdl2_opengl_v.cpp b/src/video/sdl2_opengl_v.cpp
index 9c84c36b1..003e19438 100644
--- a/src/video/sdl2_opengl_v.cpp
+++ b/src/video/sdl2_opengl_v.cpp
@@ -74,6 +74,8 @@ const char *VideoDriver_SDL_OpenGL::Start(const StringList &param)
this->Stop();
return "Can't get pointer to screen buffer";
}
+ /* Main loop expects to start with the buffer unmapped. */
+ this->ReleaseVideoPointer();
return nullptr;
}
diff --git a/src/video/win32_v.cpp b/src/video/win32_v.cpp
index 1dc1db8ce..f0291db71 100644
--- a/src/video/win32_v.cpp
+++ b/src/video/win32_v.cpp
@@ -1311,6 +1311,8 @@ const char *VideoDriver_Win32OpenGL::Start(const StringList &param)
_cur_resolution = old_res;
return "Can't get pointer to screen buffer";
}
+ /* Main loop expects to start with the buffer unmapped. */
+ this->ReleaseVideoPointer();
MarkWholeScreenDirty();