Do not crash if nanovg context creation fails
This commit is contained in:
parent
541e7dcf69
commit
9274f433cb
2 changed files with 27 additions and 5 deletions
2
dpf
2
dpf
|
@ -1 +1 @@
|
|||
Subproject commit 3a6995163a6807d127be76a953b2726726f833ca
|
||||
Subproject commit 98ecaa0255b1ec55b1d4161470d4969ed2c79d0c
|
|
@ -240,6 +240,22 @@ Window::Window() {
|
|||
|
||||
void WindowSetPluginUI(Window* const window, DISTRHO_NAMESPACE::UI* const ui)
|
||||
{
|
||||
// if nanovg context failed, init only bare minimum
|
||||
if (window->vg == nullptr)
|
||||
{
|
||||
if (ui != nullptr)
|
||||
{
|
||||
window->internal->ui = ui;
|
||||
window->internal->size = rack::math::Vec(ui->getWidth(), ui->getHeight());
|
||||
}
|
||||
else
|
||||
{
|
||||
window->internal->ui = nullptr;
|
||||
window->internal->callback = nullptr;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (ui != nullptr)
|
||||
{
|
||||
const GLubyte* vendor = glGetString(GL_VENDOR);
|
||||
|
@ -343,13 +359,16 @@ Window::~Window() {
|
|||
internal->fontCache.clear();
|
||||
internal->imageCache.clear();
|
||||
|
||||
if (vg != nullptr)
|
||||
{
|
||||
#if defined NANOVG_GLES2
|
||||
nvgDeleteGLES2(internal->o_fbVg != nullptr ? internal->o_fbVg : fbVg);
|
||||
nvgDeleteGLES2(internal->o_vg != nullptr ? internal->o_vg : vg);
|
||||
nvgDeleteGLES2(internal->o_fbVg != nullptr ? internal->o_fbVg : fbVg);
|
||||
nvgDeleteGLES2(internal->o_vg != nullptr ? internal->o_vg : vg);
|
||||
#else
|
||||
nvgDeleteGL2(internal->o_fbVg != nullptr ? internal->o_fbVg : fbVg);
|
||||
nvgDeleteGL2(internal->o_vg != nullptr ? internal->o_vg : vg);
|
||||
nvgDeleteGL2(internal->o_fbVg != nullptr ? internal->o_fbVg : fbVg);
|
||||
nvgDeleteGL2(internal->o_vg != nullptr ? internal->o_vg : vg);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
delete internal;
|
||||
|
@ -436,6 +455,9 @@ static void Window__writeImagePNG(void* context, void* data, int size) {
|
|||
void Window::step() {
|
||||
DISTRHO_SAFE_ASSERT_RETURN(internal->ui != nullptr,);
|
||||
|
||||
if (vg == nullptr)
|
||||
return;
|
||||
|
||||
double frameTime = system::getTime();
|
||||
double lastFrameTime = internal->frameTime;
|
||||
internal->frameTime = frameTime;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue