diff options
author | Richard Wilson <rjw@netsurf-browser.org> | 2004-11-10 19:51:32 +0000 |
---|---|---|
committer | Richard Wilson <rjw@netsurf-browser.org> | 2004-11-10 19:51:32 +0000 |
commit | 542f783b189fe7d2139a1e5e8c37f5b0f264805b (patch) | |
tree | 2109fe3507d48c28b157f67f59a3516423ced2ae /image | |
parent | 061603094af5ac6cd008a11cb10d30fdc549dd55 (diff) | |
download | netsurf-542f783b189fe7d2139a1e5e8c37f5b0f264805b.tar.gz netsurf-542f783b189fe7d2139a1e5e8c37f5b0f264805b.tar.bz2 |
[project @ 2004-11-10 19:51:31 by rjw]
Further GIF optimisation to reduce flicker.
svn path=/import/netsurf/; revision=1356
Diffstat (limited to 'image')
-rw-r--r-- | image/bitmap.h | 1 | ||||
-rw-r--r-- | image/gif.c | 7 |
2 files changed, 7 insertions, 1 deletions
diff --git a/image/bitmap.h b/image/bitmap.h index 058e03a46..484e64599 100644 --- a/image/bitmap.h +++ b/image/bitmap.h @@ -28,6 +28,7 @@ struct bitmap; struct bitmap *bitmap_create(int width, int height);
void bitmap_set_opaque(struct bitmap *bitmap, bool opaque);
bool bitmap_test_opaque(struct bitmap *bitmap);
+bool bitmap_get_opaque(struct bitmap *bitmap);
char *bitmap_get_buffer(struct bitmap *bitmap);
size_t bitmap_get_rowstride(struct bitmap *bitmap);
void bitmap_destroy(struct bitmap *bitmap);
diff --git a/image/gif.c b/image/gif.c index 697ef408f..8fabf5033 100644 --- a/image/gif.c +++ b/image/gif.c @@ -220,7 +220,12 @@ void nsgif_animate(void *p) data.redraw.full_redraw = c->data.gif.gif->frames[c->data.gif.current_frame - 1].redraw_required; } else { - data.redraw.full_redraw = true; + /* do advanced check */ + data.redraw.full_redraw = !((c->data.gif.current_frame == 0) && + (bitmap_get_opaque(c->data.gif.gif->frame_image)) && + (data.redraw.x == 0) && (data.redraw.y == 0) && + (data.redraw.width = c->data.gif.gif->width) && + (data.redraw.height = c->data.gif.gif->height)); } /* other data */ |