Closed Bug 1216248 Opened 5 years ago Closed 5 years ago

Events over caption buttons do not cause repaint

Categories

(Core :: Graphics: Layers, defect)

Unspecified
macOS
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla45
Tracking Status
firefox45 --- fixed
b2g-v2.5 --- fixed

People

(Reporter: Felipe, Unassigned)

References

Details

(Keywords: regression)

Attachments

(1 file)

On OSX, events over the caption buttons are not triggering a repaint, and the buttons remain in their unhovered state. The mouse movement is a bit inconsistent and sometimes you can easily see the bug, sometimes not, but there's one condition that makes it easier to see.

STR:
- It is easier to see this in a clean profile with a window with only a single tab where there will be less other things causing refreshes
- Make sure that focus is not in a text field as that will blink the text caret
- Move the mouse over the green button (Maximize/Fullscreen)
- Hold down the Alt/Option key, which in OSX will change the button between the "Maximize" and the "Go fullscreen" modes

The button state should update immediately, but it doesn't. You have to move the mouse out of it (e.g. to the yellow button) while holding Option to see it updating.

If there's a load spinner in one of the tabs the button will update immediately. Also, if you focus the URL bar, you can see that the button will update in sync with the caret blinking.


Using mozregression, I got: https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=e7e69cc8c07b&tochange=9b902b7669ae
It looks like turning layers.acceleration.draw-fps on makes this bug disappear, and that's why I never saw it. Oh dear.
Component: Audio/Video → Graphics: Layers
nsChildView calls ShadowLayerForwarder::WindowOverlayChanged, which causes that to go ahead with sending a transaction without any ops to the compositor, but it doesn't actually tell the compositor that the window overlay changed.

Do we need a new CompositableOperation? Or should we call an IPDL method on the compositor outside of the transaction?
I think adding a new CompositableOp makes the most sense for this.
Bug 1216248 - Recomposite when the window overlay changes. r?mattwoodrow
Attachment #8676291 - Flags: review?(matt.woodrow)
Attachment #8676291 - Flags: review?(matt.woodrow) → review+
Comment on attachment 8676291 [details]
MozReview Request: Bug 1216248 - Recomposite when the window overlay changes. r?mattwoodrow

https://reviewboard.mozilla.org/r/22643/#review20191
https://hg.mozilla.org/mozilla-central/rev/58593839ebce
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla45
You need to log in before you can comment on or make changes to this bug.