Wiki Page Content

Differences between revisions 20 and 21
Revision 20 as of 2010-08-22 22:32:16
Size: 4430
Editor: SheenaSmith
Comment: update content (w/ Sam)
Revision 21 as of 2010-08-22 22:38:40
Size: 4109
Editor: SheenaSmith
Comment: update content (w/ Sam)
Deletions are marked like this. Additions are marked like this.
Line 108: Line 108:
These are the '''flags''' which may be passed to [[SDL_Init]]() and may be OR'd together to initialize multiple subsystems. These are the flags which may be passed to [[SDL_Init]]() and may be OR'd together to initialize multiple subsystems.
Line 119: Line 119:
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,, ^is set in '''flags'''^, it will install cleanup signal handlers for some commonly ignored fatal signals (like SIGSEGV).
<<Color2(green,flag seems like it should be bolded but grammatically it doesn't work as flags like in the param. solution in superscript?<<BR>>Can signal handlers also be avoided with flags as 0?)>>
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).

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

The Event Handling, File I/O, and 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.

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)

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).

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

*
Typical cause of this error The most common cause for error is using a particular display without having according the corresponding subsystem supported, such as missing a mouse driver when using <<Color2(green,using what? SDL? A mouse?)>> with a framebuffer green

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.
*


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