Vista/Win7 Fullscreen: Vanishing Palettes

I’ve got a JOGL-based fullscreen (non-exclusive mode) application that exhibits weird drawing/windowing behavior in Win7 and Vista, but not XP. None of the fixes mentioned in these threads did the trick:


The main components are a GLCanvas that lives in a JFrame, and two modeless JFrame tool palettes which should always be drawn on top of the canvas. On launch, only the GLCanvas appears. By Alt-Tabbing and ensuring the mouse is over either palette when releasing Alt-Tab, I can get the palettes to appear correctly. As soon as I mouse back over the canvas, the screen briefly goes black, then returns to the original state: canvas visible, palettes invisible.

Two possibly useful details:

  • I can interact with the palettes (e.g. click buttons, resize) even when they’re not visible.
  • I recently discovered an odd workaround: Opening and closing any of the app’s modal dialogs puts everything in a proper, working state. (If you Alt-Tab away from the app and return, of course, it’s back to square one.)

I appear to be running against JOGL 1.1.1, which I realize is dated, but it’s worked well until we discovered this problem. I’m wondering if moving to a newer version of JOGL is at all likely make a difference.

If not, any other ideas/suggestions would be hugely appreciated. I’ve spent quite a bit of time on this with no luck. Thanks!

Hi

Anyway you have to move to JOGL 2.0 because JOGL 1.1.1a is no more maintained, no fix will be backported.

Do you use JInternalFrame? If so, rather use GLJPanel even though it has a bigger memory footprint. Which version of Java do you use? Mixing heavyweight and lightweight components is reliably possible on Java 1.7 and on latest updates of Java 1.6.

I already succeeded in writing an Eclipse RCP application with a GLCanvas (javax.media.awt.GLCanvas, not its brand new SWT equivalent introduced in JOGL 2.0) in a Composite with a JInternalFrame containing lots of Swing components, even a JColorChooser. It works damn good, even with some transparency so that you can see the models in 3D behind the JInternalFrame. I had no problem on Windows, my colleagues tested mainly on Vista and XP.

Software simulated fullscreen mode is fine for games in some cases, I used it for years. However, you may have some problems for real applications with several frames having different Z orders…

Are you forced to use modal dialogs?

Looks like heavyweight/lightweight mixing is supported as of 1.6.0_12. I’m running against 1.6.0_29-b11, should be okay.

No explicit use of JInternalFrame.

The palettes are modeless and the modal dialogs in the app work just fine - did you mean modeless? :slight_smile:

In my humble opinion, you should not use several JFrame instances, you should use a single JFrame containing a GLCanvas (or another JOGL canvas like GLJPanel and GLWindow) and some JInternalFrame instances for your palettes.