Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upFix flickering on Android #21842
Fix flickering on Android #21842
Conversation
|
r? @paulrouget |
|
I'm surprised that works. I agree that the requestRender should not be here and only be called from the compositor. But, if servo is in "animating" mode, and your PR works, that means someone is calling When Servo is animating, So, I think the proper fix is to replace But I'd like to know why this is working without |
|
I should probably verify that animating pages that don't involve webgl still work. |
|
@jdm I will r+ this if you replace I will then start investigating why set_animation_state doesn't do what I think it's supposed to do. Looks like an issue on Desktop as well. |
|
You also need to add performUpdates to Servo.java. |
|
|
…ting.
|
@bors-servo r+ |
|
|
Fix flickering on Android This is particularly noticeable in debug builds on WebGL pages, but also appears during startup when loading normal pages. requestRender() causes Android to swap buffers under the assumption that the buffer contains a fully rendered frame, but when calling it from `doFrame` there are no guarantees that Servo has finished compositing yet. This causes stale buffers to be composited instead, leading to flickering at startup when there is no content, or general jerkiness on pages using animation callbacks as previous frames replace current frames. --- - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #21796 - [x] These changes do not require tests because no android integration tests. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21842) <!-- Reviewable:end -->
|
|
|
@bors-servo retry
|
|
|
|
|
|
@bors-servo retry
|
|
|
|
|
|
@bors-servo retry
|
Fix flickering on Android This is particularly noticeable in debug builds on WebGL pages, but also appears during startup when loading normal pages. requestRender() causes Android to swap buffers under the assumption that the buffer contains a fully rendered frame, but when calling it from `doFrame` there are no guarantees that Servo has finished compositing yet. This causes stale buffers to be composited instead, leading to flickering at startup when there is no content, or general jerkiness on pages using animation callbacks as previous frames replace current frames. --- - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #21796 - [x] These changes do not require tests because no android integration tests. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21842) <!-- Reviewable:end -->
|
|
jdm commentedSep 29, 2018
•
edited by SimonSapin
This is particularly noticeable in debug builds on WebGL pages, but also appears during startup when loading normal pages. requestRender() causes Android to swap buffers under the assumption that the buffer contains a fully rendered frame, but when calling it from
doFramethere are no guarantees that Servo has finished compositing yet. This causes stale buffers to be composited instead, leading to flickering at startup when there is no content, or general jerkiness on pages using animation callbacks as previous frames replace current frames../mach build -ddoes not report any errors./mach test-tidydoes not report any errorsThis change is