Author Topic: ClassCastException while using AWTGL renderer  (Read 1158 times)

Offline madhava.s

  • byte
  • *
  • Posts: 16
    • View Profile
ClassCastException while using AWTGL renderer
« on: February 14, 2013, 03:35:35 pm »
Below is the exception i'm getting.

I'm spanning a separate thread for rendering as Below.
Code: [Select]

     new Thread(){
        @Override
        public void run(){
         while(true){   
            buffer.clear(java.awt.Color.WHITE);
            world.renderScene(buffer);
            world.draw(buffer);
            buffer.update();
            buffer.displayGLOnly();
            canvas.repaint();
            try {
                sleep(100);
            } catch (InterruptedException ex) {
                //do nothing     
            }
         }
        }
     }.start();
   
Getting the below exception
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: java.lang.ClassCastException: com.threed.jpct.Camera cannot be cast to com.threed.jpct.World
   at com.threed.jpct.AWTJPCTCanvas.paintGL(AWTJPCTCanvas.java:233)
   at org.lwjgl.opengl.AWTGLCanvas.paint(AWTGLCanvas.java:339)
   at org.lwjgl.opengl.AWTGLCanvas.update(AWTGLCanvas.java:368)
   at sun.awt.RepaintArea.updateComponent(RepaintArea.java:239)
   at sun.awt.RepaintArea.paint(RepaintArea.java:216)
   at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:310)
   at java.awt.Component.dispatchEventImpl(Component.java:4727)
   at java.awt.Component.dispatchEvent(Component.java:4481)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
   at java.awt.EventQueue.access$000(EventQueue.java:84)
   at java.awt.EventQueue$1.run(EventQueue.java:602)
   at java.awt.EventQueue$1.run(EventQueue.java:600)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
   at java.awt.EventQueue$2.run(EventQueue.java:616)
   at java.awt.EventQueue$2.run(EventQueue.java:614)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.ClassCastException: com.threed.jpct.Camera cannot be cast to com.threed.jpct.World
   at com.threed.jpct.AWTGLRenderer.executeGL(AWTGLRenderer.java:125)
   at com.threed.jpct.AWTJPCTCanvas.paintGL(AWTJPCTCanvas.java:190)
   ... 25 more






Offline madhava.s

  • byte
  • *
  • Posts: 16
    • View Profile
Re: ClassCastException while using AWTGL renderer
« Reply #1 on: February 14, 2013, 03:36:10 pm »
Manifest info

Manifest-Version: 1.0
Created-By: EgonOlsen
Version: 1.15beta3

Offline EgonOlsen

  • Administrator
  • quad
  • *****
  • Posts: 11748
    • View Profile
    • http://www.jpct.net
Re: ClassCastException while using AWTGL renderer
« Reply #2 on: February 14, 2013, 05:44:45 pm »
Not sure why this happens and i can't look at it ATM, but have you tried to move creation of the frame buffer inside your own thread?

Offline EgonOlsen

  • Administrator
  • quad
  • *****
  • Posts: 11748
    • View Profile
    • http://www.jpct.net
Re: ClassCastException while using AWTGL renderer
« Reply #3 on: February 14, 2013, 09:07:13 pm »
I can't reproduce this and looking at jPCT's code, this is actually one of these "this can't happen" errors...unless you have another thread that does funny things with jPCT related objects in parallel to your rendering thread. Do you?

Offline madhava.s

  • byte
  • *
  • Posts: 16
    • View Profile
Re: ClassCastException while using AWTGL renderer
« Reply #4 on: February 15, 2013, 04:07:43 am »
Quote
unless you have another thread that does funny things with jPCT related objects in parallel to your rendering thread. Do you?
yes Egon, there's another thread that keeps polling mouse and keyboard transforming, removing adding objects based on action. And another thing is ,
I get the error when I decrease the sleep time when I give sleep time above 1000 it never happens

Offline madhava.s

  • byte
  • *
  • Posts: 16
    • View Profile
Re: ClassCastException while using AWTGL renderer
« Reply #5 on: February 15, 2013, 04:09:38 am »
It's not consistently reproducible, when i try to reproduce It many times it ends in
ArrayOutOfBoundException in visList.

Offline EgonOlsen

  • Administrator
  • quad
  • *****
  • Posts: 11748
    • View Profile
    • http://www.jpct.net
Re: ClassCastException while using AWTGL renderer
« Reply #6 on: February 15, 2013, 07:20:16 am »
yes Egon, there's another thread that keeps polling mouse and keyboard transforming, removing adding objects based on action.
Don't do that! jPCT isn't thread safe: http://www.jpct.net/wiki/index.php/Multithreading#Thread_safety
« Last Edit: February 15, 2013, 07:21:56 am by EgonOlsen »

Offline CamKrist

  • byte
  • *
  • Posts: 1
    • View Profile
Re: ClassCastException while using AWTGL renderer
« Reply #7 on: February 15, 2013, 04:15:40 pm »
Similar matter has already been discussed at yahoo answers. I can post the link if needed
I'm on Twitter and my essay