Closed Bug 672574 Opened 9 years ago Closed 9 years ago

When GL Layers enabled, restarting Fennec causes black screen

Categories

(Core :: Graphics, defect)

ARM
Android
defect
Not set

Tracking

()

RESOLVED FIXED

People

(Reporter: ajuma, Assigned: ajuma)

References

Details

(Whiteboard: review-needed)

Attachments

(1 file)

As noted in the comments of bug 660072, when GL Layers are enabled on Android, pressing 'back' to return to the home screen and then pressing the Fennec icon again leads to a completely black window. 

There seem to be two issues here (when testing on a Nexus S):
1) After a restart, the first call to GLContext::RenewSurface() almost always fails, but the return value isn't currently checked. 
2) After a restart, a GeckoSurfaceView::surfaceChanged event occurs, but no drawing is initiated.
Attachment #546837 - Flags: review? → review?(mwu)
Whiteboard: review-needed
Comment on attachment 546837 [details] [diff] [review]
Check return value of GLContext::RenewSurface(), and re-draw after the first GeckoSurfaceView::surfaceChanged following a restart

I'm working on trying to better understand why GLContext::RenewSurface() is failing following a restart. 

The failures are coming from fMakeCurrent, which is producing an EGL_BAD_ALLOC error.

Discussing with BenWa, it seems we might need to explicitly destroy the GLContext when the activity pauses (and reconstruct on resume).
Attachment #546837 - Flags: review?(mwu)
> I'm working on trying to better understand why GLContext::RenewSurface() is
> failing following a restart. 

This turned out to have the same underlying cause as Bug 677290 (we weren't releasing the GL surface when the Android surface was destroyed), so the patches for that bug also fixed this one.
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
(In reply to Ali Juma [:ajuma] from comment #3)
 
> This turned out to have the same underlying cause as Bug 677290 

That should be Bug 677920.
You need to log in before you can comment on or make changes to this bug.