[Development] Spurious Flickering on Mac OS X Moutain Lion (Qt 4.8, OpenGL, QML 1.1)

Nicolas Tisserand nt at manctl.com
Wed Jan 16 18:39:16 CET 2013


Hello, Qt Developers.

I'm new to this list, and did not get a chance to introduce myself before these:

https://codereview.qt-project.org/#change,42191
https://codereview.qt-project.org/#change,42190

I am currently porting a Mac/Pc/Linux Qt 4.8 + OpenGL + QML 1.1
application from Mac OS X 10.6.8 to 10.8.2.

Its entire graphical interface is drawn inside a custom declarative
view instance initialized with a main QML item containing a mix of
custom OpenGL items and standard QML 1.1 items.

Rendering runs smoothly on Snow Leopard and on all the other supported
platforms, but exhibits intermittent flickering when built and run on
Mountain Lion.

I've tried toggling various things and poking around the
initialization of the declarative view and widget, but nothing helped,
so far.

This problem is pretty hard to diagnose, so I was hoping to get help
from someone in here that would have experienced similar behavior with
Qt 4.8 on 10.8, or get advice on what to inspect, check, or watch for,
in order to get rid of the flickering.

I also wonder if the application relies on undefined behavior on the
other platforms, or if there indeed is a bug in Qt 4.8 on Mountain
Lion regarding our specific use case.

I've uploaded a screen recording exhibiting the problem here:
http://vimeo.com/manctl/skanect-mountain-lion-flicker

What you see on this video is a main QML ListView that displays the
different application screens in a custom VisualItemModel, one by one.
Scrolling this list will reveal new screens and hide old ones,
triggering ItemSceneHasChanged events on all their items. Some of
these screen items are custom OpenGL items that call custom OpenGL
context initialization & shutdown code when entering and leaving
scenes, in order to preserve GPU memory. This is when flickering seems
to kick in. The application also flickers at startup, probably because
of the same problem.

I am sorry that I could not find more time to produce any minimal code
reproducing the issue just now, but will try to. Meanwhile, anything
helps!

Cheers,
Nicolas



More information about the Development mailing list