JDK-8089313 : Transparent stage resize flickers on Mac
  • Type: Bug
  • Component: javafx
  • Sub-Component: graphics
  • Affected Version: fx2.0.2
  • Priority: P4
  • Status: Resolved
  • Resolution: Cannot Reproduce
  • Submitted: 2011-11-15
  • Updated: 2015-11-05
  • Resolved: 2015-07-17
Related Reports
Duplicate :  
Relates :  
Relates :  
Description
Resizing the stage causes window flickering on Mac OS X Lion. 

To confirm that this is not just our application, I ran the "Advanced Area Chart" demo of the Ensemble application. Resizing the Ensemble window very fast on my Apple LED Cinema display at high resolution, caused moderate flickering - I could resize it perhaps 10-12 times moving my mouse back and forth rapidly and then it would do a full window flicker where the window is all black for perhaps 100 milliseconds.

I am testing on a new high performance Mac Pro with a 1GB Radeon 5870 graphics card, so I expect the results to be worse on other systems. 

In my own application, the background is transparent because we render a window with rounded corners. In this app, the flickering looks extreme. Even just slowly dragging the resize handle of the window leads to constant full window flickering - it looks as if the window paints all transparent every second frame and fully rendered every other frame.

I realize that the clear difference between my app and the Ensemble demo could prove that this is application specific. But it could also prove that running an application with 

		stage.initStyle(StageStyle.TRANSPARENT);
		stage.setResizable(true);

in general causes flickering on the Mac, because as soon as I remove the initStyle call, the flickering is reduced to what is seen in the Ensemble app.

With StageStyle.TRANSPARENT I tried simplifying our app by removing all but one of my tabbed panes and showing only very little content, and the flickering is still extreme. I even restyled the app to replace the large gradient background with a solid color. Still the same extreme flickering.

I improved the situation by adding
		setCache(true);
to the root node of the scene. Now if I resize the window from 1920x1080 down to half the size, it flickers only perhaps 3-4 times in the process, and not every other frame as before. But it still flickers from fully transparent to fully painted and often enough to look pretty bad.

I sincerely hope we will be able to fix this before our application is shown to customers, but I am afraid it is a bug in JavaFX.

Comments
This is likely related to the old live resize bug that was fixed.
17-07-2015

This is probably the same issue as RT-19342
20-03-2012