diff options
| author | Alyssa Milburn | 2012-08-28 15:39:00 +0200 | 
|---|---|---|
| committer | Alyssa Milburn | 2012-08-28 15:54:12 +0200 | 
| commit | 31801137b5c6908edd76f357b3f29b07e9e3be84 (patch) | |
| tree | 33e973717545ae27da6ba4996d0d8fe1bcd437b3 /backends/platform/android | |
| parent | 35fd91793b34b72624a89f2a76f45bc8e59020d2 (diff) | |
| parent | 6ab8db638e4a1d547ee67db067b5d6c3d6c940a4 (diff) | |
| download | scummvm-rg350-31801137b5c6908edd76f357b3f29b07e9e3be84.tar.gz scummvm-rg350-31801137b5c6908edd76f357b3f29b07e9e3be84.tar.bz2 scummvm-rg350-31801137b5c6908edd76f357b3f29b07e9e3be84.zip  | |
Merge remote-tracking branch 'origin/master' into tony
Conflicts:
	common/coroutines.cpp
	common/coroutines.h
	devtools/create_project/msbuild.cpp
	devtools/create_project/visualstudio.cpp
Diffstat (limited to 'backends/platform/android')
| -rw-r--r-- | backends/platform/android/android.cpp | 1 | ||||
| -rw-r--r-- | backends/platform/android/android.h | 10 | ||||
| -rw-r--r-- | backends/platform/android/android.mk | 13 | ||||
| -rw-r--r-- | backends/platform/android/gfx.cpp | 28 | ||||
| -rw-r--r-- | backends/platform/android/texture.cpp | 63 | 
5 files changed, 51 insertions, 64 deletions
diff --git a/backends/platform/android/android.cpp b/backends/platform/android/android.cpp index 902599d50f..0b31ee717c 100644 --- a/backends/platform/android/android.cpp +++ b/backends/platform/android/android.cpp @@ -554,6 +554,7 @@ void OSystem_Android::getTimeAndDate(TimeDate &td) const {  	td.tm_mday = tm.tm_mday;  	td.tm_mon = tm.tm_mon;  	td.tm_year = tm.tm_year; +	td.tm_wday = tm.tm_wday;  }  void OSystem_Android::addSysArchivesToSearchSet(Common::SearchSet &s, diff --git a/backends/platform/android/android.h b/backends/platform/android/android.h index 47a6515a2a..4b13ca4b0f 100644 --- a/backends/platform/android/android.h +++ b/backends/platform/android/android.h @@ -244,7 +244,7 @@ protected:  	virtual void grabPalette(byte *colors, uint start, uint num);  public: -	virtual void copyRectToScreen(const byte *buf, int pitch, int x, int y, +	virtual void copyRectToScreen(const void *buf, int pitch, int x, int y,  									int w, int h);  	virtual void updateScreen();  	virtual Graphics::Surface *lockScreen(); @@ -257,8 +257,8 @@ public:  	virtual void showOverlay();  	virtual void hideOverlay();  	virtual void clearOverlay(); -	virtual void grabOverlay(OverlayColor *buf, int pitch); -	virtual void copyRectToOverlay(const OverlayColor *buf, int pitch, +	virtual void grabOverlay(void *buf, int pitch); +	virtual void copyRectToOverlay(const void *buf, int pitch,  									int x, int y, int w, int h);  	virtual int16 getOverlayHeight();  	virtual int16 getOverlayWidth(); @@ -267,9 +267,9 @@ public:  	virtual bool showMouse(bool visible);  	virtual void warpMouse(int x, int y); -	virtual void setMouseCursor(const byte *buf, uint w, uint h, int hotspotX, +	virtual void setMouseCursor(const void *buf, uint w, uint h, int hotspotX,  								int hotspotY, uint32 keycolor, -								int cursorTargetScale, +								bool dontScale,  								const Graphics::PixelFormat *format);  	virtual void setCursorPalette(const byte *colors, uint start, uint num); diff --git a/backends/platform/android/android.mk b/backends/platform/android/android.mk index 2e8fd62152..9292a16595 100644 --- a/backends/platform/android/android.mk +++ b/backends/platform/android/android.mk @@ -130,7 +130,18 @@ $(PATH_STAGE_PREFIX).%/res/drawable/scummvm.png: $(PATH_RESOURCES)/drawable/scum  $(FILE_RESOURCES_MAIN): $(FILE_MANIFEST) $(RESOURCES) $(ANDROID_JAR8) $(DIST_FILES_THEMES) $(DIST_FILES_ENGINEDATA)  	$(INSTALL) -d $(PATH_BUILD_ASSETS)  	$(INSTALL) -c -m 644 $(DIST_FILES_THEMES) $(DIST_FILES_ENGINEDATA) $(PATH_BUILD_ASSETS)/ -	$(AAPT) package -f -M $< -S $(PATH_RESOURCES) -A $(PATH_BUILD_ASSETS) -I $(ANDROID_JAR8) -F $@ +	work_dir=`pwd`; \ +	for i in $(PATH_BUILD_ASSETS)/*.zip; do \ +		echo "recompress $$i"; \ +		cd $$work_dir; \ +		$(RM) -rf $(PATH_BUILD_ASSETS)/tmp; \ +		$(MKDIR) $(PATH_BUILD_ASSETS)/tmp; \ +		unzip -q $$i -d $(PATH_BUILD_ASSETS)/tmp; \ +		cd $(PATH_BUILD_ASSETS)/tmp; \ +		zip -r ../`basename $$i` *; \ +	done +	@$(RM) -rf $(PATH_BUILD_ASSETS)/tmp +	$(AAPT) package -f -0 zip -M $< -S $(PATH_RESOURCES) -A $(PATH_BUILD_ASSETS) -I $(ANDROID_JAR8) -F $@  $(PATH_BUILD)/%/$(FILE_RESOURCES): $(PATH_BUILD)/%/AndroidManifest.xml $(PATH_STAGE_PREFIX).%/res/values/strings.xml $(PATH_STAGE_PREFIX).%/res/drawable/scummvm.png plugins/lib%.so $(ANDROID_JAR8)  	$(AAPT) package -f -M $< -S $(PATH_STAGE_PREFIX).$*/res -I $(ANDROID_JAR8) -F $@ diff --git a/backends/platform/android/gfx.cpp b/backends/platform/android/gfx.cpp index 8bc914f567..cd0fd88484 100644 --- a/backends/platform/android/gfx.cpp +++ b/backends/platform/android/gfx.cpp @@ -421,7 +421,7 @@ void OSystem_Android::grabPalette(byte *colors, uint start, uint num) {  		pf.colorToRGB(READ_UINT16(p), colors[0], colors[1], colors[2]);  } -void OSystem_Android::copyRectToScreen(const byte *buf, int pitch, +void OSystem_Android::copyRectToScreen(const void *buf, int pitch,  										int x, int y, int w, int h) {  	ENTER("%p, %d, %d, %d, %d, %d", buf, pitch, x, y, w, h); @@ -636,33 +636,32 @@ void OSystem_Android::clearOverlay() {  	_overlay_texture->fillBuffer(0);  } -void OSystem_Android::grabOverlay(OverlayColor *buf, int pitch) { +void OSystem_Android::grabOverlay(void *buf, int pitch) {  	ENTER("%p, %d", buf, pitch);  	GLTHREADCHECK;  	const Graphics::Surface *surface = _overlay_texture->surface_const(); -	assert(surface->format.bytesPerPixel == sizeof(buf[0])); +	assert(surface->format.bytesPerPixel == sizeof(uint16)); +	byte *dst = (byte *)buf;  	const byte *src = (const byte *)surface->pixels;  	uint h = surface->h;  	do { -		memcpy(buf, src, surface->w * surface->format.bytesPerPixel); +		memcpy(dst, src, surface->w * surface->format.bytesPerPixel);  		src += surface->pitch; -		// This 'pitch' is pixels not bytes -		buf += pitch; +		dst += pitch;  	} while (--h);  } -void OSystem_Android::copyRectToOverlay(const OverlayColor *buf, int pitch, +void OSystem_Android::copyRectToOverlay(const void *buf, int pitch,  										int x, int y, int w, int h) {  	ENTER("%p, %d, %d, %d, %d, %d", buf, pitch, x, y, w, h);  	GLTHREADCHECK; -	// This 'pitch' is pixels not bytes -	_overlay_texture->updateBuffer(x, y, w, h, buf, pitch * sizeof(buf[0])); +	_overlay_texture->updateBuffer(x, y, w, h, buf, pitch);  }  int16 OSystem_Android::getOverlayHeight() { @@ -685,12 +684,12 @@ bool OSystem_Android::showMouse(bool visible) {  	return true;  } -void OSystem_Android::setMouseCursor(const byte *buf, uint w, uint h, +void OSystem_Android::setMouseCursor(const void *buf, uint w, uint h,  										int hotspotX, int hotspotY, -										uint32 keycolor, int cursorTargetScale, +										uint32 keycolor, bool dontScale,  										const Graphics::PixelFormat *format) {  	ENTER("%p, %u, %u, %d, %d, %u, %d, %p", buf, w, h, hotspotX, hotspotY, -			keycolor, cursorTargetScale, format); +			keycolor, dontScale, format);  	GLTHREADCHECK; @@ -741,7 +740,7 @@ void OSystem_Android::setMouseCursor(const byte *buf, uint w, uint h,  		byte *tmp = new byte[pitch * h];  		// meh, a 16bit cursor without alpha bits... this is so silly -		if (!crossBlit(tmp, buf, pitch, w * 2, w, h, +		if (!crossBlit(tmp, (const byte *)buf, pitch, w * 2, w, h,  						_mouse_texture->getPixelFormat(),  						*format)) {  			LOGE("crossblit failed"); @@ -766,7 +765,8 @@ void OSystem_Android::setMouseCursor(const byte *buf, uint w, uint h,  	}  	_mouse_hotspot = Common::Point(hotspotX, hotspotY); -	_mouse_targetscale = cursorTargetScale; +	// TODO: Adapt to the new "do not scale" cursor logic. +	_mouse_targetscale = 1;  }  void OSystem_Android::setCursorPaletteInternal(const byte *colors, diff --git a/backends/platform/android/texture.cpp b/backends/platform/android/texture.cpp index 95c96e0d25..b174e93191 100644 --- a/backends/platform/android/texture.cpp +++ b/backends/platform/android/texture.cpp @@ -52,9 +52,6 @@  // Supported GL extensions  static bool npot_supported = false; -#ifdef GL_OES_draw_texture -static bool draw_tex_supported = false; -#endif  static inline GLfixed xdiv(int numerator, int denominator) {  	assert(numerator < (1 << 16)); @@ -85,11 +82,6 @@ void GLESBaseTexture::initGLExtensions() {  		if (token == "GL_ARB_texture_non_power_of_two")  			npot_supported = true; - -#ifdef GL_OES_draw_texture -		if (token == "GL_OES_draw_texture") -			draw_tex_supported = true; -#endif  	}  } @@ -180,45 +172,28 @@ void GLESBaseTexture::allocBuffer(GLuint w, GLuint h) {  void GLESBaseTexture::drawTexture(GLshort x, GLshort y, GLshort w, GLshort h) {  	GLCALL(glBindTexture(GL_TEXTURE_2D, _texture_name)); -#ifdef GL_OES_draw_texture -	// Great extension, but only works under specific conditions. -	// Still a work-in-progress - disabled for now. -	if (false && draw_tex_supported && !hasPalette()) { -		//GLCALL(glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE)); -		const GLint crop[4] = { 0, _surface.h, _surface.w, -_surface.h }; +	const GLfixed tex_width = xdiv(_surface.w, _texture_width); +	const GLfixed tex_height = xdiv(_surface.h, _texture_height); +	const GLfixed texcoords[] = { +		0, 0, +		tex_width, 0, +		0, tex_height, +		tex_width, tex_height, +	}; -		GLCALL(glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, crop)); +	GLCALL(glTexCoordPointer(2, GL_FIXED, 0, texcoords)); -		// Android GLES bug? -		GLCALL(glColor4ub(0xff, 0xff, 0xff, 0xff)); +	const GLshort vertices[] = { +		x, y, +		x + w, y, +		x, y + h, +		x + w, y + h, +	}; -		GLCALL(glDrawTexiOES(x, y, 0, w, h)); -	} else -#endif -	{ -		const GLfixed tex_width = xdiv(_surface.w, _texture_width); -		const GLfixed tex_height = xdiv(_surface.h, _texture_height); -		const GLfixed texcoords[] = { -			0, 0, -			tex_width, 0, -			0, tex_height, -			tex_width, tex_height, -		}; - -		GLCALL(glTexCoordPointer(2, GL_FIXED, 0, texcoords)); - -		const GLshort vertices[] = { -			x, y, -			x + w, y, -			x, y + h, -			x + w, y + h, -		}; - -		GLCALL(glVertexPointer(2, GL_SHORT, 0, vertices)); - -		assert(ARRAYSIZE(vertices) == ARRAYSIZE(texcoords)); -		GLCALL(glDrawArrays(GL_TRIANGLE_STRIP, 0, ARRAYSIZE(vertices) / 2)); -	} +	GLCALL(glVertexPointer(2, GL_SHORT, 0, vertices)); + +	assert(ARRAYSIZE(vertices) == ARRAYSIZE(texcoords)); +	GLCALL(glDrawArrays(GL_TRIANGLE_STRIP, 0, ARRAYSIZE(vertices) / 2));  	clearDirty();  }  | 
