[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug-kawa] [bugs #12105] Can't call out from define-simple-class methods
From: |
Steve Yegge |
Subject: |
[Bug-kawa] [bugs #12105] Can't call out from define-simple-class methods on Swing thread |
Date: |
Wed, 23 Feb 2005 05:57:31 +0000 |
User-agent: |
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0 |
URL:
<http://savannah.gnu.org/bugs/?func=detailitem&item_id=12105>
Summary: Can't call out from define-simple-class methods on
Swing thread
Project: Kawa
Submitted by: stevey
Submitted on: Wed 02/23/2005 at 05:57
Category: Scheme language
Severity: 5 - Average
Item Group: Run-time exception
Status: None
Privacy: Public
Assigned to: None
Open/Closed: Open
_______________________________________________________
Details:
If you try to call an ordinary function from a member
function (latest CVS sources) on a thread other than
the main thread, you get a NullPointerException;
Environment.global is null.
The easiest way to see this is with a little Swing app:
#!/usr/bin/env kawa
(define (draw-board g :: <java.awt.Graphics>)
(display "hi"))
(define-simple-class <SokoPanel> (<javax.swing.JPanel>)
((update g :: <java.awt.Graphics>) :: <void>
(invoke (this) 'paint g))
((paint g :: <java.awt.Graphics>) :: <void>
(draw-board g)))
(let ((frame (make <javax.swing.JFrame> "test")))
(let ((root (invoke frame 'getContentPane)))
(invoke root 'add (make <SokoPanel>)))
(invoke frame 'setSize 300 300)
(invoke frame 'setDefaultCloseOperation
(static-field <javax.swing.WindowConstants> 'EXIT_ON_CLOSE))
(invoke frame 'setVisible #t))
(The size and close op are just there so you can easily
kill the app after the exception, but are otherwise
irrelevant.)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at gnu.mapping.ThreadLocation.getLocation(ThreadLocation.java:70)
at gnu.mapping.ThreadLocation.get(ThreadLocation.java:103)
at gnu.mapping.Location.get(Location.java:65)
at SokoPanel.paint(test.scm:10)
at javax.swing.JComponent.paintChildren(JComponent.java:840)
at javax.swing.JComponent.paint(JComponent.java:1012)
at javax.swing.JComponent.paintChildren(JComponent.java:840)
at javax.swing.JComponent.paint(JComponent.java:1012)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:559)
at javax.swing.JComponent.paintChildren(JComponent.java:840)
at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4937)
at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4883)
at javax.swing.JComponent.paint(JComponent.java:993)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21)
at
sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
at
sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
at java.awt.Container.paint(Container.java:1709)
at sun.awt.RepaintArea.paintComponent(RepaintArea.java:248)
at sun.awt.RepaintArea.paint(RepaintArea.java:224)
at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:254)
at java.awt.Component.dispatchEventImpl(Component.java:4031)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Window.dispatchEventImpl(Window.java:1766)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
This is a blocking issue with no apparent workaround.
_______________________________________________________
This item URL is:
<http://savannah.gnu.org/bugs/?func=detailitem&item_id=12105>
_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Bug-kawa] [bugs #12105] Can't call out from define-simple-class methods on Swing thread,
Steve Yegge <=