From d4eef172e3cf00329b998f2ca5df20b1e500f105 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 30 Jan 2009 06:40:16 +0000 Subject: [PATCH] When creating a software texture, synchronize the surface with the texture. When creating a texture from a surface, synchronize the texture with the surface. --- src/video/SDL_renderer_sw.c | 6 ++++++ src/video/SDL_video.c | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/video/SDL_renderer_sw.c b/src/video/SDL_renderer_sw.c index 05090d14c..75b468652 100644 --- a/src/video/SDL_renderer_sw.c +++ b/src/video/SDL_renderer_sw.c @@ -380,6 +380,12 @@ SW_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) texture->driverdata = SDL_CreateRGBSurface(0, texture->w, texture->h, bpp, Rmask, Gmask, Bmask, Amask); + SDL_SetSurfaceColorMod(texture->driverdata, texture->r, texture->g, + texture->b); + SDL_SetSurfaceAlphaMod(texture->driverdata, texture->a); + SDL_SetSurfaceBlendMode(texture->driverdata, texture->blendMode); + SDL_SetSurfaceScaleMode(texture->driverdata, texture->scaleMode); + if (texture->access == SDL_TEXTUREACCESS_STATIC) { SDL_SetSurfaceRLE(texture->driverdata, 1); } diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index fb745f772..c49379b51 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -1635,6 +1635,24 @@ SDL_CreateTextureFromSurface(Uint32 format, SDL_Surface * surface) } } + { + Uint8 r, g, b, a; + int blendMode; + int scaleMode; + + SDL_GetSurfaceColorMod(surface, &r, &g, &b); + SDL_SetTextureColorMod(textureID, r, g, b); + + SDL_GetSurfaceAlphaMod(surface, &a); + SDL_SetTextureAlphaMod(textureID, a); + + SDL_GetSurfaceBlendMode(surface, &blendMode); + SDL_SetTextureBlendMode(textureID, blendMode); + + SDL_GetSurfaceScaleMode(surface, &scaleMode); + SDL_SetTextureScaleMode(textureID, scaleMode); + } + if (SDL_ISPIXELFORMAT_INDEXED(format) && fmt->palette) { SDL_SetTexturePalette(textureID, fmt->palette->colors, 0, fmt->palette->ncolors);