Re: win32: Bug in partial redrawing triggered by InvalidateRect
Matthias Bolte <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <CABBrozg6f7c1_xLOZQd0H_1sodxBn4tNWa3_1J+YYtkj=hnaYw@mail.gmail.com> |
2011/7/26 Andrea Canciani <[email protected]>: > On Mon, Jul 25, 2011 at 1:14 PM, Matthias Bolte > <[email protected]> wrote: >> I came across this problem while updating from cairo 1.8 to 1.10. >> >> In 1.8 Triggering partial redraws via InvalidateRect works as >> expected. In 1.10 it doesn't. The size of the rect is correct but the >> offset is lost and the top-left corner of the window is redrawn with >> the wrong content as the content comes from the correct offset. >> >> I tracked the problem down to this commit >> >> b713510f213d0a83cb0575d6870416a0f13786c9 >> surface-fallback: Convert to composite rectangles >> >> http://cgit.freedesktop.org/cairo/commit/?id=b713510f213d0a83cb0575d6870416a0f13786c9 >> >> But I could not understand why this commit breaks partial redraws. >> >> Today I found a mail on the mailing list about this problem >> >> http://lists.cairographics.org/archives/cairo/2011-March/021800.html >> >> that refers to a bug report from 2010 about this problem >> >> https://bugs.freedesktop.org/show_bug.cgi?id=28541 >> >> that has a working patch attached >> >> http://sprunge.us/KOZU >> >> The offending commit seems to have broken the handling of surfaces >> that don't have their origin in (0,0) as it switched to the >> _cairo_composite_rectangles_init* functions that assume that the >> surface has it's origin in (0,0). >> >> The problem seems to be that a BeginPaint call (as a reaction to a >> WM_PAINT message triggered by a InvalidateRect) can return a DC with >> an origin equal to the offset given in the InvalidateRect. So there is >> a DC with an origin different from (0,0). >> >> The referenced patch makes _cairo_composite_rectangles_init* honor >> this offset and fixes the problem. >> >> Now I wonder why this patch from October 2010 has neither been >> reviewed nor been applied yet. This mail is an attempt to finally get >> this problem fixed. > > I just updated the bug with some information. > I thought that a discussion about this patch happened on > the mailing lists, but right now I'm unable to find it > (Probably it was actually on IRC) > > Sorry for not having updated the bugreport with the nack-review immediately > > Andrea Thanks for updating the bugreport and thanks to Chris Wilson for fixing the problem with commit 91faf9c1cf79f44b48c0f14d2d551a68bf38b5a5 composite: Pass unbounded extents to initialisation -- Matthias Bolte http://photron.blogspot.com -- cairo mailing list [email protected] http://lists.cairographics.org/mailman/listinfo/cairo