I have an icky suspicion... I understand that in Windows, it's dangerous to 
have memory allocated in one DLL but freed in another. So I'm worried about 
that call to create (allocate in the OIIO DLL) and subsequent delete in the 
Maya DLL.

For ImageCache and TextureSystem, we have destroy() functions to go along with 
create(), to ensure that the deletions happen in the right DLL's memory arena. 
I don't see those for ImageInput/ImageOutput, but now I'm thinking maybe they 
are needed.

I'll prepare a patch for you to try, to see if this addresses the problem.  
Stay tuned.


On Mar 24, 2015, at 1:38 PM, haggi krey <[email protected]> wrote:

> Hi,
> 
> I have a problem using OpenImageIO for writing exr files if I use it in a 
> maya plugin on Windows.
> I used it to write the final results of my mayaToCorona renderer plugin what 
> works fine unless I try to unload the plugin.
> Then maya freezes completly.
> 
> Today I tried to use it to write a Arnold exr driver which enables the 
> writing of AOV with mixed bit depths what Arnold does not yet support.
> Here an output driver is loaded during rendering and unloaded after rendering 
> and exactly the same happens. I use it with mtoa on windows.
> As soon as Arnold tried to unload the driver after a rendering is done, maya 
> freezes.
> 
> Maybe anyone has some experience with this or has any idea what is happening 
> here. I have tried the following:
> 
> 
> OIIO::ImageOutput *out = OIIO::ImageOutput::create(filename);
> delete out;
> 
> The problem only appears if the filename is an exr file. With jpeg or tiff, 
> everything works fine without any problems.
> So my idea was to check if the problem has something to do with openExr 
> itself so I tried to write a simple file with Imf tools:
> 
> void writeExrTest()
> {
>    int width = 512;
>    int height = 512;
>    const char *fileName = "c:/daten/testimage.exr";
>    Rgba *pixels = new Rgba[512*512];
>    RgbaOutputFile file(fileName, width, height, WRITE_RGBA);
>    file.setFrameBuffer (pixels, 1, width);
>    file.writePixels (height);
> }
> 
> And this worked fine - no blocking.
> I use openExr 2.2 together with OIIO 1.5. Compiled with Visual c++ 11 on 
> Windows7.
> Tomorrow I'll try to export an ass file and check if the same happens with 
> the standalone.
> And I did not try it in release mode yet. I'll check it tomorrow.
> 
> I'd really appreciate any ideas. Of course I can implement it completly 
> without OpenImageIO but I prefer to use it because it makes life easier.
> 
> haggi
> 
> _______________________________________________
> Oiio-dev mailing list
> [email protected]
> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org

--
Larry Gritz
[email protected]



_______________________________________________
Oiio-dev mailing list
[email protected]
http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org

Reply via email to