Closed Bug 1072830 Opened 10 years ago Closed 10 years ago

[LockScreen][Flame][KK] After unlocking with passcode, the secure camera icon would become square while fading out

Categories

(Core :: Graphics, defect)

ARM
Gonk (Firefox OS)
defect
Not set
normal

Tracking

()

RESOLVED INVALID
Tracking Status
b2g-v2.0 --- unaffected
b2g-v2.1 --- affected
b2g-v2.2 --- affected

People

(Reporter: gweng, Unassigned, NeedInfo)

References

()

Details

(Keywords: regression)

STR:

1. Lock the screen with passcode
2. Unlock it with passcode

The secure camera's icon would become square rather than keeping as a circle.
The most odd things is in my video, the two phones come with exactly the same Gaia. The only difference is the correct one keep using old base image (v123), while the incorrect one is with KK (v180). Of course the Gecko may be different (flame vs flameKK), but the build number is the same.
The video shows the difference at the 0:08.
As Tim suggested, I move this bug to Graphic component, and nominate it as 2.1 blocker.
Note this should be a KK only bug.

[Blocking Requested - why for this release]:

The icon was affected without any Gaia and Gecko code changes, and it's an obvious error for user. This may happen on 2.1 if 2.1 is with KK.
blocking-b2g: --- → 2.1?
Component: Gaia::System::Lockscreen → Graphics
Product: Firefox OS → Core
Peter, how do we pass this to the device team?  Do we have a component/product combination for that? This is "graphics", but not clearly "Gecko graphics", so it needs to start with the device team as they deal with device specific issues.
Flags: needinfo?(pchang)
Also, I can't actually tell from the video what we're talking about, but perhaps related to bug 1054833?
Tried again. The symptom still occur. Devices:

1. Flame KK
Gecko 20140925160206
Gaia 2014-09-25 18:26:58 a06714c5
Base Image: v180

2. Flame
Gecko 20140925160206
Gaia 2014-09-25 18:26:58 a06714c5
Base Image: v123

