From c1c99e948e5c92d728bb8c8d65e4183d70e29a11 Mon Sep 17 00:00:00 2001
From: Bo Liu <boliu@chromium.org>
Date: Wed, 6 Nov 2019 21:56:14 +0000
Subject: [PATCH] weblayer: Fix fullscreen video

The compositor surface is opaque, which means when video is lifted
into a separate surface during fullscreen below the compositor
surface, it is never showing through.

Always set the compositor surface to translucent for now, which will
use more memory even when not in fullscreen.

Bug: 1022042
Change-Id: I2ff368dfa2a04ba0e62891039244c0bcb148e6fb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1899901
Reviewed-by: Frank Liberato <liberato@chromium.org>
Commit-Queue: Bo <boliu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#713178}
---
 .../org/chromium/weblayer_private/ContentViewRenderView.java | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/weblayer/browser/java/org/chromium/weblayer_private/ContentViewRenderView.java b/weblayer/browser/java/org/chromium/weblayer_private/ContentViewRenderView.java
index 63f151dd9e743..a5d7e70e9f881 100644
--- a/weblayer/browser/java/org/chromium/weblayer_private/ContentViewRenderView.java
+++ b/weblayer/browser/java/org/chromium/weblayer_private/ContentViewRenderView.java
@@ -6,6 +6,7 @@ package org.chromium.weblayer_private;
 
 import android.content.Context;
 import android.graphics.Color;
+import android.graphics.PixelFormat;
 import android.graphics.SurfaceTexture;
 import android.view.Surface;
 import android.view.SurfaceHolder;
@@ -193,6 +194,10 @@ public class ContentViewRenderView extends FrameLayout {
                 mSurfaceView.getHolder().addCallback(mSurfaceCallback);
                 mSurfaceView.setVisibility(View.VISIBLE);
 
+                // TODO(boliu): This is only needed when video is lifted into a separate surface.
+                // Keeping this constantly will use one more byte per pixel constantly.
+                mSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
+
                 mTextureView = null;
                 mSurfaceTextureListener = null;
             } else if (mode == MODE_TEXTURE_VIEW) {