Bug 39139 - Pages that use hardware acceleration don't repaint after waking computer from sleep
: Pages that use hardware acceleration don't repaint after waking computer from...
Status: RESOLVED FIXED
: WebKit
Layout and Rendering
: 528+ (Nightly build)
: PC Windows XP
: P2 Normal
Assigned To:
: http://webkit.org/blog-files/3d-trans...
: InRadar, PlatformOnly
: 39159
:
  Show dependency treegraph
 
Reported: 2010-05-14 14:51 PST by
Modified: 2010-05-17 08:06 PST (History)


Attachments
Periodically try to reset a lost IDirect3DDevice9 until we succeed (13.10 KB, patch)
2010-05-15 06:18 PST, Adam Roben (:aroben)
sullivan: review+
Review Patch | Details | Formatted Diff | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2010-05-14 14:51:38 PST
To reproduce:

1. Go to <http://webkit.org/blog-files/3d-transforms/poster-circle.html>
2. Put your computer to sleep
3. Wake the computer back up

The page never repaints (until you navigate somewhere else, or reload).

The problem is that WKCACFLayerRenderer doesn't respond to lost devices correctly. See <http://msdn.microsoft.com/en-us/library/bb174714(v=VS.85).aspx>.
------- Comment #1 From 2010-05-14 14:52:02 PST -------
<rdar://problem/7986906>
------- Comment #2 From 2010-05-15 06:18:15 PST -------
Created an attachment (id=56151) [details]
Periodically try to reset a lost IDirect3DDevice9 until we succeed
------- Comment #3 From 2010-05-15 07:34:25 PST -------
(From update of attachment 56151 [details])
> -    resetDevice();
> +    resetDevice(ChangedWindowSize);

Is it worth asserting that this call returns true?

r+
------- Comment #4 From 2010-05-16 00:37:26 PST -------
Attachment 56151 [details] was posted by a committer and has review+, assigning to Adam Roben for commit.
------- Comment #5 From 2010-05-17 07:58:00 PST -------
(In reply to comment #3)
> (From update of attachment 56151 [details] [details])
> > -    resetDevice();
> > +    resetDevice(ChangedWindowSize);
> 
> Is it worth asserting that this call returns true?

No. Resetting might fail at this point (e.g., if the device became lost sometime since the last time we rendered), so we can't assert that it doesn't. But we don't need to worry here whether it failed or not; if it did fail, we'll try to reset again before we next render. I'll add a comment about this.

Thanks for the review!
------- Comment #6 From 2010-05-17 08:06:16 PST -------
Committed r59610: <http://trac.webkit.org/changeset/59610>