[vtkusers] vtk and Java : problem when remove a vtkactor to  avtkrenderer or add avtkrenderer to a vtkrenderwindow
    Romain Ollivier 
    Romain.Ollivier at sophia.inria.fr
       
    Wed Jul  9 08:20:39 EDT 2003
    
    
  
For my viewer, I use the class myVtkPanel wich extends vtkPanel with :
  public void removeActor(vtkProp actor)
  {
    Lock();
    ren.RemoveActor(actor);
    UnLock();
  }
  public void addActor(vtkProp actor)
  {
    Lock();
    ren.AddActor(actor);
    UnLock();
  }
Then, I have a myVtkJPanel class, wich extends a JPanel, containing this :
........
  private myVtkPanel view;
........
  public void addActor(vtkProp actor)
  {
    view.addActor(actor);
  }
  public void removeActor(vtkProp actor)
  {
    view.removeActor(actor);
  }
 My viewer use an instance of this JPanel. When I call the addActor() function in my viewer
constructor, I get this :
Exception in thread "main" java.lang.IllegalMonitorStateException: current thread not owner
        at vtk.vtkPanel.UnLock(Native Method)
        at myVtkPanel.addActor(myVtkPanel.java:33)
        at myVtkJPanel.addActor(myVtkJPanel.java:82)
        at myViewer.makeDataPanel(myViewer.java:86)
        at myViewer.<init>(myViewer.java:62)
        at myViewer.main(myViewer.java:190)
Do you know what I'm doing wrong when I use Lock() an UnLock() ?
Thank you for your help,
       Romain
Jeff Lee wrote:
> Hi,
> i think your solution with multiple renderers is not necessary, but I do
> something like
>
> public void removeActor(vtkActor actor)
>   {
>     Lock();
>     ren.RemoveActor(actor);
>     UnLock();
>   }
>
> inside vtkPanel.  I could add this functionality to vtkPanel, since
> adding/removing of actors is a common thing, but you could try it by
> sublcassing vtkPanel and adding the above.  This is not a graphics card
> problem.
> -Jeff
>
> Romain Ollivier wrote:
>
> >  Thank you for your reply.
> >  I've tried to replace my code with your's but I still get :
> >  Xlib: unexpected async reply (sequence 0x5a1)!
> >Has anyone any idea about the way to solve this problem ? I think this is a
> >graphic card problem, but I'm not sure... I work with a VGA compatible
> >controler : nVidia Corporation NV25 [GeForce4 Ti4600]...
> >
> >  Thanks for any help,
> >
> >        Romain
> >
> >
> >R K Shyamprakash wrote:
> >
> >
> >
> >>public void removeActor(vtkActor actor)
> >>  {
> >>    ren.RemoveActor(actor);
> >>  }
> >>
> >>This should work fine as it works for me. make sure reference to the
> >>argument actor has not changed and its actually the part of the renderer.
> >>also you can put check to see if the argument actor is null like
> >>
> >>public void removeActor(vtkActor actor)
> >>  {
> >>    if(actor != null)
> >>        ren.RemoveActor(actor);
> >>  }
> >>
> >>one more method will be
> >>
> >>public void removeActor(vtkActor actor)
> >>  {
> >>        vtkActorCollection col = ren.GetActors();
> >>        col.InitTraversal();
> >>        int count = col.GetNumberOfItems();
> >>        for(int i=0;i<count;i++){
> >>                if(col.GetNextActor()==actor){
> >>                        ren.RemoveActor(actor);
> >>                        return;
> >>                }
> >>        }
> >>  }
> >>make sure you call Render() to see the changes
> >>
> >>
> >
> >_______________________________________________
> >This is the private VTK discussion list.
> >Please keep messages on-topic. Check the FAQ at: <http://public.kitware.com/cgi-bin/vtkfaq>
> >Follow this link to subscribe/unsubscribe:
> >http://www.vtk.org/mailman/listinfo/vtkusers
> >
> >
> >
> >
>
> _______________________________________________
> This is the private VTK discussion list.
> Please keep messages on-topic. Check the FAQ at: <http://public.kitware.com/cgi-bin/vtkfaq>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
    
    
More information about the vtkusers
mailing list