Ensure rotation cases are properly handled in webrender
Categories
(Core :: Graphics: WebRender, enhancement, P2)
Tracking
()
Tracking | Status | |
---|---|---|
firefox56 | --- | unaffected |
firefox57 | --- | unaffected |
People
(Reporter: kats, Unassigned)
References
(Blocks 1 open bug)
Details
(Whiteboard: [wr-reserve] [gfx-noted][retest])
Updated•7 years ago
|
Comment hidden (obsolete) |
Comment hidden (obsolete) |
Updated•7 years ago
|
Updated•7 years ago
|
Updated•7 years ago
|
Updated•7 years ago
|
Updated•7 years ago
|
Updated•6 years ago
|
Reporter | ||
Comment 3•6 years ago
|
||
Updated•6 years ago
|
Updated•6 years ago
|
Comment 4•6 years ago
|
||
Reporter | ||
Comment 5•6 years ago
|
||
Reporter | ||
Comment 6•6 years ago
|
||
Most likely there's nothing that needs doing here, but we should verify.
Comment 7•6 years ago
•
|
||
On android, webrender does not need to handle rotation, since an android application's rotation is handled by android os, though webrender needs to handle size change. webrender needs to handle rotation only when os/platform does not handle application's rotation.
On android, dynamic screen rotation is detected by MyOrientationListener(extends WindowOrientationListener). WindowOrientationListener receives notifications from the SensorManager when the orientation of the device has changed.
http://androidxref.com/9.0.0_r3/xref/frameworks/base/services/core/java/com/android/server/policy/WindowOrientationListener.java#49
http://androidxref.com/9.0.0_r3/xref/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java#1047
Then rotation update is notified to DisplayContent like the following.
MyOrientationListener.onProposedRotationChanged()
->PhoneWindowManager.updateRotation()
->WindowManagerService.updateRotation()
->DisplayContent.updateRotationUnchecked()
Then SurfaceControl.Transaction.setDisplayProjection() is called via DisplayManagerService like the following.
DisplayContent.updateRotationUnchecked()
->DisplayManagerService.LocalService.performTraversal()
->DisplayManagerService.performTraversalLocked()
->DisplayManagerService.configureDisplayLocked()
->LogicalDisplay.configureDisplayLocked()
->DisplayDevice.setProjectionLocked()
->SurfaceControl.Transaction.setDisplayProjection()
Then the transaction updates the display's orientation by DisplayDevice::setProjection()
http://androidxref.com/9.0.0_r3/xref/frameworks/native/services/surfaceflinger/DisplayDevice.cpp#560
Comment 8•6 years ago
•
|
||
On android, WebRender renders to Surface(ANativeWindow) of SurfaceView. The SurfaceView's rotation is automatically handled by android os, though it needs to handle size change.
https://github.com/sotaroikeda/firefox-diagrams/blob/master/mobile/mobile_GeckoSession_68.pdf
Reporter | ||
Comment 9•6 years ago
|
||
Great! So I guess we can just close this bug, there's nothing to do here.
Description
•