added error checking to CreateDisplay, returns bool now

This commit is contained in:
James Turk 2003-01-12 07:09:04 +00:00
parent 2a9d898464
commit 19db456422
3 changed files with 45 additions and 15 deletions

View File

@ -1,7 +1,8 @@
ZEngine Version Log for Version 0.8.1
$Id: changelog.txt,v 1.21 2003/01/07 05:44:32 cozman Exp $
$Id: changelog.txt,v 1.22 2003/01/12 07:09:04 cozman Exp $
0.8.2
-Changed ZEngine::CreateDisplay to return a bool.
-Added \since option to documentation (Everything after 0.8.0 will be labeled with a version.)
-Added "desired framerate" code to ZEngine.
-Added "desired framerate" functionality into the test programs.

View File

@ -13,7 +13,7 @@
File: ZE_ZEngine.h <br>
Description: Header file for ZEngine class, the core of the ZEngine. <br>
Author(s): James Turk <br>
$Id: ZE_ZEngine.h,v 1.9 2003/01/04 05:16:02 cozman Exp $<br>
$Id: ZE_ZEngine.h,v 1.10 2003/01/12 07:09:04 cozman Exp $<br>
\file ZE_ZEngine.h
\brief Definition file for core ZEngine class.
@ -138,12 +138,14 @@ class ZEngine
\brief Create Display with predefined settings.
SetupDisplay and SetupSound should be called prior to this to change settings, settings from those do not go into effect
until this function is called. Specify no icon file to use default OS icon.
until this function is called. Specify no icon file to use default icon. Returns result of setting up ZEngine, and logs
error if false is returned (returns bool in versions >= 0.8.2).
\param title Window Title.
\param icon Path to Icon File.
**/
void CreateDisplay(string title, string icon="");
bool CreateDisplay(string title, string icon="");
/*!
\brief Quit SDL and any Subsystems.

View File

@ -13,7 +13,7 @@
File: ZE_ZEngine.cpp <br>
Description: Implementation source file for ZEngine library main singleton class. <br>
Author(s): James Turk <br>
$Id: ZE_ZEngine.cpp,v 1.10 2003/01/04 05:16:01 cozman Exp $<br>
$Id: ZE_ZEngine.cpp,v 1.11 2003/01/12 07:09:04 cozman Exp $<br>
\file ZE_ZEngine.cpp
\brief Central source file for ZEngine.
@ -96,22 +96,29 @@ void ZEngine::SetupSound(int rate, bool stereo)
}
#endif
void ZEngine::CreateDisplay(string title, string icon)
bool ZEngine::CreateDisplay(string title, string icon)
{
Uint32 flags;
Uint32 flags=0;
SDL_Surface *iconImg;
#ifdef USE_OPENGL
int rgb_size[3];
#endif //USE_OPENGL
if(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER|SDL_INIT_AUDIO) < 0)
{
LogError(FormatStr("SDL could not be Initialized: %s", SDL_GetError()));
CloseDisplay();
LogError(FormatStr("SDL could not be initialized: %s", mWidth, mHeight, mBPP, SDL_GetError()));
return false;
}
#ifdef USE_SDL_MIXER
Mix_OpenAudio(mRate, AUDIO_S16SYS, mStereo?2:1, 4096); //Open Audio Stream (Stereo?2:1 is conditional for number of channels)
#endif
if(Mix_OpenAudio(mRate, AUDIO_S16SYS, mStereo?2:1, 4096) < 0) //Open Audio (Stereo?2:1 is conditional for number of channels)
{
LogError(FormatStr("SDL_mixer could not be initialized: %s", Mix_GetError()));
return false;
}
#endif //USE_SDL_MIXER
#ifdef USE_OPENGL
switch (mBPP)
{
case 8:
@ -131,6 +138,7 @@ void ZEngine::CreateDisplay(string title, string icon)
rgb_size[2] = 8;
break;
}
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, rgb_size[0]);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, rgb_size[1]);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, rgb_size[2]);
@ -143,6 +151,7 @@ void ZEngine::CreateDisplay(string title, string icon)
SDL_GL_SetAttribute(SDL_GL_ACCUM_ALPHA_SIZE, 0);
flags = SDL_OPENGL;
#endif //USE_OPENGL
//Window Manager settings//
SDL_EnableKeyRepeat(30,30);
@ -161,26 +170,44 @@ void ZEngine::CreateDisplay(string title, string icon)
flags |= SDL_FULLSCREEN;
mScreen = SDL_SetVideoMode(mWidth, mHeight, mBPP, flags);
if(!mScreen)
if(!mScreen) //try 0 for BPP if supplied bpp failed
{
LogError(FormatStr("Unable to set video mode %dx%d (%dBpp): %s",mWidth,mHeight,mBPP,SDL_GetError()));
CloseDisplay();
mScreen = SDL_SetVideoMode(mWidth, mHeight, 0, flags);
}
if(!mScreen) //if safe screen setup fails
{
#ifdef USE_SDL_MIXER
Mix_CloseAudio();
#endif
SDL_Quit();
return false;
}
mWidth = mScreen->w;
mHeight = mScreen->h;
mBPP = mScreen->format->BitsPerPixel;
#ifdef USE_OPENGL
SetGL2D();
#endif //USE_OPENGL
mKeyIsPressed = SDL_GetKeyState(NULL);
#ifdef USE_SDL_TTF
TTF_Init();
#endif
if(TTF_Init() < 0)
{
LogError(FormatStr("SDL could not be initialized: %s", mWidth, mHeight, mBPP, SDL_GetError()));
return false;
}
#endif //USE_SDL_TTF
mLastTime = mPausedTime = SDL_GetTicks();
mActive = true;
return true;
}
void ZEngine::CloseDisplay()