From ea53cbf0e863a28bd8aa6d39fbfdd66e2d764d7d Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 10 Sep 2008 13:31:47 -0400 Subject: [PATCH] Force shadow frame buffer to have cairo compatible row stride Previously it would keep the rowstride of the scanout buffer, which isn't right. The entire point of the shadow buffer is that it has a known at compile time constant memory layout. (This change fixes password prompts on some hardware) --- src/libply/ply-frame-buffer.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/libply/ply-frame-buffer.c b/src/libply/ply-frame-buffer.c index be31b015..9cd6111c 100644 --- a/src/libply/ply-frame-buffer.c +++ b/src/libply/ply-frame-buffer.c @@ -158,7 +158,7 @@ flush_generic (ply_frame_buffer_t *buffer) uint32_t pixel_value; uint_fast32_t device_pixel_value; - pixel_value = buffer->shadow_buffer[row * buffer->row_stride + column]; + pixel_value = buffer->shadow_buffer[row * buffer->area.width + column]; device_pixel_value = ply_frame_buffer_pixel_value_to_device_pixel_value (buffer, @@ -187,7 +187,7 @@ flush_xrgb32 (ply_frame_buffer_t *buffer) y2 = y1 + buffer->area_to_flush.height; dst = &buffer->map_address[(y1 * buffer->row_stride + x1) * 4]; - src = (char *) &buffer->shadow_buffer[y1 * buffer->row_stride + x1]; + src = (char *) &buffer->shadow_buffer[y1 * buffer->area.width + x1]; if (buffer->area_to_flush.width == buffer->row_stride) { @@ -199,7 +199,7 @@ flush_xrgb32 (ply_frame_buffer_t *buffer) { memcpy (dst, src, buffer->area_to_flush.width * 4); dst += buffer->row_stride * 4; - src += buffer->row_stride * 4; + src += buffer->area.width * 4; } } @@ -428,12 +428,12 @@ ply_frame_buffer_blend_value_at_pixel (ply_frame_buffer_t *buffer, if ((pixel_value >> 24) != 0xff) { - old_pixel_value = buffer->shadow_buffer[y * buffer->row_stride + x]; + old_pixel_value = buffer->shadow_buffer[y * buffer->area.width + x]; pixel_value = blend_two_pixel_values (pixel_value, old_pixel_value); } - buffer->shadow_buffer[y * buffer->row_stride + x] = pixel_value; + buffer->shadow_buffer[y * buffer->area.width + x] = pixel_value; } static void @@ -581,8 +581,8 @@ ply_frame_buffer_open (ply_frame_buffer_t *buffer) } buffer->shadow_buffer = - realloc (buffer->shadow_buffer, 4 * buffer->row_stride * buffer->area.height); - memset (buffer->shadow_buffer, 0, 4 * buffer->row_stride * buffer->area.height); + realloc (buffer->shadow_buffer, 4 * buffer->area.width * buffer->area.height); + memset (buffer->shadow_buffer, 0, 4 * buffer->area.width * buffer->area.height); ply_frame_buffer_fill_with_color (buffer, NULL, 0.0, 0.0, 0.0, 1.0); is_open = true; @@ -804,7 +804,7 @@ ply_frame_buffer_fill_with_gradient (ply_frame_buffer_t *buffer, (((green + NOISE ()) & COLOR_MASK) >> GREEN_SHIFT) | (((blue + NOISE ()) & COLOR_MASK) >> BLUE_SHIFT); - buffer->shadow_buffer[y * buffer->row_stride + x] = pixel; + buffer->shadow_buffer[y * buffer->area.width + x] = pixel; } } -- 2.47.3