Closed
Bug 525673
Opened 15 years ago
Closed 15 years ago
Not repainting properly on canvas animation
Categories
(Core :: Graphics: Canvas2D, defect)
Core
Graphics: Canvas2D
Tracking
()
RESOLVED
FIXED
Tracking | Status | |
---|---|---|
status1.9.2 | --- | beta4-fixed |
People
(Reporter: sicking, Assigned: vlad)
References
()
Details
(Keywords: regression)
Attachments
(1 file)
566 bytes,
patch
|
roc
:
review+
|
Details | Diff | Splinter Review |
(this time i'm sure the page is using canvas :) )
On the following page:
http://nutt.im/waves/2e3b7ba6414e0e3f3a727c63ca1f37d159baf22f/index.html
Sometimes rendering turds are left in the upper left hand side corner. Steps to reproduce:
1. Load url
2. Wait for darkest wave to go all the way up in the upper left corner
3. Look closely as the wave is going down.
The turds vary in size, if you watch for a while some very obvious turds should appear.
This seems to be a regressions since 3.5
Flags: blocking1.9.2?
Assignee | ||
Comment 1•15 years ago
|
||
Page is using w/h 100% on the canvas element, which it attempts to set to the innerWidth/innerHeight of the window using an inline <script> after the canvas is created. I don't think that's related.
Instead, I think that the problem is the "drawn region" computation isn't rounding out properly. I'll look at this on Monday; I think it needs to block, and the patch should be a simple one.
Assignee: nobody → vladimir
Updated•15 years ago
|
Flags: blocking1.9.2? → blocking1.9.2+
Assignee | ||
Comment 2•15 years ago
|
||
So the bug here is that this testcase is using "canvas.width = canvas.width;" at the start of its draw loop as a way to clear/reset the canvas. This is evil and horrible, but it's supposed to work (I'm going to file a separate bug to optimize this -- right now we always create a new surface, when we should be able to just clear the old one). Before my optimized invalidation changes, the next time that canvas would be drawn into, the whole thing would get invalidated and all would be good. But after, only the newly drawn portion got invalidated, so the entire canvas wasn't repainted, even though it's now fully transparent, leaving turds behind.
This patch just forces a full invalidate on every InitWithSurface call (which SetDimensions calls).
Attachment #412939 -
Flags: review?(roc)
Attachment #412939 -
Flags: review?(roc) → review+
Assignee | ||
Comment 3•15 years ago
|
||
Status: NEW → RESOLVED
Closed: 15 years ago
Resolution: --- → FIXED
Assignee | ||
Comment 4•15 years ago
|
||
status1.9.2:
--- → final-fixed
You need to log in
before you can comment on or make changes to this bug.
Description
•