diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2011-10-14 17:20:33 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2011-10-14 17:20:33 +0000 |
commit | 806911dff02d65f1a1b2d0bfdd2890dc6a8d7ff7 (patch) | |
tree | d8a20b59fafdfb980c79c721d2f785fbc27bb197 /image/nssprite.c | |
parent | 9bf80e3788755a1f823802494233b4e06a3f8b87 (diff) | |
download | netsurf-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.c | 16 |
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++; } } |