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)
|
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)
|
if (ui != nullptr)
|
||||||
{
|
{
|
||||||
const GLubyte* vendor = glGetString(GL_VENDOR);
|
const GLubyte* vendor = glGetString(GL_VENDOR);
|
||||||
|
|
@ -343,6 +359,8 @@ Window::~Window() {
|
||||||
internal->fontCache.clear();
|
internal->fontCache.clear();
|
||||||
internal->imageCache.clear();
|
internal->imageCache.clear();
|
||||||
|
|
||||||
|
if (vg != nullptr)
|
||||||
|
{
|
||||||
#if defined NANOVG_GLES2
|
#if defined NANOVG_GLES2
|
||||||
nvgDeleteGLES2(internal->o_fbVg != nullptr ? internal->o_fbVg : fbVg);
|
nvgDeleteGLES2(internal->o_fbVg != nullptr ? internal->o_fbVg : fbVg);
|
||||||
nvgDeleteGLES2(internal->o_vg != nullptr ? internal->o_vg : vg);
|
nvgDeleteGLES2(internal->o_vg != nullptr ? internal->o_vg : vg);
|
||||||
|
|
@ -351,6 +369,7 @@ Window::~Window() {
|
||||||
nvgDeleteGL2(internal->o_vg != nullptr ? internal->o_vg : vg);
|
nvgDeleteGL2(internal->o_vg != nullptr ? internal->o_vg : vg);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
delete internal;
|
delete internal;
|
||||||
}
|
}
|
||||||
|
|
@ -436,6 +455,9 @@ static void Window__writeImagePNG(void* context, void* data, int size) {
|
||||||
void Window::step() {
|
void Window::step() {
|
||||||
DISTRHO_SAFE_ASSERT_RETURN(internal->ui != nullptr,);
|
DISTRHO_SAFE_ASSERT_RETURN(internal->ui != nullptr,);
|
||||||
|
|
||||||
|
if (vg == nullptr)
|
||||||
|
return;
|
||||||
|
|
||||||
double frameTime = system::getTime();
|
double frameTime = system::getTime();
|
||||||
double lastFrameTime = internal->frameTime;
|
double lastFrameTime = internal->frameTime;
|
||||||
internal->frameTime = frameTime;
|
internal->frameTime = frameTime;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue