Hi Everyone,

I have just run head long into an issue with NSMutableData and existing buffers.
I have the following code:


                        UInt8 *sourcebytes = [clImgEngine srcBuffer];
                        [self setData:[NSMutableData 
dataWithBytesNoCopy:sourcebytes length:[clImgEngine inRangeByteCount] 
freeWhenDone:NO]];
                        UInt8 *resultBytes = [[self data] mutableBytes];

The source is a pinned memory buffer from OpenCL. What I want to do, is to pass 
this buffer inside a NSMutableData wrapper and have another object for some 
work.
Seems simple enough, except that NSMutableData changes the memory buffer in the 
background.

"sourcebytes" starts with an address such as: 0x000000012361b000
and "resultBytes" returns 0x0000000136fe2000

Naturally, my work object doesn't see any data from "sourcebytes", as 
NSMutableData has moved the buffer.
I thought that freeWhenDone:NO prevented ownership of the buffer..

Can anyone suggest a way to prevent this from happening? I need the buffer to 
stay "pinned".

Thanks in advance!

bob.

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to