The reason I put it in Graphic component is I'm sure (according to the device information I provided) Gecko + Gaia is the same, but base image differs. So, the rest related factors are Graphic or Performance.
(In reply to Milan Sreckovic [:milan] from comment #3)
> Peter, how do we pass this to the device team?  Do we have a
> component/product combination for that? This is "graphics", but not clearly
> "Gecko graphics", so it needs to start with the device team as they deal
> with device specific issues.

Since this is able to reproduce in flame, we will take a look first. For the graphic issue for specific devices, I just feedback to PM to discuss the co-working model.

chiajung, please help to check this issue.
Flags: needinfo?(pchang) → needinfo?(chung)
Tested with LayerScope on JB/KK version, and the layers image of the icon are identical (camera icon with a rect shadow), so I think it maybe MaskLayer related.
Flags: needinfo?(chung)
I modified LayerScope to make it output mask layer, and found that the MaskLayer somehow becomes invalid and make the icon rectangular.
The weird thing is that this is same Gecko, different Gonk version.  Matt and/or Jeff, thoughts?
Flags: needinfo?(matt.woodrow)
Flags: needinfo?(jmuizelaar)
MaskLayers are created as a CairoImage, so they'll be shared using shmem/memory and uploaded to a GL texture, not using gralloc.

I assume something has changed in the GL drivers that causes this to become invalid when it wasn't happening previously.

Since we still have the shmem/memory we could probably re-upload, but it would be worth trying to figure out why this happens and if it's a gecko bug or not.

Chiajung, when you say the MaskLayer becomes invalid, what are you seeing exactly?
Flags: needinfo?(matt.woodrow)
Adding qawanted for branch checks.
Keywords: qawanted
I added a SendTextureSource in 
http://dxr.mozilla.org/mozilla-central/source/gfx/layers/LayerScope.cpp?from=LayerScope.cpp&case=true#861

if (aEffectChain.mSecondaryEffects[EffectTypes::MASK]) to output the MaskLayer to LayerScope.

When the icon becomes rectangular, the MaskLayer's image is absent in LayerScope. However, the MaskLayer is not nullptr from log, I added some log in LayerTransactionParent while it calls to SetMaskLayer and found the MaskLayer is not cleared for the Icon's Layer. So I think the layer is present but the content is invalid.

I will try to add some more log to see what's wrong there.
By the way, I expect we uses GrallocBuffer in MaskLayer from code here:
http://dxr.mozilla.org/mozilla-central/source/gfx/layers/ImageContainer.cpp#658
=> http://dxr.mozilla.org/mozilla-central/source/gfx/layers/client/TextureClient.cpp#328

However, I found it was MemoryTextureClient returned in gdb, so I make
http://dxr.mozilla.org/mozilla-central/source/gfx/layers/client/TextureClient.cpp#341

a printf_stderr, and change the condition to if (!texture) and I can find some log like:
10-01 06:00:07.380  5351  5351 I Gecko   : SetMaskLayer: 0xaaffb300 for 0xadb2b2b0
10-01 06:00:07.400  5351  5351 I Gecko   : [chiajung]Failed to allocate a TextureClient, falling back to BufferTextureClient.

I will add more log to check Gralloc allocations and make sure the layer logged is the target layer.
QA Contact: ckreinbring
The bug repros on Flame 2.2 and Flame 2.1 with shallow flash.
Actual result: After correctly entering the lockscreen passcode, the circular camera button momentarily turns into a square just before the lockscreen disappears.

Flame 2.2
BuildID: 20141001060621
Gaia: a23d2c490b39c4699c9375e25c4acdf396a2fa85
Gecko: 835ef55e175e
Platform Version: 35.0a1
Firmware Version: V180
User Agent: Mozilla/5.0 (Mobile; rv:35.0) Gecko/35.0 Firefox/35.0

Flame 2.1
BuildID: 20141001105624
Gaia: c1cc61e30f5cb3446f1692ff9fd1e32232f6a231
Gecko: 3b859b93de23
Platform Version: 34.0a2
Firmware Version: V180
User Agent: Mozilla/5.0 (Mobile; rv:34.0) Gecko/34.0 Firefox/34.0

--------------------------------------------------------------------------------------------------------

The bug does not repro on Flame 2.0 using shallow flash.
Actual result: After correctly entering the lockscreen passcode, the circular camera button remains circular.

BuildID: 20141001123531
Gaia: 8079cba2133e6f5443dba24dad077f7f91e6c978
Gecko: 3a656e533675
Platform Version: 32.0
Firmware Version: V180
User Agent: Mozilla/5.0 (Mobile; rv:32.0) Gecko/32.0 Firefox/32.0
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(jmitchell)
Keywords: qawantedregression
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(jmitchell)
OK, I think I misunderstood something yesterday...
I found the problem maybe the MemoryTextureHost deserialization fail. Since there is only 1 layer uses MaskLayer, so I use gdb and break this line:
http://dxr.mozilla.org/mozilla-central/source/gfx/layers/composite/CompositableHost.cpp#169

We should finish update the TextureHost here after texture->lock(), but the width/height in the TextureHost is still (0,0).
The bug repros on the earlist KK build we have, but does not repro on JB builds.

BuildID: 20140904171737
Gaia: de59e0c3614dd0061881fe284e9f2d74fa0d1d5d
Gecko: 8703c1895505
Gonk: 
Platform Version: 35.0a1
Firmware Version: V180
User Agent: Mozilla/5.0 (Mobile; rv:35.0) Gecko/35.0 Firefox/35.0
QA Whiteboard: [QAnalyst-Triage+] → [QAnalyst-Triage?]
Flags: needinfo?(jmitchell)
The above comment is meant to indicate that a regression window is not available.
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(jmitchell)
After some test with Greg, this maybe close for now, since some gaia change makes the icon totally invisible while animation! But maybe we should move this bug into our backlog.

We tried:
184 base image: no problem
184 base image+master gecko: no problem
184 base image+master gaia: icon gone
184 base image+master gecko+master gaia: icon gone
184 base image+aurora gaia+aurora gecko: problem shown.
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → INVALID
blocking-b2g: 2.1? → ---
You need to log in before you can comment on or make changes to this bug.