summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Wilson <rjw@netsurf-browser.org>2004-07-20 22:20:58 +0000
committerRichard Wilson <rjw@netsurf-browser.org>2004-07-20 22:20:58 +0000
commit7d1a21d758e5115b0f29a86899c75115fcc672ce (patch)
tree9230798a6e6059088655b3017d155b6d423bdd30
parente459eb604e395e964a82a631194c44a32a813ee6 (diff)
downloadnetsurf-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
-rw-r--r--riscos/buffer.c2
-rw-r--r--riscos/window.c18
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;
}