From 7b09aefe6a88e330bc7bffe7be14b696f7fcb196 Mon Sep 17 00:00:00 2001 From: David Capello Date: Sun, 15 Dec 2013 10:31:25 -0300 Subject: [PATCH] Fix bug mixing image buffers in ExpandCelCanvas for new cels Bug introduced from commit 48864b440b82a710076a8af66d98c95343407e40 --- src/app/util/expand_cel_canvas.cpp | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/app/util/expand_cel_canvas.cpp b/src/app/util/expand_cel_canvas.cpp index afe2de09d..26c10fc20 100644 --- a/src/app/util/expand_cel_canvas.cpp +++ b/src/app/util/expand_cel_canvas.cpp @@ -42,23 +42,20 @@ namespace { -static raster::ImageBufferPtr cel_buffer; static raster::ImageBufferPtr src_buffer; static raster::ImageBufferPtr dst_buffer; static void destroy_buffers() { - cel_buffer.reset(NULL); src_buffer.reset(NULL); dst_buffer.reset(NULL); } static void create_buffers() { - if (!cel_buffer) { + if (!src_buffer) { app::App::instance()->Exit.connect(&destroy_buffers); - cel_buffer.reset(new raster::ImageBuffer(1)); src_buffer.reset(new raster::ImageBuffer(1)); dst_buffer.reset(new raster::ImageBuffer(1)); } @@ -93,7 +90,7 @@ ExpandCelCanvas::ExpandCelCanvas(Context* context, TiledMode tiledMode, UndoTran if (m_cel == NULL) { // Create the image m_celImage = Image::create(m_sprite->getPixelFormat(), m_sprite->getWidth(), - m_sprite->getHeight(), cel_buffer); + m_sprite->getHeight()); clear_image(m_celImage, m_sprite->getTransparentColor()); // Create the cel @@ -124,13 +121,12 @@ ExpandCelCanvas::ExpandCelCanvas(Context* context, TiledMode tiledMode, UndoTran // create two copies of the image region which we'll modify with the tool m_srcImage = crop_image(m_celImage, - x1-m_cel->getX(), - y1-m_cel->getY(), x2-x1, y2-y1, - m_sprite->getTransparentColor(), - src_buffer); + x1-m_cel->getX(), + y1-m_cel->getY(), x2-x1, y2-y1, + m_sprite->getTransparentColor(), + src_buffer); - m_dstImage = Image::createCopy(m_srcImage, - dst_buffer); + m_dstImage = Image::createCopy(m_srcImage, dst_buffer); // We have to adjust the cel position to match the m_dstImage // position (the new m_dstImage will be used in RenderEngine to