Memory and Loading Bar

Discussion in 'Mac Programming' started by varsis, Dec 29, 2007.

  1. varsis macrumors regular

    Joined:
    Nov 30, 2005
    #1
    Currently I am making a plugin for rapidweaver but I get this error when adding too many images to the Plugin:

    RapidWeaver(19697,0xa000d000) malloc: *** vm_allocate(size=18051072) failed (error code=3)
    RapidWeaver(19697,0xa000d000) malloc: *** error: can't allocate region
    RapidWeaver(19697,0xa000d000) malloc: *** set a breakpoint in szone_error to debug
    Dec 29 02:01:45 tommy-pavliceks-computer /Applications/RapidWeaver.app/Contents/MacOS/RapidWeaver: img_data_lock: Cannot allocate memory
    RapidWeaver(19697,0xa000d000) malloc: *** vm_allocate(size=18051072) failed (error code=3)
    RapidWeaver(19697,0xa000d000) malloc: *** error: can't allocate region
    RapidWeaver(19697,0xa000d000) malloc: *** set a breakpoint in szone_error to debug
    RapidWeaver(19697,0xa000d000) malloc: *** vm_allocate(size=18051072) failed (error code=3)
    RapidWeaver(19697,0xa000d000) malloc: *** error: can't allocate region
    RapidWeaver(19697,0xa000d000) malloc: *** set a breakpoint in szone_error to debug
    RapidWeaver(19697,0xa000d000) malloc: *** vm_allocate(size=18051072) failed (error code=3)
    RapidWeaver(19697,0xa000d000) malloc: *** error: can't allocate region
    RapidWeaver(19697,0xa000d000) malloc: *** set a breakpoint in szone_error to debug
    RapidWeaver(19697,0xa000d000) malloc: *** vm_allocate(size=18051072) failed (error code=3)
    RapidWeaver(19697,0xa000d000) malloc: *** error: can't allocate region
    RapidWeaver(19697,0xa000d000) malloc: *** set a breakpoint in szone_error to debug
    RapidWeaver(19697,0xa000d000) malloc: *** vm_allocate(size=18051072) failed (error code=3)
    RapidWeaver(19697,0xa000d000) malloc: *** error: can't allocate region
    RapidWeaver(19697,0xa000d000) malloc: *** set a breakpoint in szone_error to debug
    RapidWeaver(19697,0xa000d000) malloc: *** vm_allocate(size=18051072) failed (error code=3)
    RapidWeaver(19697,0xa000d000) malloc: *** error: can't allocate region
    RapidWeaver(19697,0xa000d000) malloc: *** set a breakpoint in szone_error to debug
    RapidWeaver(19697,0xa000d000) malloc: *** vm_allocate(size=18051072) failed (error code=3)
    RapidWeaver(19697,0xa000d000) malloc: *** error: can't allocate region
    RapidWeaver(19697,0xa000d000) malloc: *** set a breakpoint in szone_error to debug
    RapidWeaver(19697,0xa000d000) malloc: *** vm_allocate(size=18051072) failed (error code=3)
    RapidWeaver(19697,0xa000d000) malloc: *** error: can't allocate region
    RapidWeaver(19697,0xa000d000) malloc: *** set a breakpoint in szone_error to debug

    I am guessing not enough memory is available to preform the task. What I am asking is how can I limit it, to do all the images no matter the size, and also show a loading bar instead of having the spinning curser. I am using a NSImage Lock and Unlock.

    Basically is this:
    newImage = [[NSImage alloc] initWithSize:targetSize];


    [newImage lockFocus];

    NSRect thumbnailRect;
    thumbnailRect.origin = thumbnailPoint;
    thumbnailRect.size.width = scaledWidth;
    thumbnailRect.size.height = scaledHeight;

    [sourceImage drawInRect: thumbnailRect
    fromRect: NSZeroRect
    operation: NSCompositeSourceOver
    fraction: 1.0];

    [newImage unlockFocus];


    With a few extra things. Also faster ways? Anything is appreciated.

    Chris
     
  2. HiRez macrumors 603

    HiRez

    Joined:
    Jan 6, 2004
    Location:
    Western US
    #2
    First of all, what is it this is supposed to be doing? I see that it's making thumbnails of some sort, bit how are they used? Are they all being composited onto one large contact sheet or something? Run top from Terminal or the System Monitor app from /Applications/Utilities and verify that you actually are running out of RAM.

    Are you creating that image many times in a loop? If so, are you sending it a release message when you're done with it before you assign a new image to it? If not you have a big memory leak there. If you alloc-init it, you gotta release it yourself.

    As for a loading bar, just make yourself a panel in IB with an NSProgressBar and status message on it, and send updates to them as you process your images. Show the panel and bring it to the front when you start, hide it when done.
     
  3. varsis thread starter macrumors regular

    Joined:
    Nov 30, 2005
    #3
    The app doesn't use all the Ram but Does use 125% cpu near the begging but half way it goes to 50%.

    I am using a NSImage 2 of them. One for the large one for the Thumbnail. The NSImageRep I have is to get the size of the image in pixels hight which It does unless I have too many images. Blows up usally on the last 3.

    I used 88 6mp files.

    Ideas? I am releasing the objects each time.
     
  4. varsis thread starter macrumors regular

    Joined:
    Nov 30, 2005
    #4
    Well I decided to remove a NSImageRep i had in there instead I am using

    NSImage Rep, but I don't know how to get the Pixels from this array at Object index 0 does anyone know how I can seperate?

    NSBitmapImageRep 0x24fff820 Size={721.92, 480} ColorSpace=NSCalibratedRGBColorSpace BPS=8 BPP=24 Pixels=3008x2000 Alpha=NO Planar=NO Format=0
     

Share This Page