graphical glitches with CSS transition and transform

RESOLVED FIXED

Status

()

Core
Layout: View Rendering
RESOLVED FIXED
5 years ago
5 years ago

People

(Reporter: Alice0775 White, Assigned: mattwoodrow)

Tracking

Trunk
x86
Windows 7
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

(URL)

Attachments

(1 attachment, 1 obsolete attachment)

(Reporter)

Description

5 years ago
This is spin off from Bug 730166
See https://bugzilla.mozilla.org/show_bug.cgi?id=730166#c8

text flickers when resize window
and  click 3D then flickers

#1 Regression window(m-c)
Works:
http://hg.mozilla.org/mozilla-central/rev/c3a50afc2243
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0a1) Gecko/20111007 Firefox/10.0a1 ID:20111007031227
Not render text:
http://hg.mozilla.org/mozilla-central/rev/bd1411e362fb
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0a1) Gecko/20111007 Firefox/10.0a1 ID:20111007034151
Pushlog:
http://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=c3a50afc2243&tochange=bd1411e362fb


#1 Regression window(m-i)
Works:
http://hg.mozilla.org/integration/mozilla-inbound/rev/baa28d3f6296
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0a1) Gecko/20111006 Firefox/10.0a1 ID:20111006135449
Not render text:
http://hg.mozilla.org/integration/mozilla-inbound/rev/94f2fa9f97b8
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0a1) Gecko/20111006 Firefox/10.0a1 ID:20111006153652
Pushlog:
http://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=baa28d3f6296&tochange=94f2fa9f97b8



#2 Regression window(m-c)
Not render text:
http://hg.mozilla.org/mozilla-central/rev/eb84780783ed
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0a1) Gecko/20111114 Firefox/11.0a1 ID:20111114081649
Render text but flickers:
http://hg.mozilla.org/mozilla-central/rev/f694183357ec
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0a1) Gecko/20111114 Firefox/11.0a1 ID:20111114190451
Pushlog:
http://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=eb84780783ed&tochange=f694183357ec


#2 Regression window(m-i)
Not render text:
http://hg.mozilla.org/integration/mozilla-inbound/rev/6ae6d3beeaf4
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0a1) Gecko/20111113 Firefox/11.0a1 ID:20111113203057
Render text but flickers:
http://hg.mozilla.org/integration/mozilla-inbound/rev/33547cc48103
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0a1) Gecko/20111113 Firefox/11.0a1 ID:20111113204348
Pushlog:
http://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=6ae6d3beeaf4&tochange=33547cc48103
It's all Matt I guess :-)
Assignee: nobody → matt.woodrow
(Assignee)

Comment 2

5 years ago
Created attachment 619465 [details] [diff] [review]
Don't pass the cache overflow values since FinishAndStoreOverflow modifies them

This fixes assertion spam with the testcase, and improves the flickering slightly.

Some of the words still flicker, looks to be invalid overflow rect calculation (no display items exist for them).
Attachment #619465 - Flags: review?(roc)
(Assignee)

Comment 3

5 years ago
Remainder of the flicker is fixed by the patch in bug 722603.
Just spent a bunch of time with CSS 3D stuff on the weekend to create this: http://secretrobotron.github.com/crunch/

On nightly (OSX 10.7.3), flickering is still very present. Same issue?
(Assignee)

Comment 5

5 years ago
Yes, that's fixed by this patch.
Comment on attachment 619465 [details] [diff] [review]
Don't pass the cache overflow values since FinishAndStoreOverflow modifies them

Review of attachment 619465 [details] [diff] [review]:
-----------------------------------------------------------------

Add an assert to FinishAndStoreOverflow that its overflow areas parameter is not aliased to the property.

::: layout/generic/nsFrame.cpp
@@ +6693,5 @@
> +      Properties().Set(nsIFrame::InitialOverflowProperty(), initial);
> +    }
> +    *initial = aOverflowAreas;
> +  } else {
> +    Properties().Delete(nsIFrame::InitialOverflowProperty());

doing this Delete all the time is unfortunate overhead.

Can we make InitialOverflowProperty only applicable if Preserves3D() || HasPerspective(), and ensure a reframe if those change?

@@ +6962,3 @@
>      } else {
> +      overflow.SetAllTo(bounds);
> +    }

A helper function that gets InitialOverflowProperty and returns either that or the result of UnionAllWidth would be nice here.
(Assignee)

Comment 7

5 years ago
(In reply to Robert O'Callahan (:roc) (Mozilla Corporation) from comment #6)

> doing this Delete all the time is unfortunate overhead.
> 
> Can we make InitialOverflowProperty only applicable if Preserves3D() ||
> HasPerspective(), and ensure a reframe if those change?

I'm not sure how to do this, since both of these properties are checking something on the style context parent. I *think* we can get away with just leaving the property there if it's not needed and wait until the frame is destroyed.
OK.
(Assignee)

Comment 9

5 years ago
Created attachment 635159 [details] [diff] [review]
Don't pass the cache overflow values since FinishAndStoreOverflow modifies them v2
Attachment #619465 - Attachment is obsolete: true
Attachment #619465 - Flags: review?(roc)
Attachment #635159 - Flags: review?(roc)
Attachment #635159 - Flags: review?(roc) → review+
(Assignee)

Comment 10

5 years ago
Looks like I forgot to land this, and fixed the same issue in bug 806256.
Status: NEW → RESOLVED
Last Resolved: 5 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.