From 806911dff02d65f1a1b2d0bfdd2890dc6a8d7ff7 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Fri, 14 Oct 2011 17:20:33 +0000 Subject: Fix little-endian hosts Remove additional data copy svn path=/trunk/netsurf/; revision=13046 --- image/nssprite.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'image') diff --git a/image/nssprite.c b/image/nssprite.c index 6a1f116b4..5a0a36f34 100644 --- a/image/nssprite.c +++ b/image/nssprite.c @@ -119,26 +119,26 @@ static bool nssprite_convert(struct content *c) content_broadcast(c, CONTENT_MSG_ERROR, msg_data); return false; } - unsigned char* imagebuf = bitmap_get_buffer(nssprite->bitmap); + uint32_t* imagebuf = (uint32_t *)bitmap_get_buffer(nssprite->bitmap); if (!imagebuf) { msg_data.error = messages_get("NoMemory"); content_broadcast(c, CONTENT_MSG_ERROR, msg_data); return false; } unsigned int row_width = bitmap_get_rowstride(nssprite->bitmap); - - memcpy(imagebuf, sprite->image, row_width * sprite->height); // TODO: avoid copying entire image buffer + unsigned char *spritebuf = (unsigned char *)sprite->image; /* reverse byte order of each word */ for (uint32_t y = 0; y < sprite->height; y++) { for (uint32_t x = 0; x < sprite->width; x++) { int offset = 4 * (y * sprite->width + x); - uint32_t rgba = 0; - rgba |= imagebuf[offset] << 24; - rgba |= imagebuf[offset + 1] << 16; - rgba |= imagebuf[offset + 2] << 8; - rgba |= imagebuf[offset + 3]; + *imagebuf = (spritebuf[offset] << 24) | + (spritebuf[offset + 1] << 16) | + (spritebuf[offset + 2] << 8) | + (spritebuf[offset + 3]); + + imagebuf++; } } -- cgit v1.2.3