summaryrefslogtreecommitdiff
path: root/riscos/thumbnail.c
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2004-02-26 17:23:02 +0000
committerJames Bursa <james@netsurf-browser.org>2004-02-26 17:23:02 +0000
commitcff65dfddf24b9a229b50d2b31665c9d4318e388 (patch)
tree5becc13e13f315ea1cdd702e089ee0c4f839f90b /riscos/thumbnail.c
parent90a5601e1a35bef1616b82463fc822243a5c58bd (diff)
downloadnetsurf-cff65dfddf24b9a229b50d2b31665c9d4318e388.tar.gz
netsurf-cff65dfddf24b9a229b50d2b31665c9d4318e388.tar.bz2
[project @ 2004-02-26 17:23:02 by bursa]
Use save area when redirecting to sprite. svn path=/import/netsurf/; revision=570
Diffstat (limited to 'riscos/thumbnail.c')
-rw-r--r--riscos/thumbnail.c35
1 files changed, 29 insertions, 6 deletions
diff --git a/riscos/thumbnail.c b/riscos/thumbnail.c
index 2f5b8d868..704ef51a8 100644
--- a/riscos/thumbnail.c
+++ b/riscos/thumbnail.c
@@ -34,17 +34,36 @@
void thumbnail_create(struct content *content, osspriteop_area *area,
osspriteop_header *sprite, int width, int height)
{
+ int size;
+ int context1, context2, context3;
float scale;
+ osspriteop_save_area *save_area;
os_error *error;
scale = (float) width / (float) content->width;
+ /* allocate save area */
+ error = xosspriteop_read_save_area_size(osspriteop_PTR, area,
+ (osspriteop_id) sprite, &size);
+ if (error) {
+ LOG(("xosspriteop_read_save_area_size failed: 0x%x: %s",
+ error->errnum, error->errmess));
+ return;
+ }
+ save_area = malloc((unsigned) size);
+ if (!save_area) {
+ LOG(("malloc failed"));
+ return;
+ }
+ save_area->a[0] = 0;
+
/* switch output to sprite */
error = xosspriteop_switch_output_to_sprite(osspriteop_PTR, area,
- (osspriteop_id) sprite, 0, 0, 0, 0, 0);
+ (osspriteop_id) sprite, save_area,
+ 0, &context1, &context2, &context3);
if (error) {
- LOG(("xosspriteop_switch_output_to_sprite failed: %s",
- error->errmess));
+ LOG(("xosspriteop_switch_output_to_sprite failed: 0x%x: %s",
+ error->errnum, error->errmess));
return;
}
@@ -58,11 +77,15 @@ void thumbnail_create(struct content *content, osspriteop_area *area,
0, 0, width * 2, height * 2, scale);
/* switch output back to screen */
- error = xosspriteop_switch_output_to_sprite(osspriteop_PTR, area,
- 0, 0, 0, 0, 0, 0);
+ error = xosspriteop_switch_output_to_sprite(osspriteop_PTR,
+ (osspriteop_area *) context1,
+ (osspriteop_id) context2,
+ (osspriteop_save_area *) context3,
+ 0, 0, 0, 0);
if (error) {
LOG(("xosspriteop_switch_output_to_sprite failed: %s",
error->errmess));
- return;
}
+
+ free(save_area);
}