rendered paste bodydiff --git a/src/itdb_artwork.c b/src/itdb_artwork.cindex dd6c4ca..9a73188 100644--- a/src/itdb_artwork.c+++ b/src/itdb_artwork.c@@ -333,16 +333,30 @@ static guchar * unpack_RGB_555 (guint16 *pixels, guint bytes_len, guint byte_order) { guchar *result;- guint i;+ guint x;+ guint y;+ guint rowstride;+ guint alignment = 16;+ guint height = 110;+ guint width = 110; g_return_val_if_fail (bytes_len < 2*(G_MAXUINT/3), NULL); result = g_malloc ((bytes_len/2) * 3); - for (i = 0; i < bytes_len/2; i++) {+ rowstride = width*2;+ if (alignment) {+ rowstride = (rowstride + alignment - 1)/alignment * alignment;+ }+ rowstride /= 2; /* FIXME: rowstride in pixel size unit, not bytes */++ for (y = 0; y < height; y++) {+ for (x = 0; x < width; x++) { guint16 cur_pixel;+ guint i; /* FIXME: endianness */- cur_pixel = get_gint16 (pixels[i], byte_order);+ cur_pixel = get_gint16 (pixels[y*rowstride + x], byte_order);+ i = y * width + x; /* Unpack pixels */ result[3*i] = (cur_pixel & RED_MASK_555) >> RED_SHIFT_555; result[3*i+1] = (cur_pixel & GREEN_MASK_555) >> GREEN_SHIFT_555;@@ -352,6 +366,7 @@ unpack_RGB_555 (guint16 *pixels, guint bytes_len, guint byte_order) result[3*i] <<= (8 - RED_BITS_555); result[3*i+1] <<= (8 - GREEN_BITS_555); result[3*i+2] <<= (8 - BLUE_BITS_555);+ } } return result;