diff options
author | James Bursa <james@netsurf-browser.org> | 2005-02-20 12:24:18 +0000 |
---|---|---|
committer | James Bursa <james@netsurf-browser.org> | 2005-02-20 12:24:18 +0000 |
commit | c9b0e66246b905805a9e5d025771587a0e4f9a75 (patch) | |
tree | 7a4a55fcb9db9e1a83389b162074f7ade85d8252 | |
parent | afb3ee60c93f3d6ea31839bc379f284a40c09e5f (diff) | |
download | librufl-c9b0e66246b905805a9e5d025771587a0e4f9a75.tar.gz librufl-c9b0e66246b905805a9e5d025771587a0e4f9a75.tar.bz2 |
[project @ 2005-02-20 12:24:18 by bursa]
Implement rufl_invalidate_cache().
svn path=/import/rufl/; revision=2449
-rw-r--r-- | makefile | 2 | ||||
-rw-r--r-- | rufl.h | 9 | ||||
-rw-r--r-- | rufl_chars.c | 8 | ||||
-rw-r--r-- | rufl_paint.c | 8 |
4 files changed, 19 insertions, 8 deletions
@@ -15,7 +15,7 @@ LIBS = -L/home/riscos/env/lib -loslib SOURCE = rufl_init.c rufl_quit.c rufl_dump_state.c \ rufl_character_set_test.c rufl_substitution_lookup.c \ - rufl_paint.c rufl_glyph_map.c + rufl_paint.c rufl_glyph_map.c rufl_invalidate_cache.c all: rufl.o rufl_test,ff8 rufl_chars,ff8 @@ -108,6 +108,15 @@ void rufl_dump_state(void); /** + * Clear the internal font handle cache. + * + * Call this function on mode changes or output redirection changes. + */ + +void rufl_invalidate_cache(void); + + +/** * Free all resources used by the library. */ diff --git a/rufl_chars.c b/rufl_chars.c index d79adb7..25c4edb 100644 --- a/rufl_chars.c +++ b/rufl_chars.c @@ -210,8 +210,14 @@ int main(void) case wimp_USER_MESSAGE: case wimp_USER_MESSAGE_RECORDED: - if (block.message.action == message_QUIT) + switch (block.message.action) { + case message_QUIT: quit = true; + break; + case message_MODE_CHANGE: + rufl_invalidate_cache(); + break; + } break; } } diff --git a/rufl_paint.c b/rufl_paint.c index de20ca0..af771bb 100644 --- a/rufl_paint.c +++ b/rufl_paint.c @@ -277,10 +277,8 @@ rufl_code rufl_process_span(rufl_action action, font_GIVEN_LENGTH | font_GIVEN_FONT | font_KERN | font_GIVEN16_BIT, *x, y, 0, trfm, n * 2); - if (rufl_fm_error) { - xfont_lose_font(f); + if (rufl_fm_error) return rufl_FONT_MANAGER_ERROR; - } } /* increment x by width of span */ @@ -302,10 +300,8 @@ rufl_code rufl_process_span(rufl_action action, 0x7fffffff, 0x7fffffff, 0, trfm, n * 2, 0, &x_out, &y_out, 0); } - if (rufl_fm_error) { - xfont_lose_font(f); + if (rufl_fm_error) return rufl_FONT_MANAGER_ERROR; - } *x += x_out / 400; return rufl_OK; |