summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
authorSylvain Becker <sylvain.becker@gmail.com>2020-12-27 20:28:24 +0100
committerSylvain Becker <sylvain.becker@gmail.com>2020-12-27 20:28:24 +0100
commitc66246f2a420f4e9cc5a51d292d4376fa685d928 (patch)
treed0e73aafb5072cf35e711ff547e9ef52bd3e9f99 /src/render
parent5e549e43ee5b40bb6e1dc0c0bb3cd881f03f885a (diff)
downloadsdl-c66246f2a420f4e9cc5a51d292d4376fa685d928.tar.gz
Forward scale mode to SW renderer (Bug 5313)
Diffstat (limited to 'src/render')
-rw-r--r--src/render/SDL_sysrender.h3
-rw-r--r--src/render/software/SDL_render_sw.c4
2 files changed, 5 insertions, 2 deletions
diff --git a/src/render/SDL_sysrender.h b/src/render/SDL_sysrender.h
index 5bb98094e..0269a93ee 100644
--- a/src/render/SDL_sysrender.h
+++ b/src/render/SDL_sysrender.h
@@ -258,6 +258,9 @@ extern SDL_BlendOperation SDL_GetBlendModeAlphaOperation(SDL_BlendMode blendMode
the next call, because it might be in an array that gets realloc()'d. */
extern void *SDL_AllocateRenderVertices(SDL_Renderer *renderer, const size_t numbytes, const size_t alignment, size_t *offset);
+extern int SDL_PrivateLowerBlitScaled(SDL_Surface * src, SDL_Rect * srcrect, SDL_Surface * dst, SDL_Rect * dstrect, SDL_ScaleMode scaleMode);
+extern int SDL_PrivateUpperBlitScaled(SDL_Surface * src, const SDL_Rect * srcrect, SDL_Surface * dst, SDL_Rect * dstrect, SDL_ScaleMode scaleMode);
+
#endif /* SDL_sysrender_h_ */
/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/render/software/SDL_render_sw.c b/src/render/software/SDL_render_sw.c
index 18dc1808c..0f7ac57be 100644
--- a/src/render/software/SDL_render_sw.c
+++ b/src/render/software/SDL_render_sw.c
@@ -434,7 +434,7 @@ SW_RenderCopyEx(SDL_Renderer * renderer, SDL_Surface *surface, SDL_Texture * tex
retval = -1;
} else {
SDL_SetSurfaceBlendMode(src_clone, SDL_BLENDMODE_NONE);
- retval = SDL_BlitScaled(src_clone, srcrect, src_scaled, &scale_rect);
+ retval = SDL_PrivateUpperBlitScaled(src_clone, srcrect, src_scaled, &scale_rect, texture->scaleMode);
SDL_FreeSurface(src_clone);
src_clone = src_scaled;
src_scaled = NULL;
@@ -720,7 +720,7 @@ SW_RunCommandQueue(SDL_Renderer * renderer, SDL_RenderCommand *cmd, void *vertic
* to avoid potentially frequent RLE encoding/decoding.
*/
SDL_SetSurfaceRLE(surface, 0);
- SDL_BlitScaled(src, srcrect, surface, dstrect);
+ SDL_PrivateUpperBlitScaled(src, srcrect, surface, dstrect, texture->scaleMode);
}
break;
}