| <HTML |
| ><HEAD |
| ><TITLE |
| >Initializing SDL</TITLE |
| ><META |
| NAME="GENERATOR" |
| CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+ |
| "><LINK |
| REL="HOME" |
| TITLE="SDL Library Documentation" |
| HREF="index.html"><LINK |
| REL="UP" |
| TITLE="The Basics" |
| HREF="guidethebasics.html"><LINK |
| REL="PREVIOUS" |
| TITLE="The Basics" |
| HREF="guidethebasics.html"><LINK |
| REL="NEXT" |
| TITLE="Graphics and Video" |
| HREF="guidevideo.html"></HEAD |
| ><BODY |
| CLASS="SECT1" |
| BGCOLOR="#FFF8DC" |
| TEXT="#000000" |
| LINK="#0000ee" |
| VLINK="#551a8b" |
| ALINK="#ff0000" |
| ><DIV |
| CLASS="NAVHEADER" |
| ><TABLE |
| SUMMARY="Header navigation table" |
| WIDTH="100%" |
| BORDER="0" |
| CELLPADDING="0" |
| CELLSPACING="0" |
| ><TR |
| ><TH |
| COLSPAN="3" |
| ALIGN="center" |
| >SDL Library Documentation</TH |
| ></TR |
| ><TR |
| ><TD |
| WIDTH="10%" |
| ALIGN="left" |
| VALIGN="bottom" |
| ><A |
| HREF="guidethebasics.html" |
| ACCESSKEY="P" |
| >Prev</A |
| ></TD |
| ><TD |
| WIDTH="80%" |
| ALIGN="center" |
| VALIGN="bottom" |
| >Chapter 1. The Basics</TD |
| ><TD |
| WIDTH="10%" |
| ALIGN="right" |
| VALIGN="bottom" |
| ><A |
| HREF="guidevideo.html" |
| ACCESSKEY="N" |
| >Next</A |
| ></TD |
| ></TR |
| ></TABLE |
| ><HR |
| ALIGN="LEFT" |
| WIDTH="100%"></DIV |
| ><DIV |
| CLASS="SECT1" |
| ><H1 |
| CLASS="SECT1" |
| ><A |
| NAME="GUIDEBASICSINIT" |
| ></A |
| >Initializing SDL</H1 |
| ><P |
| >SDL is composed of eight subsystems - Audio, CDROM, Event Handling, File I/O, Joystick Handling, Threading, Timers and Video. Before you can use any of these subsystems they must be initialized by calling <A |
| HREF="sdlinit.html" |
| ><TT |
| CLASS="FUNCTION" |
| >SDL_Init</TT |
| ></A |
| > (or <A |
| HREF="sdlinitsubsystem.html" |
| ><TT |
| CLASS="FUNCTION" |
| >SDL_InitSubSystem</TT |
| ></A |
| >). <TT |
| CLASS="FUNCTION" |
| >SDL_Init</TT |
| > must be called before any other SDL function. It automatically initializes the Event Handling, File I/O and Threading subsystems and it takes a parameter specifying which other subsystems to initialize. So, to initialize the default subsystems and the Video subsystems you would call: |
| <PRE |
| CLASS="PROGRAMLISTING" |
| > SDL_Init ( SDL_INIT_VIDEO );</PRE |
| > |
| To initialize the default subsystems, the Video subsystem and the Timers subsystem you would call: |
| <PRE |
| CLASS="PROGRAMLISTING" |
| > SDL_Init ( SDL_INIT_VIDEO | SDL_INIT_TIMER );</PRE |
| ></P |
| ><P |
| ><TT |
| CLASS="FUNCTION" |
| >SDL_Init</TT |
| > is complemented by <A |
| HREF="sdlquit.html" |
| ><TT |
| CLASS="FUNCTION" |
| >SDL_Quit</TT |
| ></A |
| > (and <A |
| HREF="sdlquitsubsystem.html" |
| ><TT |
| CLASS="FUNCTION" |
| >SDL_QuitSubSystem</TT |
| ></A |
| >). <TT |
| CLASS="FUNCTION" |
| >SDL_Quit</TT |
| > shuts down all subsystems, including the default ones. It should always be called before a SDL application exits.</P |
| ><P |
| >With <TT |
| CLASS="FUNCTION" |
| >SDL_Init</TT |
| > and <TT |
| CLASS="FUNCTION" |
| >SDL_Quit</TT |
| > firmly embedded in your programmers toolkit you can write your first and most basic SDL application. However, we must be prepare to handle errors. Many SDL functions return a value and indicates whether the function has succeeded or failed, <TT |
| CLASS="FUNCTION" |
| >SDL_Init</TT |
| >, for instance, returns -1 if it could not initialize a subsystem. SDL provides a useful facility that allows you to determine exactly what the problem was, every time an error occurs within SDL an error message is stored which can be retrieved using <TT |
| CLASS="FUNCTION" |
| >SDL_GetError</TT |
| >. Use this often, you can never know too much about an error.</P |
| ><DIV |
| CLASS="EXAMPLE" |
| ><A |
| NAME="AEN60" |
| ></A |
| ><P |
| ><B |
| >Example 1-1. Initializing SDL</B |
| ></P |
| ><PRE |
| CLASS="PROGRAMLISTING" |
| >#include "SDL.h" /* All SDL App's need this */ |
| #include <stdio.h> |
| |
| int main(int argc, char *argv[]) { |
| |
| printf("Initializing SDL.\n"); |
| |
| /* Initialize defaults, Video and Audio */ |
| if((SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO)==-1)) { |
| printf("Could not initialize SDL: %s.\n", SDL_GetError()); |
| exit(-1); |
| } |
| |
| printf("SDL initialized.\n"); |
| |
| printf("Quiting SDL.\n"); |
| |
| /* Shutdown all subsystems */ |
| SDL_Quit(); |
| |
| printf("Quiting....\n"); |
| |
| exit(0); |
| } </PRE |
| ></DIV |
| ></DIV |
| ><DIV |
| CLASS="NAVFOOTER" |
| ><HR |
| ALIGN="LEFT" |
| WIDTH="100%"><TABLE |
| SUMMARY="Footer navigation table" |
| WIDTH="100%" |
| BORDER="0" |
| CELLPADDING="0" |
| CELLSPACING="0" |
| ><TR |
| ><TD |
| WIDTH="33%" |
| ALIGN="left" |
| VALIGN="top" |
| ><A |
| HREF="guidethebasics.html" |
| ACCESSKEY="P" |
| >Prev</A |
| ></TD |
| ><TD |
| WIDTH="34%" |
| ALIGN="center" |
| VALIGN="top" |
| ><A |
| HREF="index.html" |
| ACCESSKEY="H" |
| >Home</A |
| ></TD |
| ><TD |
| WIDTH="33%" |
| ALIGN="right" |
| VALIGN="top" |
| ><A |
| HREF="guidevideo.html" |
| ACCESSKEY="N" |
| >Next</A |
| ></TD |
| ></TR |
| ><TR |
| ><TD |
| WIDTH="33%" |
| ALIGN="left" |
| VALIGN="top" |
| >The Basics</TD |
| ><TD |
| WIDTH="34%" |
| ALIGN="center" |
| VALIGN="top" |
| ><A |
| HREF="guidethebasics.html" |
| ACCESSKEY="U" |
| >Up</A |
| ></TD |
| ><TD |
| WIDTH="33%" |
| ALIGN="right" |
| VALIGN="top" |
| >Graphics and Video</TD |
| ></TR |
| ></TABLE |
| ></DIV |
| ></BODY |
| ></HTML |
| > |