From a34941c17f57caeb448ba46e0a4b91a9671da7b8 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Wed, 2 Jan 2013 15:01:27 +0000 Subject: [PATCH] fix mask write line stuff. SVN revision: 81998 --- ChangeLog | 5 +++++ NEWS | 1 + src/modules/evas/engines/software_x11/evas_xcb_outbuf.c | 3 ++- src/modules/evas/engines/software_x11/evas_xlib_outbuf.c | 2 +- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 65f80c5dd5..9b0312f092 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2013-01-02 Carsten Haitzler (The Rasterman) + + * Fixed evas_software_xlib_x_write_mask_line() issue - it was + finding a segment in the shm cache of the wrong size for masks! + 2013-01-02 Cedric Bail * Use Eina_File for evas webp, gif, tiff and eet loader. diff --git a/NEWS b/NEWS index f0b0e1db07..2b5a3a855e 100644 --- a/NEWS +++ b/NEWS @@ -96,3 +96,4 @@ Fixes: * Fix evas_object_image_is_inside() * eio functions no longer crash when passed NULL and throw errors accordingly * Fix eina_xattr_value_ls() and eina_xattr_value_fd_ls() + * Fix mask write lines to not choose too small segments diff --git a/src/modules/evas/engines/software_x11/evas_xcb_outbuf.c b/src/modules/evas/engines/software_x11/evas_xcb_outbuf.c index e8211836b1..85f48e92ed 100644 --- a/src/modules/evas/engines/software_x11/evas_xcb_outbuf.c +++ b/src/modules/evas/engines/software_x11/evas_xcb_outbuf.c @@ -1118,13 +1118,14 @@ _find_xcbob(xcb_connection_t *conn, xcb_visualtype_t *vis, int depth, int w, int return evas_software_xcb_output_buffer_new(conn, vis, depth, w, h, shm, data); - lbytes = (((w + 63) / 64) * 4); if (depth > 1) { bpp = (depth / 8); if (bpp == 3) bpp = 4; lbytes = ((((w * bpp) + 3) / 4) * 4); } + else + lbytes = (((w + 63) / 64) * 4); sz = (lbytes * h); SHMPOOL_LOCK(); diff --git a/src/modules/evas/engines/software_x11/evas_xlib_outbuf.c b/src/modules/evas/engines/software_x11/evas_xlib_outbuf.c index 866457e1ee..5ef22e5459 100644 --- a/src/modules/evas/engines/software_x11/evas_xlib_outbuf.c +++ b/src/modules/evas/engines/software_x11/evas_xlib_outbuf.c @@ -52,7 +52,7 @@ _find_xob(Display *d, Visual *v, int depth, int w, int h, int shm, void *data) lbytes = (((w * bpp) + 3) / 4) * 4; } else - lbytes = ((w + 63) / 64) * 4; + lbytes = ((w + 63) / 64) * 8; sz = lbytes * h; SHMPOOL_LOCK(); EINA_LIST_FOREACH(shmpool, l, xob2)