From 7d1a21d758e5115b0f29a86899c75115fcc672ce Mon Sep 17 00:00:00 2001 From: Richard Wilson Date: Tue, 20 Jul 2004 22:20:58 +0000 Subject: [project @ 2004-07-20 22:20:58 by rjw] Support for complete buffering of all output. svn path=/import/netsurf/; revision=1132 --- riscos/buffer.c | 2 +- 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; } -- cgit v1.2.3