Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aaa9e834 authored by Stan Iliev's avatar Stan Iliev
Browse files

Decouple SurfaceTexture from HWUI

Remove all Skia and HWUI types from SurfaceTexture
implementation.
Move SurfaceTexture to libgui (ag/9578265).
Define private C++ API for SurfaceTexture, which is consumed
by DeferredLayerUpdater.
Move AutoBackendTextureRelease/Skia code from SurfaceTexture
to HWUI.

Test: pass CtsUiRenderingTestCases and CtsViewTestCases
Bug: 136263580
Change-Id: I3f971bb490f64a3ac0b2a66a89ba935bf7f08213
parent 707ba29a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -179,6 +179,7 @@ cc_library_shared {
                "android_hardware_UsbRequest.cpp",
                "android_hardware_location_ActivityRecognitionHardware.cpp",
                "android_util_FileObserver.cpp",
                "android/graphics/SurfaceTexture.cpp",
                "android/opengl/poly_clip.cpp", // TODO: .arm
                "android/opengl/util.cpp",
                "android_server_NetworkManagementSocketTagger.cpp",
@@ -431,7 +432,6 @@ cc_library_static {
                "android/graphics/GIFMovie.cpp",
                "android/graphics/Movie.cpp",
                "android/graphics/MovieImpl.cpp",
                "android/graphics/SurfaceTexture.cpp",
                "android/graphics/pdf/PdfDocument.cpp",
                "android/graphics/pdf/PdfEditor.cpp",
                "android/graphics/pdf/PdfRenderer.cpp",
+5 −1
Original line number Diff line number Diff line
@@ -24,7 +24,9 @@
#include <GLES2/gl2ext.h>

#include <gui/Surface.h>
#include <gui/surfacetexture/SurfaceTexture.h>
#include <gui/BufferQueue.h>
#include <gui/surfacetexture/surface_texture_platform.h>

#include "core_jni_helpers.h"

@@ -35,7 +37,6 @@
#include "jni.h"
#include <nativehelper/JNIHelp.h>
#include <nativehelper/ScopedLocalRef.h>
#include "surfacetexture/SurfaceTexture.h"

// ----------------------------------------------------------------------------

@@ -402,3 +403,6 @@ int register_android_graphics_SurfaceTexture(JNIEnv* env)
}

} // namespace android

//TODO: Move this file to frameworks/base/core/jni/android_graphics_SurfaceTexture.cpp. See
//TODO: android_view_Surface.cpp for example.
+1 −1
Original line number Diff line number Diff line
@@ -26,9 +26,9 @@
#include "core_jni_helpers.h"
#include "android_runtime/android_view_Surface.h"
#include "android_runtime/android_graphics_SurfaceTexture.h"
#include "surfacetexture/SurfaceTexture.h"

#include <gui/Surface.h>
#include <gui/surfacetexture/SurfaceTexture.h>
#include <gui/IGraphicBufferProducer.h>
#include <gui/IProducerListener.h>
#include <ui/GraphicBuffer.h>
+7 −2
Original line number Diff line number Diff line
@@ -23,7 +23,9 @@
#include "core_jni_helpers.h"
#include <android_runtime/android_graphics_SurfaceTexture.h>

#include <gui/GLConsumer.h>
#include <gui/IGraphicBufferProducer.h>
#include <gui/surfacetexture/surface_texture_platform.h>
#include <gui/surfacetexture/SurfaceTexture.h>
#include <hwui/Paint.h>

#include <SkMatrix.h>
@@ -64,7 +66,10 @@ static void TextureLayer_setTransform(JNIEnv* env, jobject clazz,
static void TextureLayer_setSurfaceTexture(JNIEnv* env, jobject clazz,
        jlong layerUpdaterPtr, jobject surface) {
    DeferredLayerUpdater* layer = reinterpret_cast<DeferredLayerUpdater*>(layerUpdaterPtr);
    layer->setSurfaceTexture(SurfaceTexture_getSurfaceTexture(env, surface));
    auto consumer = SurfaceTexture_getSurfaceTexture(env, surface);
    auto producer = SurfaceTexture_getProducer(env, surface);
    layer->setSurfaceTexture(AutoTextureRelease(
            ASurfaceTexture_create(consumer, producer)));
}

static void TextureLayer_updateSurfaceTexture(JNIEnv* env, jobject clazz,
+2 −0
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
#ifndef _ANDROID_GRAPHICS_SURFACETEXTURE_H
#define _ANDROID_GRAPHICS_SURFACETEXTURE_H

#include <utils/StrongPointer.h>

#include "jni.h"

namespace android {
Loading