summaryrefslogtreecommitdiff
path: root/amiga/font.c
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2015-08-16 12:06:00 +0100
committerChris Young <chris@unsatisfactorysoftware.co.uk>2015-08-16 12:06:00 +0100
commita28be122703cb0331d4b9c56ea38f233703e8ccb (patch)
treedde3cadf3b47b5c937a29244eec62ac53575657a /amiga/font.c
parent527a13a841869c62cacd0cf5db2ba4d5402018c9 (diff)
downloadnetsurf-a28be122703cb0331d4b9c56ea38f233703e8ccb.tar.gz
netsurf-a28be122703cb0331d4b9c56ea38f233703e8ccb.tar.bz2
Fix blitting of font glyphs on OS3/AGA
Diffstat (limited to 'amiga/font.c')
-rw-r--r--amiga/font.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/amiga/font.c b/amiga/font.c
index 78faa9d2b..4cef580ed 100644
--- a/amiga/font.c
+++ b/amiga/font.c
@@ -638,8 +638,13 @@ static inline int32 ami_font_plot_glyph(struct OutlineFont *ofont, struct RastPo
BLITA_SrcBytesPerRow, glyph->glm_BMModulo,
TAG_DONE);
#else
- BltTemplate(glyphbm + (glyph->glm_BMModulo * glyph->glm_BlackTop),
- glyph->glm_BlackLeft, glyph->glm_BMModulo, rp,
+ /* On OS3 the glyph needs to be in chip RAM */
+ void *chip_glyph = AllocVec(glyph->glm_BMModulo * glyph->glm_BMRows, MEMF_CHIP);
+ CopyMem(glyphbm, chip_glyph, glyph->glm_BMModulo * glyph->glm_BMRows);
+
+ BltTemplate(chip_glyph + (glyph->glm_BMModulo * glyph->glm_BlackTop) +
+ ((glyph->glm_BlackLeft >> 4) << 1),
+ glyph->glm_BlackLeft & 0xF, glyph->glm_BMModulo, rp,
x - glyph->glm_X0 + glyph->glm_BlackLeft,
y - glyph->glm_Y0 + glyph->glm_BlackTop,
glyph->glm_BlackWidth, glyph->glm_BlackHeight);