]> gerrit.simantics Code Review - simantics/3d.git/commitdiff
Perform node map updates in a procedure instead of a request 50/3950/1
authorReino Ruusu <reino.ruusu@semantum.fi>
Mon, 2 Mar 2020 08:09:50 +0000 (10:09 +0200)
committerReino Ruusu <reino.ruusu@semantum.fi>
Mon, 2 Mar 2020 08:10:18 +0000 (10:10 +0200)
gitlab #92

Change-Id: I5aa6238360d84ca9c9df0c8ee1c3671ff118485c

org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/common/AbstractVTKNodeMap.java

index a42c367252fc0744a754cc22fbd9f9045f283275..ba62ddbfdb64ca14745420ec7d17b145a1e0ee06 100644 (file)
@@ -30,10 +30,11 @@ import org.simantics.db.ReadGraph;
 import org.simantics.db.Session;
 import org.simantics.db.UndoContext;
 import org.simantics.db.WriteGraph;
-import org.simantics.db.common.request.ReadRequest;
+import org.simantics.db.common.request.UniqueRead;
 import org.simantics.db.common.request.WriteRequest;
 import org.simantics.db.exception.DatabaseException;
 import org.simantics.db.layer0.util.Layer0Utils;
+import org.simantics.db.procedure.SyncProcedure;
 import org.simantics.db.service.UndoRedoSupport;
 import org.simantics.g3d.ontology.G3D;
 import org.simantics.g3d.scenegraph.RenderListener;
@@ -337,14 +338,23 @@ public abstract class AbstractVTKNodeMap<DBObject,E extends INode> implements VT
                if (graphUpdates)
                        return;
                if (DEBUG)System.out.println("domainModified");
-               session.asyncRequest(new ReadRequest() {
-                       
+               session.asyncRequest(new UniqueRead<Object>() {
+                       @Override
+                       public Object perform(ReadGraph graph) throws DatabaseException {
+                               return new Object();
+                       }
+               }, new SyncProcedure<Object>() {
                        @Override
-                       public void run(ReadGraph graph) throws DatabaseException {
+                       public void execute(ReadGraph graph, Object result) throws DatabaseException {
+                               // Perform all updates to the model in a single query thread
                                update(graph);
+                       };
+                       
+                       @Override
+                       public void exception(ReadGraph graph, Throwable throwable) throws DatabaseException {
+                               LOGGER.error("Failed to update pipeline changes" + throwable);
                        }
                });
-               
        }
        
        protected void reset(ReadGraph graph) throws MappingException {