Filter's changeRect() and merging problems

Boudewijn Rempt boud at valdyas.org
Mon Aug 24 14:56:43 CEST 2009


On Mon, 24 Aug 2009, Dmitry Kazakov wrote:

> Heh! =) KisLayer::setDirty is called from
> KisTopDownUpdateProjection::setDirty() too. Just right from the
> context of KisProjection. It causes a recursion. It works, but it
> emits a signal for every layer updated. =) I've made a patch for this
> mentioned above. Can i commit it?

OMG -- what a silly error. Yes, please!

> > * The gui calls setDirty on the layer
> > * the layer calls setDirty on the image
> > * the image sends an async signal to KisProjection that a certain rect of a certain layer is dirty
> > * KisProjection starts the recomposition, chunked to 512x512 pixel recs or something like that
> > * For every chunk KisProjection creates a QImage of that chunk of the projection
> > * emit an async signal with that QImage to KisCanvas
> > * let KisCanvas use that: no calls from KisCanvas to KisImage's projection to read things.
> 
> but, the projection thread should _stop_ his work while the ui-thread
> _is reading_ from a projection paint device.
> And we can't use QImage:
> 1) KisImagePyramid uses usual paint devices for storage a pyramid. You
> said we should have tiled cache.
> 2) Using QImage for transactions is yet another copy operation. I
> don't thing it's good.

Hm, yes, you are quite right.

Boudewijn



More information about the kimageshop mailing list