SurfaceControlViewHost: Always set FLAG_HARDWARE_ACCELERATED for embedded views

If FLAG_HARDWARE_ACCELERATED is not set, view
framework will not use hw rendering and the shadows
will not be rendered.

Fix this by adding the flag when setting the view in
SurfaceControlViewHost. The public api already sets this
flag, so this brings parity to the internal api as well.

Test: Embedded window can draw shadows
Fixes: 180613222
Change-Id: Ife84ea9e09d415679fdf973bbc572eda360921e4
This commit is contained in:
Vishnu Nair
2021-02-18 09:04:16 -08:00
parent 30780cf472
commit 8a3568667f

View File

@@ -217,16 +217,6 @@ public class SurfaceControlViewHost {
}
}
/**
* @hide
*/
@TestApi
public void setView(@NonNull View view, @NonNull WindowManager.LayoutParams attrs) {
Objects.requireNonNull(view);
view.setLayoutParams(attrs);
mViewRoot.setView(view, attrs, null);
}
/**
* Set the root view of the SurfaceControlViewHost. This view will render in to
* the SurfaceControl, and receive input based on the SurfaceControls positioning on
@@ -240,10 +230,20 @@ public class SurfaceControlViewHost {
final WindowManager.LayoutParams lp =
new WindowManager.LayoutParams(width, height,
WindowManager.LayoutParams.TYPE_APPLICATION, 0, PixelFormat.TRANSPARENT);
lp.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
setView(view, lp);
}
/**
* @hide
*/
@TestApi
public void setView(@NonNull View view, @NonNull WindowManager.LayoutParams attrs) {
Objects.requireNonNull(view);
attrs.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
view.setLayoutParams(attrs);
mViewRoot.setView(view, attrs, null);
}
/**
* @return The view passed to setView, or null if none has been passed.
*/