summaryrefslogtreecommitdiff
path: root/image/gif.c
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@netsurf-browser.org>2010-03-28 12:56:39 +0000
committerDaniel Silverstone <dsilvers@netsurf-browser.org>2010-03-28 12:56:39 +0000
commit270ef59a98d34fef418fb6cd27e46f3edc912948 (patch)
tree9d363b42d441640e1d2dbff3ba548a2cdf8d67a9 /image/gif.c
parent21da4f5bdf74c6654730c32dfcc1c6b3d24da4b4 (diff)
downloadnetsurf-270ef59a98d34fef418fb6cd27e46f3edc912948.tar.gz
netsurf-270ef59a98d34fef418fb6cd27e46f3edc912948.tar.bz2
Merge jmb/new-cache; r=dsilvers,rs=vince
svn path=/trunk/netsurf/; revision=10180
Diffstat (limited to 'image/gif.c')
-rw-r--r--image/gif.c37
1 files changed, 19 insertions, 18 deletions
diff --git a/image/gif.c b/image/gif.c
index 62d73f0b0..81da8bd5d 100644
--- a/image/gif.c
+++ b/image/gif.c
@@ -37,7 +37,7 @@
#include <stdlib.h>
#include <libnsgif.h>
#include "utils/config.h"
-#include "content/content.h"
+#include "content/content_protected.h"
#include "desktop/browser.h"
#include "desktop/options.h"
#include "desktop/plotters.h"
@@ -64,8 +64,7 @@ gif_bitmap_callback_vt gif_bitmap_callbacks = {
};
-bool nsgif_create(struct content *c, struct content *parent,
- const char *params[])
+bool nsgif_create(struct content *c, const struct http_parameter *params)
{
union content_msg_data msg_data;
/* Initialise our data structure */
@@ -85,26 +84,28 @@ bool nsgif_convert(struct content *c, int iwidth, int iheight)
int res;
struct gif_animation *gif;
union content_msg_data msg_data;
+ const char *data;
+ unsigned long size;
/* Get the animation */
gif = c->data.gif.gif;
+ data = content__get_source_data(c, &size);
+
/* Initialise the GIF */
do {
- res = gif_initialise(gif, c->source_size,
- (unsigned char *)c->source_data);
- if (res != GIF_OK && res != GIF_WORKING && res != GIF_INSUFFICIENT_FRAME_DATA) {
- switch (res)
- {
- case GIF_FRAME_DATA_ERROR:
- case GIF_INSUFFICIENT_DATA:
- case GIF_DATA_ERROR:
- msg_data.error = messages_get("BadGIF");
- break;
- case GIF_INSUFFICIENT_MEMORY:
- msg_data.error = messages_get(
- "NoMemory");
- break;
+ res = gif_initialise(gif, size, (unsigned char *) data);
+ if (res != GIF_OK && res != GIF_WORKING &&
+ res != GIF_INSUFFICIENT_FRAME_DATA) {
+ switch (res) {
+ case GIF_FRAME_DATA_ERROR:
+ case GIF_INSUFFICIENT_DATA:
+ case GIF_DATA_ERROR:
+ msg_data.error = messages_get("BadGIF");
+ break;
+ case GIF_INSUFFICIENT_MEMORY:
+ msg_data.error = messages_get("NoMemory");
+ break;
}
content_broadcast(c, CONTENT_MSG_ERROR, msg_data);
return false;
@@ -125,7 +126,7 @@ bool nsgif_convert(struct content *c, int iwidth, int iheight)
c->title = malloc(100);
if (c->title) {
snprintf(c->title, 100, messages_get("GIFTitle"), c->width,
- c->height, c->source_size);
+ c->height, size);
}
c->size += (gif->width * gif->height * 4) + 16 + 44 + 100;