Changes to dtype and otype checks so that they occur at value updates and connection changes, respectively, instead of during each draw() call for the graph canvas(!!!!). Adding new nodes can still be quite slow, and creating connections can drag a little (since the otype check is still a little expensive), but now moving nodes around the graph window is new pretty comfortable.
~I had to lean on the port update function for part of this, and am currently fighting a side effect where we get into the node output generation even when the node readiness should not allow this.~
~On loading a graph, we're still missing a final node update, e.g. for Lammps where the engine no longer gets populated.~ This was just an issue with the fact that we used to rely on a live recalculation of the structure dtype readiness, but now it was out-of-date; I split the if-clause and added it back in manually.
Changes to dtype and otype checks so that they occur at value updates and connection changes, respectively, instead of during each
draw()
call for the graph canvas(!!!!). Adding new nodes can still be quite slow, and creating connections can drag a little (since the otype check is still a little expensive), but now moving nodes around the graph window is new pretty comfortable.~I had to lean on the port
update
function for part of this, and am currently fighting a side effect where we get into the node output generation even when the node readiness should not allow this.~~On loading a graph, we're still missing a final node update, e.g. for
Lammps
where theengine
no longer gets populated.~ This was just an issue with the fact that we used to rely on a live recalculation of the structure dtype readiness, but now it was out-of-date; I split the if-clause and added it back in manually.