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

Reply via email to