Surface Loss Protection
This commit is contained in:
parent
6fc9a96ad1
commit
7d30f555c5
@ -1,11 +1,15 @@
|
|||||||
ZEngine Version Log for Version 0.8.0-rc4
|
ZEngine Version Log for Version 0.8.0-rc4
|
||||||
$Id: changelog.txt,v 1.16 2002/12/22 06:07:56 cozman Exp $
|
$Id: changelog.txt,v 1.17 2002/12/27 03:15:33 cozman Exp $
|
||||||
|
|
||||||
|
0.8.0
|
||||||
|
-Added Surface Loss Protection.
|
||||||
|
-Utilized Surface Loss Protection in ZImageTest for a demo.
|
||||||
|
|
||||||
0.8.0-rc4 (AKA "what rc3 should have been")
|
0.8.0-rc4 (AKA "what rc3 should have been")
|
||||||
-Fixed ZImage::SetColorKey for new Attach behavior.
|
-Fixed ZImage::SetColorKey for new Attach behavior.
|
||||||
-Fixed ZMusicTest GL screen error if music fails to open.
|
-Fixed ZMusicTest GL screen error if music fails to open.
|
||||||
-Fixed VC7 "Release" Project files.
|
-Fixed VC7 "Release" Project files.
|
||||||
-Removed switch option from tests.
|
-Removed switch option from tests due to surface loss.
|
||||||
|
|
||||||
0.8.0-rc3
|
0.8.0-rc3
|
||||||
-Fixed MAJOR memory leak when using ZImage::Attach, and in ZFont.
|
-Fixed MAJOR memory leak when using ZImage::Attach, and in ZFont.
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
File: ZE_ZEngine.h <br>
|
File: ZE_ZEngine.h <br>
|
||||||
Description: Header file for ZEngine class, the core of the ZEngine. <br>
|
Description: Header file for ZEngine class, the core of the ZEngine. <br>
|
||||||
Author(s): James Turk <br>
|
Author(s): James Turk <br>
|
||||||
$Id: ZE_ZEngine.h,v 1.6 2002/12/12 02:50:35 cozman Exp $<br>
|
$Id: ZE_ZEngine.h,v 1.7 2002/12/27 03:15:33 cozman Exp $<br>
|
||||||
|
|
||||||
\file ZE_ZEngine.h
|
\file ZE_ZEngine.h
|
||||||
\brief Definition file for core ZEngine class.
|
\brief Definition file for core ZEngine class.
|
||||||
@ -268,8 +268,9 @@ class ZEngine
|
|||||||
////////////////////////////
|
////////////////////////////
|
||||||
//Event and Input Handling//
|
//Event and Input Handling//
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
//! bool which is only set to true if the engine thinks the images need to be reloaded (loss of focus in fullscreen).
|
||||||
|
bool mNeedReload;
|
||||||
//! bool describing Active or Inactive State of Game
|
//! bool describing Active or Inactive State of Game
|
||||||
bool mActive;
|
bool mActive;
|
||||||
//! bool for checking if a Quit event has been detected
|
//! bool for checking if a Quit event has been detected
|
||||||
@ -310,6 +311,21 @@ class ZEngine
|
|||||||
\return bool telling if quit has been requested.
|
\return bool telling if quit has been requested.
|
||||||
**/
|
**/
|
||||||
bool QuitRequested();
|
bool QuitRequested();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\brief Set State of ImagesNeedReload.
|
||||||
|
\param state False if images need to be reloaded, True if images have been reloaded.
|
||||||
|
**/
|
||||||
|
void SetReloadNeed(bool state);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\brief Find out if images should be reloaded.
|
||||||
|
|
||||||
|
Function that is good to call every frame to check if images should be reloaded, usually only caused by loss of focus in
|
||||||
|
fullscreen.
|
||||||
|
\return bool, True if images should be reloaded, false otherwise.
|
||||||
|
**/
|
||||||
|
bool ImagesNeedReload();
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\brief Set Key repeat rate.
|
\brief Set Key repeat rate.
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
File: ZEngine.h <br>
|
File: ZEngine.h <br>
|
||||||
Description: Public Header File for ZEngine. <br>
|
Description: Public Header File for ZEngine. <br>
|
||||||
Author(s): James Turk <br>
|
Author(s): James Turk <br>
|
||||||
$Id: ZEngine.h,v 1.10 2002/12/12 04:33:18 cozman Exp $<br>
|
$Id: ZEngine.h,v 1.11 2002/12/27 03:15:33 cozman Exp $<br>
|
||||||
|
|
||||||
\file ZEngine.h
|
\file ZEngine.h
|
||||||
\brief Header file for ZEngine.
|
\brief Header file for ZEngine.
|
||||||
@ -16,8 +16,8 @@ $Id: ZEngine.h,v 1.10 2002/12/12 04:33:18 cozman Exp $<br>
|
|||||||
\mainpage ZEngine Documentation
|
\mainpage ZEngine Documentation
|
||||||
|
|
||||||
\author James Turk
|
\author James Turk
|
||||||
\version 0.8.0-rc2
|
\version 0.8.0-rc4
|
||||||
\date December 12, 2002
|
\date December 26, 2002
|
||||||
|
|
||||||
\section ZEngine About ZEngine
|
\section ZEngine About ZEngine
|
||||||
<br>
|
<br>
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
File: ZE_ZEngine.cpp <br>
|
File: ZE_ZEngine.cpp <br>
|
||||||
Description: Implementation source file for ZEngine library main singleton class. <br>
|
Description: Implementation source file for ZEngine library main singleton class. <br>
|
||||||
Author(s): James Turk <br>
|
Author(s): James Turk <br>
|
||||||
$Id: ZE_ZEngine.cpp,v 1.7 2002/12/12 02:50:35 cozman Exp $<br>
|
$Id: ZE_ZEngine.cpp,v 1.8 2002/12/27 03:15:33 cozman Exp $<br>
|
||||||
|
|
||||||
\file ZE_ZEngine.cpp
|
\file ZE_ZEngine.cpp
|
||||||
\brief Central source file for ZEngine.
|
\brief Central source file for ZEngine.
|
||||||
@ -39,6 +39,7 @@ ZEngine::ZEngine()
|
|||||||
mRate = 22050;
|
mRate = 22050;
|
||||||
mStereo = false;
|
mStereo = false;
|
||||||
#endif
|
#endif
|
||||||
|
mNeedReload = false;
|
||||||
|
|
||||||
mScreen = NULL;
|
mScreen = NULL;
|
||||||
|
|
||||||
@ -298,6 +299,16 @@ bool ZEngine::QuitRequested()
|
|||||||
return mQuit;
|
return mQuit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ZEngine::SetReloadNeed(bool state)
|
||||||
|
{
|
||||||
|
mNeedReload = state;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ZEngine::ImagesNeedReload()
|
||||||
|
{
|
||||||
|
return mNeedReload;
|
||||||
|
}
|
||||||
|
|
||||||
void ZEngine::SetKeyRepeatRate(int rate)
|
void ZEngine::SetKeyRepeatRate(int rate)
|
||||||
{
|
{
|
||||||
SDL_EnableKeyRepeat(rate,rate);
|
SDL_EnableKeyRepeat(rate,rate);
|
||||||
@ -368,6 +379,8 @@ void ZEngine::CheckEvents()
|
|||||||
mActive = true;
|
mActive = true;
|
||||||
if(mUnpauseOnActive)
|
if(mUnpauseOnActive)
|
||||||
UnpauseTimer();
|
UnpauseTimer();
|
||||||
|
if(mFullscreen)
|
||||||
|
mNeedReload = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -24,7 +24,7 @@ void Initialize()
|
|||||||
w = cfg.GetInt("ZImageTest","width",800);
|
w = cfg.GetInt("ZImageTest","width",800);
|
||||||
h = cfg.GetInt("ZImageTest","height",600);
|
h = cfg.GetInt("ZImageTest","height",600);
|
||||||
bpp = cfg.GetInt("ZImageTest","bpp",32);
|
bpp = cfg.GetInt("ZImageTest","bpp",32);
|
||||||
fs = cfg.GetBool("ZImageTest","fullscreen",false);
|
fs = cfg.GetBool("ZImageTest","fullscreen",true);
|
||||||
title = cfg.GetString("ZImageTest","title","ZImage Test");
|
title = cfg.GetString("ZImageTest","title","ZImage Test");
|
||||||
|
|
||||||
engine->SetupDisplay(w,h,bpp,fs);
|
engine->SetupDisplay(w,h,bpp,fs);
|
||||||
@ -38,22 +38,39 @@ void Test()
|
|||||||
|
|
||||||
//Open and Setup all the Images//
|
//Open and Setup all the Images//
|
||||||
SDL_Surface *temp;
|
SDL_Surface *temp;
|
||||||
ZImage image1, image2("data/test01.bmp"), image3(image2.Surface(),5,5,20,20), textImage;
|
ZImage image1, image2, image3, textImage;
|
||||||
ZFont font("data/almontew.ttf",30);
|
ZFont font("data/almontew.ttf",30);
|
||||||
|
|
||||||
temp = SDL_LoadBMP("data/test02.bmp"); //this is a separate surface
|
engine->SetReloadNeed(true); //start off needing the reload
|
||||||
image1.Attach(temp); //this attaches the surface into itself
|
|
||||||
temp = NULL; //and temp will now be controlled and freed by image1
|
|
||||||
image1.SetColorKey(255,0,255);
|
|
||||||
image2.SetColorKey(255,0,255);
|
|
||||||
font.SetColor(0,255,0);
|
font.SetColor(0,255,0);
|
||||||
font.SetBGColor(0,0,255);
|
font.SetBGColor(0,0,255);
|
||||||
font.DrawShadedText("ZImage Test.",textImage);
|
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
//In the active loop, check events first//
|
//In the active loop, check events first//
|
||||||
engine->CheckEvents();
|
engine->CheckEvents();
|
||||||
|
|
||||||
|
if(engine->ImagesNeedReload())
|
||||||
|
{
|
||||||
|
temp = SDL_LoadBMP("data/test02.bmp"); //this is a separate surface
|
||||||
|
image1.Attach(temp); //this attaches the surface into itself
|
||||||
|
image2.Open("data/test01.bmp");
|
||||||
|
image3.OpenFromImage(image2.Surface(),5,5,20,20);
|
||||||
|
temp = NULL; //and temp will now be controlled and freed by image1
|
||||||
|
image1.SetColorKey(255,0,255);
|
||||||
|
image2.SetColorKey(255,0,255);
|
||||||
|
font.DrawShadedText("ZImage Test.",textImage);
|
||||||
|
engine->SetReloadNeed(false); //very important for speed, without this you'd be reloading every frame
|
||||||
|
}
|
||||||
|
|
||||||
|
if(engine->KeyIsPressed(SDLK_s))
|
||||||
|
{
|
||||||
|
//code to toggle screen//
|
||||||
|
engine->SetupDisplay(engine->Width(),engine->Height(),engine->BPP(),!engine->IsFullscreen());
|
||||||
|
engine->CreateDisplay("ZImage Test");
|
||||||
|
engine->SetReloadNeed(true);
|
||||||
|
}
|
||||||
if(engine->KeyIsPressed(SDLK_ESCAPE))
|
if(engine->KeyIsPressed(SDLK_ESCAPE))
|
||||||
engine->RequestQuit();
|
engine->RequestQuit();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user