mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-28 16:01:20 +02:00
fontrenderer: fix rendering problems with accelerated blitting
This commit is contained in:
committed by
Jacek Jendrzej
parent
90c252f6f9
commit
ca9b85b3f5
@@ -432,14 +432,20 @@ void Font::RenderString(int x, int y, const int width, const char *text, const u
|
|||||||
static fb_pixel_t oldbgcolor = 0, oldfgcolor = 0;
|
static fb_pixel_t oldbgcolor = 0, oldfgcolor = 0;
|
||||||
static fb_pixel_t colors[256]={0};
|
static fb_pixel_t colors[256]={0};
|
||||||
|
|
||||||
/* fetch bgcolor from framebuffer, using lower left edge of the font... */
|
|
||||||
fb_pixel_t bgcolor = *(frameBuffer->getFrameBufferPointer() + x +
|
|
||||||
y * frameBuffer->getStride() / sizeof(fb_pixel_t));
|
|
||||||
// fb_pixel_t bgcolor = frameBuffer->realcolor[color];
|
// fb_pixel_t bgcolor = frameBuffer->realcolor[color];
|
||||||
uint8_t fgindex = color; /* index of font color in the palette */
|
uint8_t fgindex = color; /* index of font color in the palette */
|
||||||
if (color > COL_BLACK0 && color < 254) /* bigger than 254 would result in > 255 */
|
if (color > COL_BLACK0 && color < 254) /* bigger than 254 would result in > 255 */
|
||||||
fgindex = ((((int)color) + 2) | 7) - 2; /* no idea what this does exactly... */
|
fgindex = ((((int)color) + 2) | 7) - 2; /* no idea what this does exactly... */
|
||||||
fb_pixel_t fgcolor = frameBuffer->realcolor[fgindex];
|
fb_pixel_t fgcolor = frameBuffer->realcolor[fgindex];
|
||||||
|
#ifndef USE_NEVIS_GXA
|
||||||
|
/* the GXA seems to do it's job asynchonously, so we need to wait until
|
||||||
|
it's ready, otherwise the font will sometimes "be overwritten" with
|
||||||
|
background color or bgcolor will be wrong */
|
||||||
|
frameBuffer->waitForIdle();
|
||||||
|
#endif
|
||||||
|
/* fetch bgcolor from framebuffer, using lower left edge of the font... */
|
||||||
|
fb_pixel_t bgcolor = *(frameBuffer->getFrameBufferPointer() + x +
|
||||||
|
y * frameBuffer->getStride() / sizeof(fb_pixel_t));
|
||||||
|
|
||||||
if((oldbgcolor != bgcolor) || (oldfgcolor != fgcolor)) {
|
if((oldbgcolor != bgcolor) || (oldfgcolor != fgcolor)) {
|
||||||
|
|
||||||
@@ -484,12 +490,6 @@ void Font::RenderString(int x, int y, const int width, const char *text, const u
|
|||||||
spread_by = 1;
|
spread_by = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* the GXA seems to do it's job asynchonously, so we need to wait until
|
|
||||||
it's ready, otherwise the font will sometimes "be overwritten" with
|
|
||||||
background color */
|
|
||||||
#ifndef USE_NEVIS_GXA
|
|
||||||
frameBuffer->waitForIdle();
|
|
||||||
#endif
|
|
||||||
for (; *text; text++)
|
for (; *text; text++)
|
||||||
{
|
{
|
||||||
FTC_SBit glyph;
|
FTC_SBit glyph;
|
||||||
|
Reference in New Issue
Block a user