summaryrefslogtreecommitdiff
path: root/image/nssprite.c
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2011-10-14 17:20:33 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2011-10-14 17:20:33 +0000
commit806911dff02d65f1a1b2d0bfdd2890dc6a8d7ff7 (patch)
treed8a20b59fafdfb980c79c721d2f785fbc27bb197 /image/nssprite.c
parent9bf80e3788755a1f823802494233b4e06a3f8b87 (diff)
downloadnetsurf-806911dff02d65f1a1b2d0bfdd2890dc6a8d7ff7.tar.gz
netsurf-806911dff02d65f1a1b2d0bfdd2890dc6a8d7ff7.tar.bz2
Fix little-endian hosts
Remove additional data copy svn path=/trunk/netsurf/; revision=13046
Diffstat (limited to 'image/nssprite.c')
-rw-r--r--image/nssprite.c16
1 files changed, 8 insertions, 8 deletions
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++;
}
}