GtkComponentPeer realization

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

After a lot of debugging I finally found out why a program I was testing
was crashing sometimes. (The hsqldb AWT frontend - try the
org.hsqldb.util.DatabaseManager class from the hsqldb.jar as distributed
with OpenOffice for example.) A GtkGraphics object is created
differently for realized and un-realized components. When we get a paint
event for an unrealized component and try to use the associated
GdkGraphics object bad things happen (because NSA_GET_G_PTR returns null
in such cases).

The attached hack makes things work for now by just ignoring such paint
events for such objects. It gives:

NOT handling java.awt.event.PaintEvent[UPDATE,updateRect=java.awt.Rectangle[x=0,y=0,width=360,height=300]] on org.hsqldb.util.Grid[panel0,0,0,360x300,invalid,parent=panel1] for UNREALIZED org.hsqldb.util.Grid[panel0,0,0,360x300,invalid,parent=panel1]

I like to debug this a bit further, but I couldn't find good
documentation on the handling of (un)realized GtkComponentPeers. Does
anybody have a link or an explanation of whether or not the above should
ever happen?

Thanks,

Mark

diff -u -r1.100 GtkComponentPeer.java
--- gnu/java/awt/peer/gtk/GtkComponentPeer.java 8 Feb 2006 14:35:10 -0000      1.100
+++ gnu/java/awt/peer/gtk/GtkComponentPeer.java 9 Feb 2006 12:43:59 -0000
@@ -306,6 +306,13 @@
       {
         try
           {
+           if (! isRealized())
+             {
+               System.err.println("NOT handling " + event
+                                  + " for UNREALIZED " + awtComponent);
+               break;
+             }
+
             Graphics g = getGraphics();

             if (awtComponent.getWidth() < 1 || awtComponent.getHeight() < 1)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://developer.classpath.org/pipermail/classpath/attachments/20060209/1c6f6ba0/attachment.pgp

[Index of Archives]     [Linux Kernel]     [Linux Cryptography]     [Fedora]     [Fedora Directory]     [Red Hat Development]

  Powered by Linux