New issue
Advanced search Search tips

Issue 751746 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Aug 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 1
Type: Bug

Blocking:
issue 618368



Sign in to add a comment

solid color rectangles cover parts of overlay video

Project Member Reported by liber...@chromium.org, Aug 2 2017

Issue description

when i switch to AO full screen, there is a rectangular black square missing from the lower right.  i'm not sure whether this is coming from blink, or what.

overlay video mode causes it to go away

with or without overlay video mode, inline overlays (enter fs, get overlay, pause, exit fs) get covered with white squares that flicker (definitely looks like a compositor thing).  don't know if it's related or not, but it kinda seems so.
 
i tried turning off HasTransparentBackground in compositor_view.cc .  full screen goes completely crazy -- flashes every other frame, then vanishes.

when i pause, i get the attached screenshot.

going back to inline while having an overlay results in the other screen shot.

note that 'dumpsys SurfaceFlinger' claims that this overlay still exists. it has format 7FA30C04, which means that it came from MediaCodec.  so, i suspect that whatever's on the display where the video should be is not actually on the surface.  it's likely on the compositor view, but i can't verify that easily.
Screenshot_20170802-093347.png
64.9 KB View Download
Screenshot_inline.png
124 KB View Download
the solid color quad that should replace the overlay video is (0,0,0,0).  that doesn't seem like it will work.  if it's leaving some of the fb uninitialized, then that would explain quite a bit.

oh, wait -- QuadList::ReplaceExistingQuadWithOpaqueTransparentSolidColor uses a reference to the rects, then calls ReplaceExistingElement, then uses the reference.  Replace...() clobbers the list entry.

making it copy the rect instead of taking a reference fixes it.
Project Member

Comment 3 by bugdroid1@chromium.org, Aug 3 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/644f0f5752c7d58e7ba9a0c57c2ff16595891440

commit 644f0f5752c7d58e7ba9a0c57c2ff16595891440
Author: liberato@chromium.org <liberato@chromium.org>
Date: Thu Aug 03 16:38:24 2017

Copy quad rect when replacing overlay quad.

Previously, RenderPass::Replace...Color() was taking a reference
to the quad's rectangle, then replacing the quad.  Unfortunately,
that destroys the original rect before it can be re-used a few
lines later.

This CL just makes a copy of the rect instead.

BUG= 751746 

Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: Ice4a5e147000813a1e19c60ba33de5f36b2b11d7
Reviewed-on: https://chromium-review.googlesource.com/598489
Commit-Queue: Frank Liberato <liberato@chromium.org>
Reviewed-by: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#491764}
[modify] https://crrev.com/644f0f5752c7d58e7ba9a0c57c2ff16595891440/cc/quads/render_pass.cc
[modify] https://crrev.com/644f0f5752c7d58e7ba9a0c57c2ff16595891440/cc/quads/render_pass_unittest.cc

Status: Fixed (was: Started)

Sign in to add a comment