[Scummvm-git-logs] scummvm master -> fa4d310fb4d3ccdcf45b2f78e2a23126ec07f006
bluegr
bluegr at gmail.com
Thu Jun 27 09:59:38 CEST 2019
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
fa4d310fb4 WINTERMUTE: Do not optimize out alpha blits on rotation
Commit: fa4d310fb4d3ccdcf45b2f78e2a23126ec07f006
https://github.com/scummvm/scummvm/commit/fa4d310fb4d3ccdcf45b2f78e2a23126ec07f006
Author: lolbot-iichan (lolbot_iichan at mail.ru)
Date: 2019-06-27T10:59:35+03:00
Commit Message:
WINTERMUTE: Do not optimize out alpha blits on rotation
This fixes defect #10684: 1-pixel width sprite becomes a big rectangle
if rotation is applied.
Case was originally reproduced with FoxTail game for WME, then reduced
to testcase
https://github.com/tobiatesan/wme_testsuite/tree/master/time_test/packages
Changed paths:
engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp
engines/wintermute/base/gfx/osystem/render_ticket.cpp
diff --git a/engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp b/engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp
index 4e33702..1409882 100644
--- a/engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp
+++ b/engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp
@@ -452,7 +452,8 @@ bool BaseSurfaceOSystem::drawSprite(int x, int y, Rect32 *rect, Rect32 *newRect,
// But no checking is in place for that yet.
// Optimize by not doing alpha-blits if we lack alpha
- if (_alphaType == Graphics::ALPHA_OPAQUE && !transform._alphaDisable) {
+ // If angle is not 0, then transparent regions are added near the corners
+ if (_alphaType == Graphics::ALPHA_OPAQUE && transform._angle == 0) {
transform._alphaDisable = true;
}
diff --git a/engines/wintermute/base/gfx/osystem/render_ticket.cpp b/engines/wintermute/base/gfx/osystem/render_ticket.cpp
index acc9530..e092e3c 100644
--- a/engines/wintermute/base/gfx/osystem/render_ticket.cpp
+++ b/engines/wintermute/base/gfx/osystem/render_ticket.cpp
@@ -117,6 +117,8 @@ void RenderTicket::drawToSurface(Graphics::Surface *_targetSurface) const {
if (_owner) {
if (_transform._alphaDisable) {
src.setAlphaMode(Graphics::ALPHA_OPAQUE);
+ } else if (_transform._angle) {
+ src.setAlphaMode(Graphics::ALPHA_FULL);
} else {
src.setAlphaMode(_owner->getAlphaType());
}
@@ -149,6 +151,8 @@ void RenderTicket::drawToSurface(Graphics::Surface *_targetSurface, Common::Rect
if (_owner) {
if (_transform._alphaDisable) {
src.setAlphaMode(Graphics::ALPHA_OPAQUE);
+ } else if (_transform._angle) {
+ src.setAlphaMode(Graphics::ALPHA_FULL);
} else {
src.setAlphaMode(_owner->getAlphaType());
}
More information about the Scummvm-git-logs
mailing list