Closed
Bug 796722
Opened 12 years ago
Closed 12 years ago
[system] screen rotation with 180 degree will delay
Categories
(Firefox OS Graveyard :: Gaia::System, defect)
Firefox OS Graveyard
Gaia::System
Tracking
(blocking-b2g:leo+, blocking-basecamp:-, b2g18 fixed, b2g18-v1.0.0 wontfix, b2g18-v1.0.1 wontfix, b2g-v1.1hd fixed)
RESOLVED
FIXED
1.1 QE3 (26jun)
People
(Reporter: ghtobz, Assigned: pchang)
References
Details
(Whiteboard: [label:system])
Attachments
(2 files, 2 obsolete files)
2.62 KB,
patch
|
Details | Diff | Splinter Review | |
1.92 KB,
patch
|
Details | Diff | Splinter Review |
[GitHub issue by johnshih on 2012-09-25T02:43:36Z, https://github.com/mozilla-b2g/gaia/issues/5118]
## Environment :
Otoro phone, build 2012-09-24
Build info:
* "gaia" revision= 028b9eb35bc0fbbf2d31a0b766319b94997c8eb1
* "gecko" revision= 7de377e67a367f389b44fd3c0d1d6fd3f08f71f0
## Repro :
1. Launch the app that can rotate the screen (e.g. browser app)
2. turn the phone up-side-down (rotate 180 degree directly)
## Expected:
* The screen will rotate 180 degree
## Actual:
* It will delay for a while
## Note:
* If you touch the screen during the delay, it will rotate immediately
* And there is no problem with rotate 90 degree
[GitHub comment by autonome on 2012-09-28T05:39:06Z]
Yep, ~7 seconds. And yep, if you touch the screen it *immediately* rotates 180. Good find John :)
I'm not going to hold the release since the use-case is not really strong and there's a workaround.
Assignee | ||
Updated•12 years ago
|
Assignee: nobody → pchang
Assignee | ||
Comment 2•12 years ago
|
||
Found OnDraw event trigger more times under normal condtion.
[Normal]
nsScreenGonk setRotation 3
BasicShadowLayerManager::BeginTransactionWithTarget 0x44636320 mTargetRotation 0
nsPressShell::Paint aFlags 0x00000081
BasicShadowLayerManager::BeginTransactionWithTarget 0x43aaf660 mTargetRotation 3
nsPressShell::Paint aFlags 0x00000081
BasicShadowLayerManager::BeginTransactionWithTarget 0x43aaf660 mTargetRotation 3
nsPressShell::Paint aFlags 0x00000081
nsPressShell::Paint call updatePaintCountForPaintedPresShells aFlags 0x00000081
[Abnormal]
nsScreenGonk setRotation 3
BasicShadowLayerManager::BeginTransactionWithTarget 0x43aaf660 mTargetRotation 3
nsPressShell::Paint aFlags 0x00000081
nsPressShell::Paint call updatePaintCountForPaintedPresShells aFlags 0x00000081
Checking the difference between above sequences.
Assignee | ||
Comment 3•12 years ago
|
||
Attachment #678246 -
Flags: review?
Assignee | ||
Updated•12 years ago
|
Attachment #678246 -
Flags: review? → review?(roc)
Assignee | ||
Comment 4•12 years ago
|
||
[Root cause]
In above repo steps, the rotation of 180 degree may not cause any new painting events happened but only rotation event happened. In current shadowlayer flow, it will skip screen update if no new painting events.
[Solution]
Added rotation event detection before screen update skip
Comment on attachment 678246 [details] [diff] [review]
patch to fix screen not update when rotate 180 very quickly
Review of attachment 678246 [details] [diff] [review]:
-----------------------------------------------------------------
great!
::: gfx/layers/ipc/ShadowLayers.cpp
@@ +46,5 @@
> {
> mOpen = true;
> mTargetBounds = aTargetBounds;
> + if (aRotation != mTargetRotation)
> + mRotationChanged = true;
{}
Attachment #678246 -
Flags: review?(roc) → review+
Assignee | ||
Comment 6•12 years ago
|
||
version 2 -- add {} in line 49
Assignee | ||
Updated•12 years ago
|
Attachment #678656 -
Attachment description: patch to fix screen not update when rotate 180 very quickly → patch to fix screen not update when rotate 180 very quickly-v2
Assignee | ||
Updated•12 years ago
|
Attachment #678246 -
Attachment is obsolete: true
Assignee | ||
Updated•12 years ago
|
blocking-basecamp: - → ?
Updated•12 years ago
|
Component: Gaia → Gaia::System
Assignee | ||
Comment 8•12 years ago
|
||
Attachment #678656 -
Attachment is obsolete: true
Attachment #689536 -
Flags: review+
Assignee | ||
Comment 9•12 years ago
|
||
Assignee | ||
Updated•12 years ago
|
Attachment #689536 -
Flags: review+
Comment 11•12 years ago
|
||
Keywords: checkin-needed
Comment 12•12 years ago
|
||
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Comment 13•11 years ago
|
||
Fix has been ready for a while - the bug looks ugly when the rotation time is inconsistent or changes instantly on touch. Noming for leo+.
blocking-b2g: --- → leo?
Comment 16•11 years ago
|
||
status-b2g18:
--- → fixed
status-b2g18-v1.0.0:
--- → wontfix
status-b2g18-v1.0.1:
--- → wontfix
status-b2g-v1.1hd:
--- → affected
Target Milestone: --- → 1.1 QE3 (26jun)
Comment 17•11 years ago
|
||
Comment 18•11 years ago
|
||
Modification for test only.
I also append a property setting "debug.nsWindow.paint" in full_xxx.mk for run-timely verifying the change.
Comment 19•11 years ago
|
||
Hi Roc,
I think part of patches in Bug 826817 need to be committed in B2G.
Bug 826817 - Make all platforms always fire WillPaintWindow/DidPaintWindow
I've locally had a experiment. The performance is still poor on B2G unless WillPanitWindow/PanitWindow/DidPanitWindow call flow is applied to nsWindow::DoDraw.
Please check the "git diff" in attachment.
That's the right idea. But you should re-get 'listener' after each call --- otherwise there's no point in checking it in separate if statements.
Updated•11 years ago
|
blocking-b2g: leo+ → hd?
Comment 21•11 years ago
|
||
Leo+ supersedes HD+, this is already landed on hd+
(In reply to Ryan VanderMeulen [:RyanVM UTC-4] from comment #17)
> https://hg.mozilla.org/releases/mozilla-b2g18_v1_1_0_hd/rev/8fee987844f9
blocking-b2g: hd? → leo+
Updated•11 years ago
|
You need to log in
before you can comment on or make changes to this bug.
Description
•