diff options
author | Richard Wilson <rjw@netsurf-browser.org> | 2004-07-20 22:20:58 +0000 |
---|---|---|
committer | Richard Wilson <rjw@netsurf-browser.org> | 2004-07-20 22:20:58 +0000 |
commit | 7d1a21d758e5115b0f29a86899c75115fcc672ce (patch) | |
tree | 9230798a6e6059088655b3017d155b6d423bdd30 /riscos | |
parent | e459eb604e395e964a82a631194c44a32a813ee6 (diff) | |
download | netsurf-7d1a21d758e5115b0f29a86899c75115fcc672ce.tar.gz netsurf-7d1a21d758e5115b0f29a86899c75115fcc672ce.tar.bz2 |
[project @ 2004-07-20 22:20:58 by rjw]
Support for complete buffering of all output.
svn path=/import/netsurf/; revision=1132
Diffstat (limited to 'riscos')
-rw-r--r-- | riscos/buffer.c | 2 | ||||
-rw-r--r-- | riscos/window.c | 18 |
2 files changed, 14 insertions, 6 deletions
diff --git a/riscos/buffer.c b/riscos/buffer.c index 1a8dafd85..b77d6957a 100644 --- a/riscos/buffer.c +++ b/riscos/buffer.c @@ -100,7 +100,7 @@ void ro_gui_buffer_open(wimp_draw *redraw) { } /* Fill in the sprite area details */ - buffer->size = buffer_size + 1; + buffer->size = buffer_size - sizeof(osspriteop_area); buffer->sprite_count = 0; buffer->first = 16; buffer->used = 16; diff --git a/riscos/window.c b/riscos/window.c index c524ce128..ba64774fd 100644 --- a/riscos/window.c +++ b/riscos/window.c @@ -411,7 +411,7 @@ void ro_gui_window_redraw(struct gui_window *g, wimp_draw *redraw) } while (more) { if (ro_gui_current_redraw_gui->option.buffer_everything) { -// ro_gui_buffer_open(redraw); + ro_gui_buffer_open(redraw); } if (clear_background) { error = xcolourtrans_set_gcol(os_COLOUR_WHITE, @@ -438,13 +438,21 @@ void ro_gui_window_redraw(struct gui_window *g, wimp_draw *redraw) g->option.scale); } if (ro_gui_current_redraw_gui->option.buffer_everything) { -// ro_gui_buffer_close(); + ro_gui_buffer_close(); } error = xwimp_get_rectangle(redraw, &more); if (error) { - LOG(("xwimp_get_rectangle: 0x%x: %s", - error->errnum, error->errmess)); - warn_user("WimpError", error->errmess); + /* RISC OS 3.7 returns the following error is enough buffer + is claimed to cause a new dynamic area to be created. It + doesn't actually stop anything working, so we mask it out + for now until a better fix is found. + */ + if ((!ro_gui_current_redraw_gui->option.buffer_everything) || + (error->errnum != 0x286)) { + LOG(("xwimp_get_rectangle: 0x%x: %s", + error->errnum, error->errmess)); + warn_user("WimpError", error->errmess); + } ro_gui_current_redraw_gui = NULL; return; } |