Don't call GL functions in OpenGl3Renderer::GetIdent.

GetIdent is called from an UI event callback, at which point there
might well not be an active GL context. Before this commit, that
would return a NULL pointer and result in a crash.
pull/513/head
whitequark 2019-11-25 10:51:29 +00:00
parent 22525e6515
commit 0501f0c99e
1 changed files with 10 additions and 3 deletions

View File

@ -87,6 +87,9 @@ public:
Fill *fill;
std::weak_ptr<const Pixmap> texture;
} current;
const char *vendor = "<uninitialized>";
const char *renderer = "<uninitialized>";
const char *version = "<uninitialized>";
// List-initialize current to work around MSVC bug 746973.
OpenGl3Renderer() :
@ -440,6 +443,10 @@ void OpenGl3Renderer::Init() {
meshRenderer.Init();
imeshRenderer.Init();
vendor = (const char *)glGetString(GL_VENDOR);
renderer = (const char *)glGetString(GL_RENDERER);
version = (const char *)glGetString(GL_VERSION);
#if !defined(HAVE_GLES) && !defined(__APPLE__)
GLuint array;
glGenVertexArrays(1, &array);
@ -696,9 +703,9 @@ std::shared_ptr<Pixmap> OpenGl3Renderer::ReadFrame() {
}
void OpenGl3Renderer::GetIdent(const char **vendor, const char **renderer, const char **version) {
*vendor = (const char *)glGetString(GL_VENDOR);
*renderer = (const char *)glGetString(GL_RENDERER);
*version = (const char *)glGetString(GL_VERSION);
*vendor = this->vendor;
*renderer = this->renderer;
*version = this->version;
}
void OpenGl3Renderer::SetCamera(const Camera &c) {