L
ja... das ist es... die surface wurde freigegeben, aber man verändert die screen surface ja gar nicht... dort ist das image ja noch drauf... also wenn man dann alle anderen sachen bis auf das image auf den screen blittet und denn dann anzeigt, dann sollte es funktionieren...
Bsp.:
#include <iostream>
#include <SDL.h>
using namespace std;
int main( int, char**)
{
SDL_Surface *screen, *flame;
if(SDL_Init(SDL_INIT_VIDEO) < 0)
{
cout << "Konnte SDL nicht initialisieren!" << SDL_GetError();
exit(1);
}
atexit(SDL_Quit);
screen = SDL_SetVideoMode(640, 480, 16, SDL_DOUBLEBUF);
if(screen == NULL)
{
cout << "Konnte den Videomode nicht setzen!" << SDL_GetError();
exit(1);
}
flame = SDL_LoadBMP("Flammen.bmp");
if(flame == NULL)
{
cout << "Konnte Flamme.bmp nicht laden!" << SDL_GetError();
exit(1);
}
SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 255, 255, 255));
SDL_BlitSurface(flame, 0, screen, 0);
SDL_Event event;
bool done = false;
while(!done)
{
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_QUIT:
done = true;
break;
case SDL_KEYDOWN:
if ( event.key.keysym.sym == SDLK_F2 )
{
SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 255, 255, 255));
}
break;
}
}
SDL_Flip(screen);
}
return 0;
}