commit e3208339cf8c4ae782786c5482b32af1e54bd1b7
Author: Nikias Bassen <nik...@gmx.li>
Date:   Wed Aug 25 04:20:13 2010 +0200

    take into account row alignment when writing artwork
    
    This fixes (at least) artwork format 3106 on the iPhone 4G (110x110
    thumbnails used in the album list)

 src/itdb_artwork.c  |    8 +++++++-
 src/ithumb-writer.c |   13 +++++++++++++
 2 files changed, 20 insertions(+), 1 deletions(-)
---
diff --git a/src/itdb_artwork.c b/src/itdb_artwork.c
index dd6c4ca..977d5f5 100644
--- a/src/itdb_artwork.c
+++ b/src/itdb_artwork.c
@@ -819,6 +819,7 @@ gpointer itdb_thumb_ipod_item_to_pixbuf (Itdb_Device 
*device,
        gint pad_y = item->vertical_padding;
        gint width = item->width;
        gint height = item->height;
+       guint rowstride;
         const Itdb_ArtworkFormat *img_info = item->format;
         guchar *pixels;
 
@@ -835,12 +836,17 @@ gpointer itdb_thumb_ipod_item_to_pixbuf (Itdb_Device 
*device,
            return NULL;
        }
 
+       if ((img_info->row_bytes_alignment > 0) && ((img_info->width % 
img_info->row_bytes_alignment) != 0)) {
+           rowstride = (img_info->width + (img_info->row_bytes_alignment - 
(img_info->width % img_info->row_bytes_alignment)))*3;
+       } else {
+           rowstride = img_info->width*3;
+       }
        pixbuf_full =
            gdk_pixbuf_new_from_data (pixels,
                                      GDK_COLORSPACE_RGB,
                                      FALSE, 8,
                                      img_info->width, img_info->height,
-                                     img_info->width*3,
+                                     rowstride,
                                      (GdkPixbufDestroyNotify)g_free,
                                      NULL);
 
diff --git a/src/ithumb-writer.c b/src/ithumb-writer.c
index 46087e8..fc059df 100644
--- a/src/ithumb-writer.c
+++ b/src/ithumb-writer.c
@@ -117,6 +117,10 @@ pack_RGB_565 (GdkPixbuf *pixbuf, const Itdb_ArtworkFormat 
*img_info,
             dest_width = img_info->width;
         }
 
+        if ((img_info->row_bytes_alignment > 0) && ((img_info->width % 
img_info->row_bytes_alignment) != 0)) {
+            dest_width = img_info->width + (img_info->row_bytes_alignment - 
(img_info->width % img_info->row_bytes_alignment));
+        }
+
        /* Make sure thumb size calculation won't overflow */
        g_return_val_if_fail (dest_width != 0, NULL);
        g_return_val_if_fail (dest_width < G_MAXUINT/2, NULL);
@@ -225,6 +229,10 @@ pack_RGB_555 (GdkPixbuf *pixbuf, const Itdb_ArtworkFormat 
*img_info,
             dest_width = img_info->width;
         }
 
+        if ((img_info->row_bytes_alignment > 0) && ((img_info->width % 
img_info->row_bytes_alignment) != 0)) {
+            dest_width = img_info->width + (img_info->row_bytes_alignment - 
(img_info->width % img_info->row_bytes_alignment));
+        }
+
        /* Make sure thumb size calculation won't overflow */
        g_return_val_if_fail (dest_width != 0, NULL);
        g_return_val_if_fail (dest_width < G_MAXUINT/2, NULL);
@@ -437,6 +445,11 @@ pack_rec_RGB_555 (GdkPixbuf *pixbuf, const 
Itdb_ArtworkFormat *img_info,
         } else {
             row_stride = img_info->width;
         }
+
+        if ((img_info->row_bytes_alignment > 0) && ((img_info->width % 
img_info->row_bytes_alignment) != 0)) {
+            row_stride = img_info->width + (img_info->row_bytes_alignment - 
(img_info->width % img_info->row_bytes_alignment));
+        }
+
        deranged_pixels = derange_pixels (NULL, pixels,
                                          img_info->width, img_info->height,
                                          row_stride);

------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:

Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
_______________________________________________
gtkpod-cvs2 mailing list
gtkpod-cvs2@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2

Reply via email to