Warn if copyRectToScreen() is called before _screen is created, since it's
almost certainly a programming error. (Used to be silently ignored.) Warn if setPalette() is called before _screen is created, but allow it (for now) since we don't actually set the palette until later. It could still be a programming error, though. Don't crash if updateScreen() is called with a "dirty" palette before _screen is created. svn-id: r23573
This commit is contained in:
parent
a68f7100ce
commit
15f08bf268
1 changed files with 12 additions and 2 deletions
|
@ -539,7 +539,7 @@ void OSystem_SDL::internUpdateScreen() {
|
||||||
|
|
||||||
// Check whether the palette was changed in the meantime and update the
|
// Check whether the palette was changed in the meantime and update the
|
||||||
// screen surface accordingly.
|
// screen surface accordingly.
|
||||||
if (_paletteDirtyEnd != 0) {
|
if (_screen && _paletteDirtyEnd != 0) {
|
||||||
SDL_SetColors(_screen, _currentPalette + _paletteDirtyStart,
|
SDL_SetColors(_screen, _currentPalette + _paletteDirtyStart,
|
||||||
_paletteDirtyStart,
|
_paletteDirtyStart,
|
||||||
_paletteDirtyEnd - _paletteDirtyStart);
|
_paletteDirtyEnd - _paletteDirtyStart);
|
||||||
|
@ -779,8 +779,10 @@ void OSystem_SDL::copyRectToScreen(const byte *src, int pitch, int x, int y, int
|
||||||
assert (_transactionMode == kTransactionNone);
|
assert (_transactionMode == kTransactionNone);
|
||||||
assert(src);
|
assert(src);
|
||||||
|
|
||||||
if (_screen == NULL)
|
if (_screen == NULL) {
|
||||||
|
warning("OSystem_SDL::copyRectToScreen: _screen == NULL");
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Common::StackLock lock(_graphicsMutex); // Lock the mutex until this function ends
|
Common::StackLock lock(_graphicsMutex); // Lock the mutex until this function ends
|
||||||
|
|
||||||
|
@ -1025,6 +1027,14 @@ int16 OSystem_SDL::getWidth() {
|
||||||
|
|
||||||
void OSystem_SDL::setPalette(const byte *colors, uint start, uint num) {
|
void OSystem_SDL::setPalette(const byte *colors, uint start, uint num) {
|
||||||
assert(colors);
|
assert(colors);
|
||||||
|
|
||||||
|
// Setting the palette before _screen is created is allowed - for now -
|
||||||
|
// since we don't actually set the palette until the screen is updated.
|
||||||
|
// But it could indicate a programming error, so let's warn about it.
|
||||||
|
|
||||||
|
if (!_screen)
|
||||||
|
warning("OSystem_SDL::setPalette: _screen == NULL");
|
||||||
|
|
||||||
const byte *b = colors;
|
const byte *b = colors;
|
||||||
uint i;
|
uint i;
|
||||||
SDL_Color *base = _currentPalette + start;
|
SDL_Color *base = _currentPalette + start;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue