# HG changeset patch # User Michael Lutz # Date 2021-04-24 22:43:38 # Node ID 3b1b500a06d6762502646b333394d04fb8fa3a2f # Parent b20f15e2e2767584df60cb5f896fd1a5e50fefcc Fix: [OpenGL] Main loop expects to start with the video buffer unmapped. (#9100) diff --git a/src/video/opengl.cpp b/src/video/opengl.cpp --- 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 --- a/src/video/sdl2_opengl_v.cpp +++ b/src/video/sdl2_opengl_v.cpp @@ -74,6 +74,8 @@ const char *VideoDriver_SDL_OpenGL::Star 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 --- a/src/video/win32_v.cpp +++ b/src/video/win32_v.cpp @@ -1311,6 +1311,8 @@ const char *VideoDriver_Win32OpenGL::Sta _cur_resolution = old_res; return "Can't get pointer to screen buffer"; } + /* Main loop expects to start with the buffer unmapped. */ + this->ReleaseVideoPointer(); MarkWholeScreenDirty();