Wiki Page Content

Differences between revisions 21 and 22
Revision 21 as of 2010-08-22 22:38:40
Size: 4109
Editor: SheenaSmith
Comment: update content (w/ Sam)
Revision 22 as of 2010-08-22 22:47:35
Size: 3585
Editor: SheenaSmith
Comment: update content (w/ Sam)
Deletions are marked like this. Additions are marked like this.
Line 106: Line 106:
The [[CategoryEvents|Event Handling]], [[CategoryIO|File I/O]], and [[CategoryThread|Threading]] subsystems are initialized by default. To initialize other subsystems you must specifically call them. You can call SDL_Init(0) or SDL_Init(SDL_INIT_NOPARACHUTE) to initialize SDL without initializing any subsystems. This function initializes the subsystems specified by '''flags'''.

The [[CategoryEvents|Event Handling]], [[CategoryIO|File I/O]], and [[CategoryThread|Threading]] subsystems are initialized by default. To initialize other subsystems you must specifically call them.

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.
Line 119: Line 125:
This function initializes the subsystems specified by '''flags'''.
Unless the SDL_INIT_NOPARACHUTE flag is set, it will install cleanup signal handlers for some commonly ignored fatal signals (like SIGSEGV).
Line 123: Line 126:

*<<BR>>,,Typical cause of this error,, ^The most common cause for error^ is using a particular display without having ,,according,, ^the corresponding^ subsystem support^ed^, such as missing ^a^ mouse driver when using ^<<Color2(green,using what? SDL? A mouse?)>>^ with ^a^ framebuffer <<Color2(green,Should framebuffer be set apart somehow like `framebuffer`?)>> device. In this case you can either compile SDL without ^a^ mouse device, or set ^the^ "SDL_NOMOUSE=1" environment variable before running your application. <<BR>>*

DRAFT

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

flags

subsystem initialization flags; see Remarks for details

Return Value

Returns 0 on success or -1 on failure; call SDL_GetError() for more information.

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 initializes the subsystems specified by flags.

The Event Handling, File I/O, and Threading subsystems are initialized by default. To initialize other subsystems you must specifically call them.

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.

These are the flags which may be passed to SDL_Init() and may be OR'd together to initialize multiple subsystems.

SDL_INIT_TIMER

timer subsystem

SDL_INIT_AUDIO

audio subsystem

SDL_INIT_VIDEO

video subsystem

SDL_INIT_JOYSTICK

joystick subsystem

SDL_INIT_HAPTIC

haptic (force feedback) subsystem

SDL_INIT_EVERYTHING

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)

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