]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/shape/vtkMeshObject.java
Using SWT thread with Plant3d
[simantics/3d.git] / org.simantics.g3d.vtk / src / org / simantics / g3d / vtk / shape / vtkMeshObject.java
index 0e60a270f24ce699a243ed3c16c00dbe8250630e..466d0864bef56c871d93cb708450fb8b836aabfc 100644 (file)
@@ -1,62 +1,63 @@
 package org.simantics.g3d.vtk.shape;
 
 import org.simantics.g3d.shape.Mesh;
-import org.simantics.utils.threads.AWTThread;
+import org.simantics.g3d.vtk.common.VtkView;
 import org.simantics.utils.threads.ThreadUtils;
 
-import vtk.vtkPanel;
 import vtk.vtkRenderer;
 
 public class vtkMeshObject {
        
-       private vtkPanel panel;
+       private VtkView panel;
        private Mesh mesh;
        
        private MeshActor meshActor;
        
-       public vtkMeshObject(vtkPanel panel, Mesh mesh) {
+       public vtkMeshObject(VtkView panel, Mesh mesh) {
                this.mesh = mesh;
                this.panel = panel;
        }
        
        public void visualizeMesh() {
-               clearActorsAWT();
+               clearActorsVTK();
                meshActor = new MeshActor();
                meshActor.setMesh(mesh);
                //System.out.println("Set mesh " + mesh.getVertices().size() + " " + mesh.getIndices().size() + " " + this);
-               showActorsAWT();
+               showActorsVTK();
        }
        
        public MeshActor getActor() {
-               assert (Thread.currentThread() == AWTThread.getThreadAccess().getThread());
+               assert (Thread.currentThread() == panel.getThreadQueue().getThread());
                return meshActor;
        }
        
-       public void showActorsAWT() {
+       public void showActorsVTK() {
                //System.out.println("showActorsAWT " + this + " " + meshActor != null);
-               assert (Thread.currentThread() == AWTThread.getThreadAccess().getThread());
-               vtkRenderer ren = panel.GetRenderer();
+               assert (Thread.currentThread() == panel.getThreadQueue().getThread());
+               panel.lock();
+               vtkRenderer ren = panel.getRenderer();
                if (meshActor != null)
                        ren.AddActor(meshActor);
+               panel.unlock();
        }
        
        public void showActors() {
-               ThreadUtils.asyncExec(AWTThread.getThreadAccess(), new Runnable() {
+               ThreadUtils.asyncExec(panel.getThreadQueue(), new Runnable() {
                        
                        @Override
                        public void run() {
-                               showActorsAWT();
+                               showActorsVTK();
                        }
                });
        }
        
-       public void clearActorsAWT() {
-               assert (Thread.currentThread() == AWTThread.getThreadAccess().getThread());
+       public void clearActorsVTK() {
+               assert (Thread.currentThread() == panel.getThreadQueue().getThread());
                
                if (meshActor == null)
                        return;
                //System.out.println("clearActorsAwt " + this);
-               vtkRenderer ren = panel.GetRenderer();
+               vtkRenderer ren = panel.getRenderer();
                if (ren == null)
                        return;
                panel.lock();
@@ -68,13 +69,13 @@ public class vtkMeshObject {
                meshActor = null;
        }
        
-       private void clearActorsAWT(MeshActor meshActor) {
-               assert (Thread.currentThread() == AWTThread.getThreadAccess().getThread());
+       private void clearActorsVTK(MeshActor meshActor) {
+               assert (Thread.currentThread() == panel.getThreadQueue().getThread());
                
                if (meshActor == null)
                        return;
                //System.out.println("clearActorsAwt2 " + this);
-               vtkRenderer ren = panel.GetRenderer();
+               vtkRenderer ren = panel.getRenderer();
                if (ren == null)
                        return;
                panel.lock();
@@ -89,11 +90,11 @@ public class vtkMeshObject {
        public void clearActors() {
                if (meshActor == null)
                        return;
-               ThreadUtils.asyncExec(AWTThread.getThreadAccess(), new Runnable() {
+               ThreadUtils.asyncExec(panel.getThreadQueue(), new Runnable() {
                        
                        @Override
                        public void run() {
-                               clearActorsAWT(meshActor);
+                               clearActorsVTK(meshActor);
                        }
                });
        }
@@ -105,7 +106,7 @@ public class vtkMeshObject {
        
        public void delete() {
                mesh = null;
-               clearActorsAWT();
+               clearActorsVTK();
        }
 
 }