Bug 111

Summary: GLCanvas and JTabbedPane incompatibility.
Product: [JogAmp] Jogl Reporter: Sven Gothel <sgothel>
Component: coreAssignee: Sven Gothel <sgothel>
Severity: normal    
Priority: P2    
Version: 1   
Hardware: All   
OS: all   
Type: DEFECT SCM Refs:
Workaround: ---
Attachments: the prog displays a JTabbedPane using the same GLCanvas for each tab. adding a tab dynamically crashes the app.

Description Sven Gothel 2010-03-24 07:46:57 CET

---- Reported by nopalot 2004-10-05 12:39:23 ----

i tried to use a GLCanvas together with a JTabbedPane. Therefore i've inherited 
a new class from JPanel which implements GLEventListener.
If i try to add one tab as a reaction of a user interaction (pushed button) the 
program terminates with "Unable to set pixel format" GLException on windows or 
with "Xlib: unexpected async reply (sequence 0x2d1)!" on linux.
However, if the tabs are added in the constructor of the class that creates the 
JTabbedPane, everything works well.

Ive tried to fix the problem by creating just one GLCanvas which is used for 
all tabs. (rather than creating a GLCanvas for each tab) But the same probem 
appeared. This approach has also revealed that if one GLCanvas is added to 
various tabs, only the last tab will display the GLCanvas. All previously 
created tabs will 'lose' there GLCanvas object. (GLEventListener.display() is 
no longer called automatically, calling GlCanvas.display() manualy doesnt 
display anything....)

Please let me know if you need any further information.
Thanks in advance,
nop nop nop...

---- Additional Comments From nopalot 2004-10-05 12:44:03 ----

Created an attachment
the prog displays a JTabbedPane using the same GLCanvas for each tab. adding a tab dynamically crashes the app.

---- Additional Comments From kbr 2005-01-31 16:11:42 ----

I no longer see crashes (on Windows) with the latest fixes to the
JOGL_SINGLE_THREADED_WORKAROUND for ATI cards, in particular recent
Windows-specific fixes. The changes are currently in the JOGL CVS repository and
will be present in JOGL 1.1 b08. Please retest once this version ships (or with
the current CVS sources) and reopen this bug if problems still occur. If they
do, please indicate whether specifying -DJOGL_SINGLE_THREADED_WORKAROUND=true on
the command line works around the issues.

Regarding adding heavyweights like GLCanvas to a JTabbedPane: the JTabbedPane is
a lightweight component and I would expect that adding a GLCanvas to it would
have all of the same problems (maybe more) as putting a GLCanvas into a
JInternalFrame. You will probably need to do some bookkeeping and manally add
and remove the GLCanvas depending on which tab is visible. We'll try to
accelerate the GLJPanel some more using pbuffers in an upcoming JOGL release for
better performance with full Swing compatibility.

--- Bug imported by sgothel@jausoft.com 2010-03-24 07:46 EDT  ---

This bug was previously known as _bug_ 111 at https://jogl.dev.java.net/bugs/show_bug.cgi?id=111
Imported an attachment (id=26)

The original submitter of attachment 26 [details] is unknown.
   Reassigning to the person who moved it here: sgothel@jausoft.com.