Small Blit program won't run unless breakpoint set(Mac/XCode)

Hey,

I think I’ve seen this is a couple examples…maybe not with the display
surface, but with a surface. Regardless, this line doesn’t seem to have any
bearing.

Thanks for the response,

Ryan

“Ryan C. Gordon” wrote in message
news:44A961E1.7010009 at icculus.org…>

pDisplaySurface->format->Amask = 0;

I don’t think you can do this and have it work.

–ryan.

Hey,

Thanks for the response.

First, I’m trying to recreate some code from the engine I’m porting to Mac,
so that’s why I read the file into memory (that’s what they were doing
originally, so I just kept with it). Also, I don’t know SDL or SDL_Image
that well, so I missed that part.

Regarding portability, I’m not really worrying about that right now. I’ve
got bigger problems :slight_smile:

As for explaining how I expect it to work, I guess I can’t considering that
it’s not working. Again, I don’t know SDL that well. What I thought would
happen is to blit the picture surface onto the display surface every
iteration. And at every iteration the alpha would increase until it’s reset
to 0. What actually is happening is that it goes up to 255 but doesn’t
reset itself.

I assumed that the blit cleared the display when I called it, but I guess
not. What should I be doing differently? It should start as black, fade
into full alpha, then start again. So, how exactly should I be clearing the
blit?

Thanks,

Ryan

“Christian Walther” wrote in message
news:e8bnrg$f6b$1 at sea.gmane.org…> Michael Ryan Bannon wrote:

But, naturally, I can’t get the code sample to work.

I didn’t try your code, but a few comments anyway:

  • Why are you reading the file into memory before decoding it with
    SDL_image, when you could just have SDL_image read the file itself? (And
    using this complicated Carbon code at that, when simple stdio would do
    the job?)

#include <SDL/SDL.h>
#include <SDL_image/SDL_image.h>

Although I guess it doesn’t matter for this sample code, I’d like to
point out that this isn’t portable. SDL.h happens to be in an “SDL"
directory on Linux (and I guess other Unixes), so that would work, but
SDL_image.h probably isn’t in an “SDL_image” directory (or framework)
anywhere but on Mac OS X. The portable way is to #include “SDL.h” and
tell the compiler where it is in the platform-specific build system
(e.g. on Mac OS X add “/Library/Frameworks/SDL.framework/Headers” to the
"Header Search Paths” setting in Xcode, or specify
"-I/Library/Frameworks/SDL.framework/Headers" on the command line). The
same for SDL_image.h.

the alpha calls that I’m doing still don’t seem to be working.

// Display
int alpha = 0;
while(true)
{
alpha += 10;
if(alpha > 255)
{
alpha = 0;
}
pSurfaceOne->format->Amask = 0;
SDL_SetAlpha(pSurfaceOne, SDL_SRCALPHA, alpha);
SDL_BlitSurface(pSurfaceOne, NULL, pDisplaySurface, NULL);
}

Care to explain how you expect it to work (after you add the missing
SDL_UpdateRect)? I expect this code to blit the same image onto itself
repeatedly in very fast succession (with varying alpha values), so
except for the first split second you won’t see anything but this image.
Perhaps you meant to clear the display surface between blits, but even
then you’ll probably only get flicker unless you add some SDL_Delay to
the loop.

Hope this helps

-Christian