On Mon, Apr 13, 2009 at 11:28 AM, Adam Langley <a...@chromium.org> wrote:

> It's not that don't want to deal with this right now, it's that I
> believe that the current behaviour is correct on Linux.


Yes, I grasped that.

I've reread
> your patch and email and I haven't understood any arguments about why
> there's a problem. (I get that there might be something about the
> priority of Windows WM_PAINT messages that causes an issue, but that
> obviously doesn't apply with X.)
>

The reason I had to write a patch at all is a cross-platform issue, not a
Windows-specific one.  The Windows-specific stuff in the comments is merely
an example of why an API like DidPaintRect() is useful in the first place,
but we're not adding that API in this patch, just explaining what's going
on.

The issue I'm fixing is that if we get an updated rect from the renderer
while DidPaintRect() is disabled, we don't repaint any extra damaged area in
that rect until the next time it happens to get damaged, because we don't
send anyone any notifications.  This is because we were putting in an
anti-recursion check in the "model" when instead it should have been in the
"view".

Fixing this means that any platform that (correctly) synchrously paints from
DidPaintRect() is now at risk of infinite recursion, and the new DCHECK is
designed to detect this.  It fires on Linux because Linux was doing the
right thing before; it doesn't fire on Mac and at some point Avi will fix
the Mac implementation.

To fix _this_ issue the platform-specific code needs to have its own
anti-recursion check, as Windows now has.  This is what I'm asking Linux to
write.  You write one by detecting (inside DidPaintRect()) that you're
already in a paint and not recursively painting again.

PK

--~--~---------~--~----~------------~-------~--~----~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
    http://groups.google.com/group/chromium-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to