summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorDerek Sollenberger <djsollen@google.com>2019-08-30 13:53:29 -0400
committerDerek Sollenberger <djsollen@google.com>2019-10-25 16:25:39 -0400
commit79201b16f1dbfcfd23c1bbde08fd86b078a593bf (patch)
treefb86ef5d4ddd00c4998404c26d062d86d85c4fd3 /core/java/android
parentf2acf9fe7482b9868710e21880eee74179cc8295 (diff)
Remove native calls to HWUI from Surface and use the public API instead
Test: CtsGraphicsTestCases Bug: 137655431 Change-Id: I1eda485282306d571ca973e179e7202958b59105
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/view/Surface.java26
1 files changed, 12 insertions, 14 deletions
diff --git a/core/java/android/view/Surface.java b/core/java/android/view/Surface.java
index 17f07b5a2ad4..17ad615164a1 100644
--- a/core/java/android/view/Surface.java
+++ b/core/java/android/view/Surface.java
@@ -23,6 +23,7 @@ import android.content.res.CompatibilityInfo.Translator;
import android.graphics.Canvas;
import android.graphics.ColorSpace;
import android.graphics.GraphicBuffer;
+import android.graphics.HardwareRenderer;
import android.graphics.Matrix;
import android.graphics.RecordingCanvas;
import android.graphics.Rect;
@@ -925,7 +926,7 @@ public class Surface implements Parcelable {
private final class HwuiContext {
private final RenderNode mRenderNode;
- private long mHwuiRenderer;
+ private HardwareRenderer mHardwareRenderer;
private RecordingCanvas mCanvas;
private final boolean mIsWideColorGamut;
@@ -934,8 +935,12 @@ public class Surface implements Parcelable {
mRenderNode.setClipToBounds(false);
mRenderNode.setForceDarkAllowed(false);
mIsWideColorGamut = isWideColorGamut;
- mHwuiRenderer = nHwuiCreate(mRenderNode.mNativeRenderNode, mNativeObject,
- isWideColorGamut);
+ mHardwareRenderer = new HardwareRenderer();
+ mHardwareRenderer.setSurface(Surface.this, true);
+ mHardwareRenderer.loadSystemProperties();
+ mHardwareRenderer.setWideGamut(isWideColorGamut);
+ mHardwareRenderer.setLightSourceAlpha(0.0f, 0.0f);
+ mHardwareRenderer.setLightSourceGeometry(0.0f, 0.0f, 0.0f, 0.0f);
}
Canvas lockCanvas(int width, int height) {
@@ -953,27 +958,20 @@ public class Surface implements Parcelable {
}
mRenderNode.endRecording();
mCanvas = null;
- nHwuiDraw(mHwuiRenderer);
+ mHardwareRenderer.drawRenderNode(mRenderNode);
+ // TODO unable to set FrameInfoFlags::SurfaceCanvas on the draw
}
void updateSurface() {
- nHwuiSetSurface(mHwuiRenderer, mNativeObject);
+ mHardwareRenderer.setSurface(Surface.this);
}
void destroy() {
- if (mHwuiRenderer != 0) {
- nHwuiDestroy(mHwuiRenderer);
- mHwuiRenderer = 0;
- }
+ mHardwareRenderer.destroy();
}
boolean isWideColorGamut() {
return mIsWideColorGamut;
}
}
-
- private static native long nHwuiCreate(long rootNode, long surface, boolean isWideColorGamut);
- private static native void nHwuiSetSurface(long renderer, long surface);
- private static native void nHwuiDraw(long renderer);
- private static native void nHwuiDestroy(long renderer);
}