|
Size: 3585
Comment: update content (w/ Sam)
|
Size: 3575
Comment: update content (w/ Sam)
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 106: | Line 106: |
| 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. |
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. |
DRAFT |
SDL_Init
Use this function to initialize the SDL library. This must be called before using any other SDL function.
Contents
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.
