Version: 1.6 SVN (using KDE KDE 3.5.4) Installed from: Debian testing/unstable Packages Compiler: gcc 4.1.2 OS: Linux When you draw on a layer while there is a layer mask, the screen will not display the image correctly (Edit Mask was disabled, of course): The first stroke is not displayed at all. The next stroke is not displayed either, but the first stroke is revealed at the regions you paint on. Similar things happen with the other tools. After you remove (or apply) the mask, the image will be displayed correctly. Additionally, when you remove the mask, edit the image and create a new mask, Krita will display the image as it was when the mask was removed. I can make screenshots, if neccessary.
I confirm, but I think it's a problem of correctly updating the projection (like a dirty rect isn't set correctly).
On Thursday 28 September 2006 02:18, Moritz Göbelbecker wrote: > When you draw on a layer while there is a layer mask, the screen will not > display the image correctly (Edit Mask was disabled, of course): All of it confirmed, I'll have a better look at what happens tonight. Thanks for reporting this :-)
SVN commit 589923 by coppens: Ok, I think I found the problem. Basically, reverting r587841 on kis_painter.cc fixes it (took me a while to realize the problem wasn't with my code, but with KisPainter, bah :-( ). The issue is that using oldRawData uses the data from _before_ starting to paint on the mask, which obviously isn't what we want. Cyrille, this was introduced by you with commit message 'better fix, with optimization this time :)', so I'm hoping this doesn't break anything (Regression testing for 2.0, we _need_ it!)? Also, I'd like to know what this was supposed to optimize (well I can guess at it it, but I'd like to know for sure :]). BUG:134770 CCMAIL:cberger@cberger.net M +1 -1 kis_painter.cc --- branches/koffice/1.6/koffice/krita/core/kis_painter.cc #589922:589923 @@ -336,7 +336,7 @@ //const Q_UINT8 *srcData = srcdev->pixel(srcX, srcY); Q_INT32 srcRowStride = srcdev->rowStride(srcX, srcY); KisHLineIteratorPixel srcIt = srcdev->createHLineIterator(srcX, srcY, columns, false); - const Q_UINT8 *srcData = srcIt.oldRawData(); + const Q_UINT8 *srcData = srcIt.rawData(); //const Q_UINT8 *selData = seldev->pixel(dstX, dstY); Q_INT32 selRowStride = seldev->rowStride(dstX, dstY);
You need to log in before you can comment on or make changes to this bug.