Basicgear 0 Newbie Poster

I have been following an SDL tutorial. This is my code followed by the errors.

//The headers
#include "SDL.h"
#include <string>

//The attributes of the screen
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int SCREEN_BPP = 32;

//The surfaces that will be used
SDL_Surface *message = NULL;
SDL_Surface *background = NULL;
SDL_Surface *screen = NULL;

SDL_Surface *load_image(std::string filename)
{
	//Temporary storage for the image that's loaded
	SDL_Surface* loadedImage = NULL;

	//The optimized image that will be used
	SDL_Surface* optimizedImage = NULL;

	//Load the image
	loadedImage = SDL_LoadBMP(filename.c_str());

	//If nothing went wrong in loading the image
    if( loadedImage != NULL )
    {
        //Create an optimized image
        optimizedImage = SDL_DisplayFormat( loadedImage );
        
        //Free the old image
        SDL_FreeSurface( loadedImage );
    }


	//Return the optimized image
	return optimizedImage;
}

void apply_surface(int x, int y, SDL_Surface* source, SDL_Surface* destination)
{
	//Make a temporary rectangle to hold the offsets
	SDL_Rect offset;

	//Give the offsets to the rectangle
	offset.x = x;
	offset.y = y;

	//Blit the surface
	SDL_BlitSurface(source, NULL, destination, &offset);
}

int main(int argc, char* args[])
{
	//Initialize all SDL subsystems
	if(SDL_Init(SDL_INIT_EVERYTHING) == -1)
	{
		return 1;
	}

	//Set up the screen
	screen = SDL_SetVideoMode(SCREEN_WIDTH,SCREEN_HEIGHT,SCREEN_BPP,SDL_SWSURFACE);

	//If there was an error in setting up the screen
	if(screen = NULL)
	{
		return 1;
	}

	//Set the window caption
	SDL_WM_SetCaption("Hello World 2",NULL);
	
	//Load the images
	message = load_image("hello_world.bmp");
	background = load_image("background.bmp");

	//Apply the background to the screen
	apply_surface(0,0,background,screen);
	//apply_surface(320,0,background,screen);
	//apply_surface(0,240,background,screen);
	//apply_surface(320,240,background,screen);

	//Apply the message to the screen
	//apply_surface(180, 140, message, screen);

	//Update the screen
    if( SDL_Flip( screen ) == -1 )
    {
        return 1;    
    }


	//Wait 3 seconds
	SDL_Delay(3000);

	//Free the surfaces
	SDL_FreeSurface(message);
	SDL_FreeSurface(background);

	//Quit SDL
	SDL_Quit();

	//Return
	return 0;

}

The error message im getting is weird and indicates the problem at the 'flip' portion of code.

"First-chance exception at 0x68129afb in Hello World2.exe: 0xC0000005: Access violation reading location 0x00000004.
Unhandled exception at 0x68129afb in Hello World2.exe: 0xC0000005: Access violation reading location 0x00000004."

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.