diff options
Diffstat (limited to 'backends/platform/android')
| -rw-r--r-- | backends/platform/android/gfx.cpp | 5 | ||||
| -rw-r--r-- | backends/platform/android/texture.cpp | 36 | 
2 files changed, 25 insertions, 16 deletions
| diff --git a/backends/platform/android/gfx.cpp b/backends/platform/android/gfx.cpp index 5b03af9698..e32e2095bc 100644 --- a/backends/platform/android/gfx.cpp +++ b/backends/platform/android/gfx.cpp @@ -146,7 +146,6 @@ void OSystem_Android::initTexture(GLESBaseTexture **texture,  	}  	(*texture)->allocBuffer(width, height); -	(*texture)->fillBuffer(0);  }  #endif @@ -253,7 +252,6 @@ void OSystem_Android::initOverlay() {  	LOGI("overlay size is %ux%u", overlay_width, overlay_height);  	_overlay_texture->allocBuffer(overlay_width, overlay_height); -	_overlay_texture->fillBuffer(0);  	_overlay_texture->setDrawRect(0, 0,  									_egl_surface_width, _egl_surface_height);  } @@ -268,7 +266,6 @@ void OSystem_Android::initSize(uint width, uint height,  	initTexture(&_game_texture, width, height, format);  #else  	_game_texture->allocBuffer(width, height); -	_game_texture->fillBuffer(0);  #endif  	updateScreenRect(); @@ -710,8 +707,8 @@ void OSystem_Android::setMouseCursor(const byte *buf, uint w, uint h,  		assert(keycolor < 256);  		byte *p = _mouse_texture_palette->palette() + _mouse_keycolor * 2; -  		WRITE_UINT16(p, READ_UINT16(p) | 1); +  		_mouse_keycolor = keycolor;  		WRITE_UINT16(_mouse_texture_palette->palette() + keycolor * 2, 0);  	} diff --git a/backends/platform/android/texture.cpp b/backends/platform/android/texture.cpp index 691c384a18..b96d6bf443 100644 --- a/backends/platform/android/texture.cpp +++ b/backends/platform/android/texture.cpp @@ -229,8 +229,10 @@ void GLESTexture::allocBuffer(GLuint w, GLuint h) {  	GLESBaseTexture::allocBuffer(w, h); -	if (_surface.w == oldw && _surface.h == oldh) +	if (_surface.w == oldw && _surface.h == oldh) { +		fillBuffer(0);  		return; +	}  	delete[] _buf;  	delete[] _pixels; @@ -241,6 +243,8 @@ void GLESTexture::allocBuffer(GLuint w, GLuint h) {  	_surface.pixels = _pixels;  	_surface.pitch = w * _pixelFormat.bytesPerPixel; +	fillBuffer(0); +  	_buf = new byte[w * h * _surface.bytesPerPixel];  	assert(_buf);  } @@ -358,22 +362,26 @@ void GLESPaletteTexture::allocBuffer(GLuint w, GLuint h) {  	GLESBaseTexture::allocBuffer(w, h); -	if (_surface.w == oldw && _surface.h == oldh) +	if (_surface.w == oldw && _surface.h == oldh) { +		fillBuffer(0);  		return; +	} -	byte *new_buffer = new byte[_paletteSize + -						_texture_width * _texture_height]; -	assert(new_buffer); +	byte *old_texture = _texture; -	if (_texture) { -		// preserve palette -		memcpy(new_buffer, _texture, _paletteSize); -		delete[] _texture; -	} +	_texture = new byte[_paletteSize + _texture_width * _texture_height]; +	assert(_texture); -	_texture = new_buffer;  	_surface.pixels = _texture + _paletteSize;  	_surface.pitch = _texture_width; + +	fillBuffer(0); + +	if (old_texture) { +		// preserve palette +		memcpy(_texture, old_texture, _paletteSize); +		delete[] old_texture; +	}  }  void GLESPaletteTexture::fillBuffer(uint32 color) { @@ -480,8 +488,10 @@ void GLESFakePaletteTexture::allocBuffer(GLuint w, GLuint h) {  	GLESBaseTexture::allocBuffer(w, h); -	if (_surface.w == oldw && _surface.h == oldh) +	if (_surface.w == oldw && _surface.h == oldh) { +		fillBuffer(0);  		return; +	}  	delete[] _buf;  	delete[] _pixels; @@ -494,6 +504,8 @@ void GLESFakePaletteTexture::allocBuffer(GLuint w, GLuint h) {  	_surface.bytesPerPixel = 1;  	_surface.pitch = w; +	fillBuffer(0); +  	_buf = new uint16[w * h];  	assert(_buf);  } | 
