Thank you for that information. It seems to work fine when resetting the knobs.
- Björn On Wed, Nov 16, 2011 at 6:34 PM, Nathan Rusch <[email protected]>wrote: > This is a known issue with Write nodes inside of Gizmos (already logged > as bug #21137). If you change any of the format-dependent knobs on the > Write and then change its format without resetting those knobs to their > default states, the format-specific knobs aren’t destroyed cleanly, and as > soon as you touch anything else, Nuke will segfault. The workaround is to > keep track of any format-specific knob changes you make and be sure to > reset those knobs BEFORE changing the format again. > > -Nathan > > > *From:* Björn Fredriksson <[email protected]> > *Sent:* Wednesday, November 16, 2011 6:36 AM > *To:* [email protected] > *Subject:* [Nuke-python] Crashes when wrapping a write node in a gizmo. > > Hi all, > > I've got a gizmo that has an internal write node. And to limit the options > available I elected not to link in the file types from the underlying Write > node, instead I use python callbacks to set these according to whatever the > user sets with a pulldown-knob. The callback hides and unhides some options > for the formats based on that pulldown choice. And since the same knobs are > not available with all formats (e.g. 'datatype') I only set them on the > Write node if the correct file format has been set. > > The problem is, if I switch between the sgi or tga format and exr a few > times, and then change datatype Nuke crashes without warning. My first > guess is if this is some race condition between me trying to set up the > knob-values while the c++ plugin for the file format is not yet loaded, but > that seems to not be the case. > > Any ideas? > > Simplified example to reproduce: > > > Gizmo called testGizmo: > ------------------ > #! > /Applications/Nuke6.1v2/NukeX6.1v2.app/../Nuke6.1v2.app/Contents/MacOS/Nuke6.1v2 > -nx > version 6.1 v2 > Gizmo { > addUserKnob {20 Test} > addUserKnob {41 channels T Write1.channels} > addUserKnob {41 assetColorspace l "Colorspace" T Write1.colorspace } > addUserKnob {4 fileTypes l "File type" M {dpx exr jpeg sgi targa tiff}} > addUserKnob {4 exr_bytes l "Data type" M {"16-bit half" "32-bit float"} } > } > Input { > inputs 0 > name Input1 > xpos 16 > ypos -89 > } > Write { > channels rgba > file test.####.exr > file_type exr > checkHashOnRead false > version 1 > name Write1 > xpos 16 > ypos -17 > } > Output { > name Output1 > xpos 16 > ypos 51 > } > end_group > ------------------- > > > callback (in menu.py): > ------------------------ > def testGizmoChanged(): > node = nuke.thisNode() > > node.node('Write1').knob('file_type').setValue(node.knob('fileTypes').value()) > if node.node('Write1').knob('file_type').value() == "exr": > node.knob('exr_bytes').setVisible(True) > > node.node('Write1').knob('datatype').setValue(node.knob('exr_bytes').value()) > else: > node.knob('exr_bytes').setVisible(False) > > nuke.addKnobChanged(testGizmoChanged, nodeClass='testGizmo') > ----------------------- > > > // Björn > > -- > Björn Fredriksson | Head of 2D | Swiss International AB > Sankt Eriksgatan 48 B, 112 34 Stockholm, Sweden > ph +46 8 662 24 60, *NEW CELL* *+46* *721 666 011* > > ------------------------------ > _______________________________________________ > Nuke-python mailing list > [email protected], http://forums.thefoundry.co.uk/ > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > > > _______________________________________________ > Nuke-python mailing list > [email protected], http://forums.thefoundry.co.uk/ > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > > -- Björn Fredriksson | Head of 2D | Swiss International AB Sankt Eriksgatan 48 B, 112 34 Stockholm, Sweden ph +46 8 662 24 60, *NEW CELL* *+46* *721 666 011*
_______________________________________________ Nuke-python mailing list [email protected], http://forums.thefoundry.co.uk/ http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
