diff options
Diffstat (limited to 'backends/graphics')
-rw-r--r-- | backends/graphics/opengl/debug.cpp | 4 | ||||
-rw-r--r-- | backends/graphics/opengl/opengl-graphics.cpp | 11 | ||||
-rw-r--r-- | backends/graphics/opengl/texture.cpp | 2 | ||||
-rw-r--r-- | backends/graphics/surfacesdl/surfacesdl-graphics.cpp | 10 |
4 files changed, 17 insertions, 10 deletions
diff --git a/backends/graphics/opengl/debug.cpp b/backends/graphics/opengl/debug.cpp index 69006bb975..d5d73fb5ec 100644 --- a/backends/graphics/opengl/debug.cpp +++ b/backends/graphics/opengl/debug.cpp @@ -52,9 +52,9 @@ Common::String getGLErrStr(GLenum error) { } // End of anonymous namespace void checkGLError(const char *expr, const char *file, int line) { - GLenum error = glGetError(); + GLenum error; - if (error != GL_NO_ERROR) { + while ((error = glGetError()) != GL_NO_ERROR) { // We cannot use error here because we do not know whether we have a // working screen or not. warning("GL ERROR: %s on %s (%s:%d)", getGLErrStr(error).c_str(), expr, file, line); diff --git a/backends/graphics/opengl/opengl-graphics.cpp b/backends/graphics/opengl/opengl-graphics.cpp index 9ad0e62f37..a97f680f15 100644 --- a/backends/graphics/opengl/opengl-graphics.cpp +++ b/backends/graphics/opengl/opengl-graphics.cpp @@ -608,13 +608,10 @@ void OpenGLGraphicsManager::setMouseCursor(const void *buf, uint w, uint h, int Graphics::Surface *dst = _cursor->getSurface(); const uint srcPitch = w * inputFormat.bytesPerPixel; - // In case the actual cursor format differs from the requested format - // we will need to convert the format. This might be the case because - // the cursor format does not have any alpha bits. - if (dst->format != inputFormat) { - Graphics::crossBlit((byte *)dst->getPixels(), (const byte *)buf, dst->pitch, srcPitch, - w, h, dst->format, inputFormat); - } + // Copy the cursor data to the actual texture surface. This will make + // sure that the data is also converted to the expected format. + Graphics::crossBlit((byte *)dst->getPixels(), (const byte *)buf, dst->pitch, srcPitch, + w, h, dst->format, inputFormat); // We apply the color key by setting the alpha bits of the pixels to // fully transparent. diff --git a/backends/graphics/opengl/texture.cpp b/backends/graphics/opengl/texture.cpp index 917bf70534..8f17ed7eeb 100644 --- a/backends/graphics/opengl/texture.cpp +++ b/backends/graphics/opengl/texture.cpp @@ -287,7 +287,7 @@ void TextureCLUT8::allocate(uint width, uint height) { // We only need to reinitialize our CLUT8 surface when the output size // changed. - if (width == _clut8Data.w && width == _clut8Data.h) { + if (width == _clut8Data.w && height == _clut8Data.h) { return; } diff --git a/backends/graphics/surfacesdl/surfacesdl-graphics.cpp b/backends/graphics/surfacesdl/surfacesdl-graphics.cpp index d15fd6d8ef..b3af08e2e8 100644 --- a/backends/graphics/surfacesdl/surfacesdl-graphics.cpp +++ b/backends/graphics/surfacesdl/surfacesdl-graphics.cpp @@ -265,7 +265,11 @@ const OSystem::GraphicsMode *SurfaceSdlGraphicsManager::getSupportedGraphicsMode } int SurfaceSdlGraphicsManager::getDefaultGraphicsMode() const { +#ifdef USE_SCALERS return GFX_DOUBLESIZE; +#else + return GFX_NORMAL; +#endif } void SurfaceSdlGraphicsManager::resetGraphicsScale() { @@ -740,6 +744,8 @@ bool SurfaceSdlGraphicsManager::loadGFXMode() { if (_screen == NULL) error("allocating _screen failed"); + // Avoid having SDL_SRCALPHA set even if we supplied an alpha-channel in the format. + SDL_SetAlpha(_screen, 0, 255); #else _screen = SDL_CreateRGBSurface(SDL_SWSURFACE, _videoMode.screenWidth, _videoMode.screenHeight, 8, 0, 0, 0, 0); if (_screen == NULL) @@ -1074,7 +1080,9 @@ void SurfaceSdlGraphicsManager::internUpdateScreen() { for (r = _dirtyRectList; r != lastRect; ++r) { register int dst_y = r->y + _currentShakePos; register int dst_h = 0; +#ifdef USE_SCALERS register int orig_dst_y = 0; +#endif register int rx1 = r->x * scale1; if (dst_y < height) { @@ -1082,7 +1090,9 @@ void SurfaceSdlGraphicsManager::internUpdateScreen() { if (dst_h > height - dst_y) dst_h = height - dst_y; +#ifdef USE_SCALERS orig_dst_y = dst_y; +#endif dst_y = dst_y * scale1; if (_videoMode.aspectRatioCorrection && !_overlayVisible) |