Opened 6 years ago

Last modified 6 years ago

#2927 accepted defect

Docked widgets not redrawn

Reported by: Tristan Croll Owned by: pett
Priority: major Milestone:
Component: UI Version:
Keywords: Cc: Tom Goddard
Blocked By: Blocking:
Notify when closed: Platform: Linux64 (X11)
Project: ChimeraX

Description

This has happened in my presence twice now. The first time was in my home-compiled devtoolset-7 daily build of ChimeraX, the second in a 0.91 release build on a colleague's computer. In both cases we were working with ISOLDE, but I have no idea if that's relevant. I can't remember the trigger in the first case, but today when saving the session everything in the main window apart from the OpenGL molecule display disappeared/stopped drawing (just blank grey). The OpenGL window itself was still fully functional, responding as normal to the mouse. I tried clicking around the grey area to see if the buttons were still present but hidden, and didn't get any response. In the first case I had the shell open in a separate window and that was also still functional. Not a whole lot to go on, I know.

Change History (5)

comment:1 by Tristan Croll, 6 years ago

Forgot to add: in today's case, we had already successfully saved and restored the session a few times over. Clearly a quite intermittent problem.

comment:2 by pett, 6 years ago

Cc: Tom Goddard added
Status: assignedaccepted
Summary: All widgets occasionally disappearDocked widgets not redrawn

comment:3 by pett, 6 years ago

I have seen this before, exactly once I believe!

comment:4 by Tom Goddard, 6 years ago

About 1-2 years ago I used to see the all Qt is blank problem on Mac a few times a month. Not sure if it was fixed by us or by Qt but it stopped happening a year ago. I never use Linux so have not seen it on Linux. Qt renders all its widgets with OpenGL, so the blank GUIs suggest the Qt OpenGL context broke. This could happen if ChimeraX tried to do some OpenGL but mistakenly did not activate our OpenGL context and Qt's was active, or if Qt tried to draw or set some OpenGL state without activating the Qt OpenGL context and our context was active. In either case some critical OpenGL state needed by Qt would not be set on the Qt OpenGL context. The fact that OpenGL uses this global context is a nightmare, atrocious design of OpenGL, and very susceptible to bugs when different libraries are making use of OpenGL in the same app.

Does resizing the main window make the Qt GUI come back after it goes blank?

Unless we get a reproducible case it is unlikely we will be able to solve this.

comment:5 by pett, 6 years ago

Vulkan FTW!

Note: See TracTickets for help on using tickets.