openGL renderer attached - > GUI blacks out (for a short time) in Logic Pro (latest version)

When attaching the GL-Renderer to a Component inside a PluginEditor, the editor blacks out for a short time.

I think this was introduced due the latest changes regarding OpenGL,

in Logic Pro / AudioUnit Arm + Intel / MacBook Air M1

yes, I checked it. The behaviour was introduced with

commit 54423f65836869ef354ba7243af6667e66dfe8f8 (HEAD)
Author: reuk <reuk@users.noreply.github.com>
Date:   Wed May 19 14:47:35 2021 +0100

OpenGL:  Add GLEW-inspired dynamic function loading

It was only a few milliseconds before, now it takes a half second (which is not acceptable I think)

Can that be, or am I just imagining it?

…the change is currently not in master, I am curious if others will also report this. @reuk

I am noticing this behavior of about 1s editor blackout time myself in LogicPro X on an Intel MacBook Pro for my current development AU plugin. I am working with the latest GL-related commits from develop.

I have not AB tested without these newer GL commits, so I am not sure they are the cause of my blackout. A previous plugin my company developed, which did not use these newer GL commits, also has this blackout occasionally due to attaching to an OpenGLContext. It seems this previous plugin’s blackout is a bit shorter, maybe half a second.

But maybe there are other reasons you’re noticing a longer blackout. Maybe this blackout is longer when you’ve built in Debug mode vs Release?

One possible workaround for this is to attach the OpenGLContext in a delayed fashion using a Timer, as some people have experienced a less noticeable blackout or flash.

This is the approach my company took with the prior plugin mentioned above. This approach seemed to make our plugin blackout during OpenGLContext attachment less often, but occasionally I do see it in Logic AU but about a half second blackout.

You may already be aware of these things, but thought it might help to share my experience.

I’ve made some changes to the function-loading code. Hopefully this should make things a bit faster:

This change improved things for me - hopefully it’ll fix things for you too. Please try it out and let me know if you encounter any new issues.

2 Likes

Thanks a ton for all your recent OpenGL work in JUCE, it has been extremely helpful!

Is there a way to avoid loading everything available with gl::loadFunctions()?

Even with these changes it’s one of the biggest ticket items that occurs before our first renderOpenGL callback.

Or another option would be giving us a static function to load it elsewhere once, instead of every UI open.