Wiki Page Content

Differences between revisions 16 and 17
Revision 16 as of 2009-11-24 06:11:40
Size: 3499
Editor: SheenaSmith
Comment: format changes
Revision 17 as of 2010-05-08 22:09:31
Size: 3519
Editor: SheenaSmith
Comment:
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
Initializes the SDL library. This must be called before using any other SDL function. Use this function to initialize the SDL library. This must be called before using any other SDL function.

SDL_Init

Use this function to initialize the SDL library. This must be called before using any other SDL function.

Syntax

int SDL_Init(Uint32 flags)

Function Parameters

These are the flags which may be passed to SDL_Init() -- you should specify the subsystems which you will be using in your application. They should be OR'd together.

SDL_INIT_TIMER

initialize timer subsystem

SDL_INIT_AUDIO

initialize audio subsystem

SDL_INIT_VIDEO

initialize video subsystem

SDL_INIT_CDROM

initialize CD-ROM subsystem

SDL_INIT_JOYSTICK

initialize joystick subsystem

SDL_INIT_HAPTIC

initialize haptic (force feedback) subsystem

SDL_INIT_EVERYTHING

initialize all of the above subsystems

SDL_INIT_NOPARACHUTE

don't catch fatal signals

SDL_INIT_EVENTTHREAD

run the event loop in a separate thread (not supported by all OSs)

Return Value

Returns 0 if successful, -1 otherwise.

If this function fails you can usually get an error message through SDL_GetError(), but not always.

Code Examples

C

#include "SDL.h"

int main(int, char**)  {
    if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER) != 0) {
        fprintf(stderr, 
                "\nUnable to initialize SDL:  %s\n", 
                SDL_GetError()
               );
        return 1;
    }
    atexit(SDL_Quit);
  
    /* ... */
  
    return 0;
}

C++

#include <exception>
#include <string>
#include "SDL.h"

class InitError: public std::exception {
    public:
        InitError();
        InitError(const std::string&);
        virtual ~InitError() throw();
        virtual const char* what() const throw();
    private:
        std::string msg;
};

InitError::InitError():
  exception(), msg(SDL_GetError()) {}
InitError::InitError(const std::string& m):
  exception(), msg(m) {}
InitError::~InitError() throw() {}
const char* InitError::what() const throw() {
    return msg.c_str();
}

class SDL {
    public:
        SDL(Uint32 flags = 0) throw(InitError);
        virtual ~SDL();
};

SDL::SDL(Uint32 flags) throw(InitError) {
    if (SDL_Init(flags) != 0)
        throw InitError();
}

SDL::~SDL() {
    SDL_Quit();
}

/* ... */

#include <iostream>

int main(int argc, char **argv) {
    try {
        SDL sdl(SDL_INIT_VIDEO|SDL_INIT_TIMER);

        /* ... */

        return 0;
    }

    catch (const InitError& err) {
        std::cerr
            << "Error while initializing SDL:  " 
            << err.what() << std::endl;
    }
    
    return 1;
}

Remarks

This function loads the SDL dynamically linked library and initializes the subsystems specified by 'flags' (and those satisfying dependencies). Unless the SDL_INIT_NOPARACHUTE flag is set, it will install cleanup signal handlers for some commonly ignored fatal signals (like SIGSEGV).

You can call SDL_Init(0) or SDL_Init(SDL_INIT_NOPARACHUTE) to initialize SDL without initializing any subsystems.

Note that the event system is actually started by the video subsystem, so using SDL_INIT_EVENTTHREAD without SDL_INIT_VIDEO is pointless.


CategoryAPI, CategoryInit

None: SDL_Init (last edited 2017-04-08 21:22:04 by PhilippWiesemann)

(Page Info.)
Feedback
Please include your contact information if you'd like to receive a reply.
Submit