diff options
author | dhewg | 2011-02-06 19:38:15 +0100 |
---|---|---|
committer | dhewg | 2011-02-14 18:58:56 +0100 |
commit | 21c2dda5ba42d65cba71c3f27bb6679ecdd01c9e (patch) | |
tree | 8860b38b8e7510a121712f4fd91779a1d68b0b77 /backends | |
parent | bf237c8d2c270014a95c40b7567db80ed787a67a (diff) | |
download | scummvm-rg350-21c2dda5ba42d65cba71c3f27bb6679ecdd01c9e.tar.gz scummvm-rg350-21c2dda5ba42d65cba71c3f27bb6679ecdd01c9e.tar.bz2 scummvm-rg350-21c2dda5ba42d65cba71c3f27bb6679ecdd01c9e.zip |
ANDROID: Use and reinit texture on screen changes
- EVENT_SCREEN_CHANGED must happen _after_ we have a new surface,
not when the the old surface vanishes. fixes port on galaxy tab
- textures have to be redefined with glTexImage2D() to make
glTexSubImage2D() not fail on screen changes
Diffstat (limited to 'backends')
-rw-r--r-- | backends/platform/android/org/inodes/gus/scummvm/ScummVM.java | 3 | ||||
-rw-r--r-- | backends/platform/android/video.cpp | 7 |
2 files changed, 8 insertions, 2 deletions
diff --git a/backends/platform/android/org/inodes/gus/scummvm/ScummVM.java b/backends/platform/android/org/inodes/gus/scummvm/ScummVM.java index bb4a3dd061..0e905f43a5 100644 --- a/backends/platform/android/org/inodes/gus/scummvm/ScummVM.java +++ b/backends/platform/android/org/inodes/gus/scummvm/ScummVM.java @@ -98,11 +98,10 @@ public class ScummVM implements SurfaceHolder.Callback { public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // Disabled while I debug GL problems - //pushEvent(new Event(Event.EVENT_SCREEN_CHANGED)); + pushEvent(new Event(Event.EVENT_SCREEN_CHANGED)); } public void surfaceDestroyed(SurfaceHolder holder) { - pushEvent(new Event(Event.EVENT_SCREEN_CHANGED)); try { surfaceLock.acquire(); } catch (InterruptedException e) { diff --git a/backends/platform/android/video.cpp b/backends/platform/android/video.cpp index e56c0da2af..b9c3f9a1f8 100644 --- a/backends/platform/android/video.cpp +++ b/backends/platform/android/video.cpp @@ -135,7 +135,14 @@ GLESTexture::~GLESTexture() { } void GLESTexture::reinitGL() { + glDeleteTextures(1, &_texture_name); glGenTextures(1, &_texture_name); + + // bypass allocBuffer() shortcut to reinit the texture properly + _texture_width = 0; + _texture_height = 0; + + allocBuffer(_surface.w, _surface.h); setDirty(); } |