diff options
-rw-r--r-- | backends/platform/android/gfx.cpp | 16 | ||||
-rw-r--r-- | backends/platform/android/texture.cpp | 1 | ||||
-rw-r--r-- | backends/platform/android/texture.h | 40 |
3 files changed, 35 insertions, 22 deletions
diff --git a/backends/platform/android/gfx.cpp b/backends/platform/android/gfx.cpp index 34981dddb8..2543ac7a3e 100644 --- a/backends/platform/android/gfx.cpp +++ b/backends/platform/android/gfx.cpp @@ -250,6 +250,8 @@ void OSystem_Android::initOverlay() { LOGI("overlay size is %ux%u", overlay_width, overlay_height); _overlay_texture->allocBuffer(overlay_width, overlay_height); + _overlay_texture->setDrawRect(0, 0, + _egl_surface_width, _egl_surface_height); } void OSystem_Android::initSize(uint width, uint height, @@ -264,6 +266,9 @@ void OSystem_Android::initSize(uint width, uint height, _game_texture->allocBuffer(width, height); _game_texture->fillBuffer(0); #endif + + _game_texture->setDrawRect(0, 0, _egl_surface_width, _egl_surface_height); + // Don't know mouse size yet - it gets reallocated in // setMouseCursor. We need the palette allocated before // setMouseCursor however, so just take a guess at the desired @@ -364,8 +369,7 @@ void OSystem_Android::updateScreen() { } if (_focus_rect.isEmpty()) { - _game_texture->drawTexture(0, 0, _egl_surface_width, - _egl_surface_height); + _game_texture->drawTextureRect(); } else { GLCALL(glPushMatrix()); GLCALL(glScalex(xdiv(_egl_surface_width, _focus_rect.width()), @@ -377,8 +381,7 @@ void OSystem_Android::updateScreen() { xdiv(_game_texture->height(), _egl_surface_height), 1 << 16)); - _game_texture->drawTexture(0, 0, _egl_surface_width, - _egl_surface_height); + _game_texture->drawTextureRect(); GLCALL(glPopMatrix()); } @@ -388,8 +391,7 @@ void OSystem_Android::updateScreen() { // ugly, but the modern theme sets a wacko factor, only god knows why cs = 1; - GLCALL(_overlay_texture->drawTexture(0, 0, _egl_surface_width, - _egl_surface_height)); + GLCALL(_overlay_texture->drawTextureRect()); } if (_show_mouse) { @@ -422,7 +424,7 @@ void OSystem_Android::updateScreen() { GLCALL(glScalex(cs << 16, cs << 16, 1 << 16)); - _mouse_texture->drawTexture(); + _mouse_texture->drawTextureOrigin(); GLCALL(glPopMatrix()); } diff --git a/backends/platform/android/texture.cpp b/backends/platform/android/texture.cpp index c309bd51b4..499de00f56 100644 --- a/backends/platform/android/texture.cpp +++ b/backends/platform/android/texture.cpp @@ -87,6 +87,7 @@ GLESBaseTexture::GLESBaseTexture(GLenum glFormat, GLenum glType, _surface(), _texture_width(0), _texture_height(0), + _draw_rect(), _all_dirty(false), _dirty_rect(), _pixelFormat(pixelFormat), diff --git a/backends/platform/android/texture.h b/backends/platform/android/texture.h index e8f20132f8..547051996b 100644 --- a/backends/platform/android/texture.h +++ b/backends/platform/android/texture.h @@ -59,8 +59,29 @@ public: virtual void drawTexture(GLshort x, GLshort y, GLshort w, GLshort h); - inline void drawTexture() { - drawTexture(0, 0, _surface.w, _surface.h); + inline void setDrawRect(const Common::Rect &rect) { + _draw_rect = rect; + } + + inline void setDrawRect(int16 w, int16 h) { + _draw_rect = Common::Rect(w, h); + } + + inline void setDrawRect(int16 x1, int16 y1, int16 x2, int16 y2) { + _draw_rect = Common::Rect(x1, y1, x2, y2); + } + + inline const Common::Rect &getDrawRect() { + return _draw_rect; + } + + inline void drawTextureRect() { + drawTexture(_draw_rect.left, _draw_rect.top, + _draw_rect.width(), _draw_rect.height()); + } + + inline void drawTextureOrigin() { + drawTexture(0, 0, _surface.w, _surface.h); } inline GLuint width() const { @@ -136,7 +157,8 @@ protected: GLuint _texture_width; GLuint _texture_height; - // Covers dirty area + Common::Rect _draw_rect; + bool _all_dirty; Common::Rect _dirty_rect; @@ -160,10 +182,6 @@ public: virtual void drawTexture(GLshort x, GLshort y, GLshort w, GLshort h); - inline void drawTexture() { - drawTexture(0, 0, _surface.w, _surface.h); - } - protected: byte *_pixels; byte *_buf; @@ -217,10 +235,6 @@ public: virtual void drawTexture(GLshort x, GLshort y, GLshort w, GLshort h); - inline void drawTexture() { - drawTexture(0, 0, _surface.w, _surface.h); - } - virtual const byte *palette_const() const { return _texture; }; @@ -285,10 +299,6 @@ public: virtual void drawTexture(GLshort x, GLshort y, GLshort w, GLshort h); - inline void drawTexture() { - drawTexture(0, 0, _surface.w, _surface.h); - } - virtual const byte *palette_const() const { return (byte *)_palette; }; |