Problem summary
Updating Bake Points in two Node Graph contexts via Python can result in incorrect dirty state
Customer reported version
Mari 4.7v2
Customer reported platform
CentOS 7
Steps to reproduce
1) Open any project
2) Create two Bake Point nodes, name them 'A' and 'B'
3) Create a Color node and connect the Output to Bake Point A's Input
4) Select the Color node and Bake Point A, then Group them (CTRL+G)
5) Connect the Group node's Output to Bake Point B's Input
6) Bake Bake Point A, then bake Bake Point B
7) Change the Color node's color
8) Select Bake Point B and run the following script in the Python Console:
nodeGraph = mari.geo.current().nodeGraph()destNode = nodeGraph.selectedNodeList()[0]upStreamNodes = []for node in nodeGraph.topologicalSortTo(destNode,ReverseOrder=True): upStreamNodes.append(node)for node in upStreamNodes: if node.isGroupNode() and not node.hasTag('_shader'): childNodeGraph = node.childNodeGraph() for node in childNodeGraph.nodeList(): if node.hasTag('_output'): for subgraphNode in childNodeGraph.topologicalSortTo(node,ReverseOrder=True): upStreamNodes.append(subgraphNode)upStreamNodesOrdered = reversed(upStreamNodes)for node in upStreamNodesOrdered: if node.isBakePointNode(): print(node.nodeName()) node.deleteBakedResult() node.bake()
Alternative steps
Follow same steps 1-5 above.
6) Open the properties for both A and B.
7) In the node properties, hit Bake for A, then hit Bake for B within 2 seconds of A turning green.
Expected behaviour
The Bake Point nodes should be updated and coloured green.
Actual behaviour
Bake Point B (in the root Node Graph) momentarily goes green after baking has completed, but then switches to a red, dirty state .
Workaround
Unknown.
Reproduced by support
This bug has been reproduced in:
Mari 4.7v4 - Windows 10 - CentOS 7.9
Mari 4.7v1 - Windows 10
Mari 4.6v4 - Windows 10 - CentOS 7.9 - regression
Unable to reproduce bug in:
Mari 4.6v3 - Windows 10 - CentOS 7.9
Earliest version tested
Mari 4.6v3 - This issue doesn't appear in this version and has regressed