diff --git a/ChangeLog b/ChangeLog index 41bd29022b..870cd11882 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-12-18 Sven Neumann + + * app/display/gimpdisplayshell-render.c + (render_image_tile_fault_nearest): added code for 1 and 3 bytes + per pixel. Fixes bug #504115. + 2007-12-16 Bill Skaggs * plug-ins/common/edge.c: reverted to state pre-12/16. diff --git a/app/display/gimpdisplayshell-render.c b/app/display/gimpdisplayshell-render.c index 8e98955c58..a0a4ba8f8a 100644 --- a/app/display/gimpdisplayshell-render.c +++ b/app/display/gimpdisplayshell-render.c @@ -392,14 +392,14 @@ static void gimp_display_shell_render_mask (GimpDisplayShell *shell, RenderInfo *info) { - gint y, ye; - gint x, xe; + gint y, ye; + gint x, xe; y = info->y; ye = info->y + info->h; xe = info->x + info->w; - info->dy = info->dy_start; + info->dy = info->dy_start; info->src = render_image_tile_fault (info); while (TRUE) @@ -778,7 +778,7 @@ box_filter_premult (const guint left_weight, } } - + /* fast paths */ static const guchar * render_image_tile_fault_one_row (RenderInfo *info); static const guchar * render_image_tile_fault_nearest (RenderInfo *info); @@ -1584,9 +1584,11 @@ render_image_tile_fault_nearest (RenderInfo *info) { case 4: *d++ = *s++; + case 3: *d++ = *s++; case 2: *d++ = *s++; + case 1: *d++ = *s++; } } @@ -1604,6 +1606,12 @@ render_image_tile_fault_nearest (RenderInfo *info) s += 4; break; + case 3: + *d++ = *s++; + *d++ = *s++; + *d++ = *s++; + break; + case 2: d[0] = (s[0] * (s[1] + 1)) >> 8; d[1] = s[1]; @@ -1611,6 +1619,10 @@ render_image_tile_fault_nearest (RenderInfo *info) d += 2; s += 2; break; + + case 1: + *d++ = *s++; + break; } }