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

Commit 7bbf8163 authored by Jamie Gennis's avatar Jamie Gennis
Browse files

Set the secureness when creating displays

This change makes use of the new 'secure' argument to the
ISurfaceComposer::createDisplay method.  In this change both the overlay and
wifi displays are hard-coded to be non-secure displays.

Bug: 7368436
Change-Id: Ib65312f2adab5104d8deefbfc32af9dc106a9129
parent 398a6713
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -258,7 +258,7 @@ public class Surface implements Parcelable {
    private native void nativeSetLayerStack(int layerStack);

    private static native IBinder nativeGetBuiltInDisplay(int physicalDisplayId);
    private static native IBinder nativeCreateDisplay(String name);
    private static native IBinder nativeCreateDisplay(String name, boolean secure);
    private static native void nativeSetDisplaySurface(
            IBinder displayToken, Surface surface);
    private static native void nativeSetDisplayLayerStack(
@@ -597,11 +597,11 @@ public class Surface implements Parcelable {
    }

    /** @hide */
    public static IBinder createDisplay(String name) {
    public static IBinder createDisplay(String name, boolean secure) {
        if (name == null) {
            throw new IllegalArgumentException("name must not be null");
        }
        return nativeCreateDisplay(name);
        return nativeCreateDisplay(name, secure);
    }

    /** @hide */
+5 −3
Original line number Diff line number Diff line
@@ -653,9 +653,11 @@ static jobject nativeGetBuiltInDisplay(JNIEnv* env, jclass clazz, jint id) {
    return javaObjectForIBinder(env, token);
}

static jobject nativeCreateDisplay(JNIEnv* env, jclass clazz, jstring nameObj) {
static jobject nativeCreateDisplay(JNIEnv* env, jclass clazz, jstring nameObj,
        jboolean secure) {
    ScopedUtfChars name(env, nameObj);
    sp<IBinder> token(SurfaceComposerClient::createDisplay(String8(name.c_str())));
    sp<IBinder> token(SurfaceComposerClient::createDisplay(
            String8(name.c_str()), bool(secure)));
    return javaObjectForIBinder(env, token);
}

@@ -845,7 +847,7 @@ static JNINativeMethod gSurfaceMethods[] = {
            (void*)nativeSetLayerStack },
    {"nativeGetBuiltInDisplay", "(I)Landroid/os/IBinder;",
            (void*)nativeGetBuiltInDisplay },
    {"nativeCreateDisplay", "(Ljava/lang/String;)Landroid/os/IBinder;",
    {"nativeCreateDisplay", "(Ljava/lang/String;Z)Landroid/os/IBinder;",
            (void*)nativeCreateDisplay },
    {"nativeSetDisplaySurface", "(Landroid/os/IBinder;Landroid/view/Surface;)V",
            (void*)nativeSetDisplaySurface },
+1 −1
Original line number Diff line number Diff line
@@ -282,7 +282,7 @@ final class OverlayDisplayAdapter extends DisplayAdapter {
        @Override
        public void onWindowCreated(SurfaceTexture surfaceTexture, float refreshRate) {
            synchronized (getSyncRoot()) {
                IBinder displayToken = Surface.createDisplay(mName);
                IBinder displayToken = Surface.createDisplay(mName, false);
                mDevice = new OverlayDisplayDevice(displayToken, mName,
                        mWidth, mHeight, refreshRate, mDensityDpi, surfaceTexture);

+1 −1
Original line number Diff line number Diff line
@@ -292,7 +292,7 @@ final class WifiDisplayAdapter extends DisplayAdapter {
        float refreshRate = 60.0f; // TODO: get this for real

        String name = display.getFriendlyDisplayName();
        IBinder displayToken = Surface.createDisplay(name);
        IBinder displayToken = Surface.createDisplay(name, false);
        mDisplayDevice = new WifiDisplayDevice(displayToken, name, width, height,
                refreshRate, deviceFlags, surface);
        sendDisplayDeviceEventLocked(mDisplayDevice, DISPLAY_DEVICE_EVENT_ADDED);