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

Commit 29479ebe authored by Mathias Agopian's avatar Mathias Agopian
Browse files

clean-up following Surface split

Change-Id: I853a76d92d957ee38a36fcdd280d6407ec316987
parent c145317d
Loading
Loading
Loading
Loading
+35 −38
Original line number Diff line number Diff line
@@ -32,6 +32,19 @@ import dalvik.system.CloseGuard;
public class Surface implements Parcelable {
    private static final String TAG = "Surface";

    private native int nativeCreateFromSurfaceTexture(SurfaceTexture surfaceTexture)
            throws OutOfResourcesException;
    private native Canvas nativeLockCanvas(int nativeObject, Rect dirty);
    private native void nativeUnlockCanvasAndPost(int nativeObject, Canvas canvas);

    private static native void nativeRelease(int nativeObject);
    private static native void nativeDestroy(int nativeObject);
    private static native boolean nativeIsValid(int nativeObject);
    private static native boolean nativeIsConsumerRunningBehind(int nativeObject);
    private static native int nativeCopyFrom(int nativeObject, int surfaceControlNativeObject);
    private static native int nativeReadFromParcel(int nativeObject, Parcel source);
    private static native void nativeWriteToParcel(int nativeObject, Parcel dest);

    public static final Parcelable.Creator<Surface> CREATOR =
            new Parcelable.Creator<Surface>() {
        public Surface createFromParcel(Parcel source) {
@@ -44,33 +57,11 @@ public class Surface implements Parcelable {
                return null;
            }
        }

        public Surface[] newArray(int size) {
            return new Surface[size];
        }
    };

    /**
     * Rotation constant: 0 degree rotation (natural orientation)
     */
    public static final int ROTATION_0 = 0;

    /**
     * Rotation constant: 90 degree rotation.
     */
    public static final int ROTATION_90 = 1;

    /**
     * Rotation constant: 180 degree rotation.
     */
    public static final int ROTATION_180 = 2;

    /**
     * Rotation constant: 270 degree rotation.
     */
    public static final int ROTATION_270 = 3;


    private final CloseGuard mCloseGuard = CloseGuard.get();
    private String mName;

@@ -94,6 +85,28 @@ public class Surface implements Parcelable {
    private Matrix mCompatibleMatrix;


    /**
     * Rotation constant: 0 degree rotation (natural orientation)
     */
    public static final int ROTATION_0 = 0;

    /**
     * Rotation constant: 90 degree rotation.
     */
    public static final int ROTATION_90 = 1;

    /**
     * Rotation constant: 180 degree rotation.
     */
    public static final int ROTATION_180 = 2;

    /**
     * Rotation constant: 270 degree rotation.
     */
    public static final int ROTATION_270 = 3;



    /**
     * Create an empty surface, which will later be filled in by readFromParcel().
     * @hide
@@ -436,20 +449,4 @@ public class Surface implements Parcelable {
        if (mNativeObject == 0) throw new NullPointerException(
                "mNativeObject is null. Have you called release() already?");
    }

    private native int nativeCreateFromSurfaceTexture(SurfaceTexture surfaceTexture)
            throws OutOfResourcesException;

    private native void nativeRelease(int nativeObject);
    private native void nativeDestroy(int nativeObject);
    private native boolean nativeIsValid(int nativeObject);

    private native boolean nativeIsConsumerRunningBehind(int nativeObject);

    private native Canvas nativeLockCanvas(int nativeObject, Rect dirty);
    private native void nativeUnlockCanvasAndPost(int nativeObject, Canvas canvas);
    
    private native int nativeCopyFrom(int nativeObject, int surfaceControlNativeObject);
    private native int nativeReadFromParcel(int nativeObject, Parcel source);
    private native void nativeWriteToParcel(int nativeObject, Parcel dest);
}
+40 −40
Original line number Diff line number Diff line
@@ -30,6 +30,46 @@ import android.util.Log;
 */
public class SurfaceControl {
    private static final String TAG = "SurfaceControl";

    private static native int nativeCreate(SurfaceSession session, String name,
            int w, int h, int format, int flags)
            throws OutOfResourcesException;
    private static native void nativeRelease(int nativeObject);
    private static native void nativeDestroy(int nativeObject);

    private static native Bitmap nativeScreenshot(IBinder displayToken,
            int width, int height, int minLayer, int maxLayer, boolean allLayers);

    private static native void nativeOpenTransaction();
    private static native void nativeCloseTransaction();
    private static native void nativeSetAnimationTransaction();

    private static native void nativeSetLayer(int nativeObject, int zorder);
    private static native void nativeSetPosition(int nativeObject, float x, float y);
    private static native void nativeSetSize(int nativeObject, int w, int h);
    private static native void nativeSetTransparentRegionHint(int nativeObject, Region region);
    private static native void nativeSetAlpha(int nativeObject, float alpha);
    private static native void nativeSetMatrix(int nativeObject, float dsdx, float dtdx, float dsdy, float dtdy);
    private static native void nativeSetFlags(int nativeObject, int flags, int mask);
    private static native void nativeSetWindowCrop(int nativeObject, int l, int t, int r, int b);
    private static native void nativeSetLayerStack(int nativeObject, int layerStack);

    private static native IBinder nativeGetBuiltInDisplay(int physicalDisplayId);
    private static native IBinder nativeCreateDisplay(String name, boolean secure);
    private static native void nativeSetDisplaySurface(
            IBinder displayToken, int nativeSurfaceObject);
    private static native void nativeSetDisplayLayerStack(
            IBinder displayToken, int layerStack);
    private static native void nativeSetDisplayProjection(
            IBinder displayToken, int orientation,
            int l, int t, int r, int b, 
            int L, int T, int R, int B);
    private static native boolean nativeGetDisplayInfo(
            IBinder displayToken, SurfaceControl.PhysicalDisplayInfo outInfo);
    private static native void nativeBlankDisplay(IBinder displayToken);
    private static native void nativeUnblankDisplay(IBinder displayToken);


    private final CloseGuard mCloseGuard = CloseGuard.get();
    private String mName;
    int mNativeObject; // package visibility only for Surface.java access
@@ -532,44 +572,4 @@ public class SurfaceControl {
            throw new UnsupportedOperationException("Device is headless");
        }
    }
    
    

    private native int nativeCreate(SurfaceSession session, String name,
            int w, int h, int format, int flags)
            throws OutOfResourcesException;
    private native void nativeRelease(int nativeObject);
    private native void nativeDestroy(int nativeObject);
    
    private static native Bitmap nativeScreenshot(IBinder displayToken,
            int width, int height, int minLayer, int maxLayer, boolean allLayers);
    
    private static native void nativeOpenTransaction();
    private static native void nativeCloseTransaction();
    private static native void nativeSetAnimationTransaction();

    private native void nativeSetLayer(int nativeObject, int zorder);
    private native void nativeSetPosition(int nativeObject, float x, float y);
    private native void nativeSetSize(int nativeObject, int w, int h);
    private native void nativeSetTransparentRegionHint(int nativeObject, Region region);
    private native void nativeSetAlpha(int nativeObject, float alpha);
    private native void nativeSetMatrix(int nativeObject, float dsdx, float dtdx, float dsdy, float dtdy);
    private native void nativeSetFlags(int nativeObject, int flags, int mask);
    private native void nativeSetWindowCrop(int nativeObject, int l, int t, int r, int b);
    private native void nativeSetLayerStack(int nativeObject, int layerStack);

    private static native IBinder nativeGetBuiltInDisplay(int physicalDisplayId);
    private static native IBinder nativeCreateDisplay(String name, boolean secure);
    private static native void nativeSetDisplaySurface(
            IBinder displayToken, int nativeSurfaceObject);
    private static native void nativeSetDisplayLayerStack(
            IBinder displayToken, int layerStack);
    private static native void nativeSetDisplayProjection(
            IBinder displayToken, int orientation,
            int l, int t, int r, int b, 
            int L, int T, int R, int B);
    private static native boolean nativeGetDisplayInfo(
            IBinder displayToken, SurfaceControl.PhysicalDisplayInfo outInfo);
    private static native void nativeBlankDisplay(IBinder displayToken);
    private static native void nativeUnblankDisplay(IBinder displayToken);
}
+1 −1
Original line number Diff line number Diff line
@@ -64,7 +64,7 @@ public:
            uint32_t width, uint32_t height, uint32_t flags) {
        JNIEnv* env = AndroidRuntime::getJNIEnv();

        jobject surfaceObj = android_view_Surface_createFromISurfaceTexture(env, bufferProducer);
        jobject surfaceObj = android_view_Surface_createFromIGraphicBufferProducer(env, bufferProducer);
        if (surfaceObj == NULL) {
            ALOGE("Could not create Surface from surface texture %p provided by media server.",
                  bufferProducer.get());
+14 −14
Original line number Diff line number Diff line
@@ -85,7 +85,7 @@ sp<Surface> android_view_Surface_getSurface(JNIEnv* env, jobject surfaceObj) {
            env->GetIntField(surfaceObj, gSurfaceClassInfo.mNativeObject));
}

jobject android_view_Surface_createFromISurfaceTexture(JNIEnv* env,
jobject android_view_Surface_createFromIGraphicBufferProducer(JNIEnv* env,
        const sp<IGraphicBufferProducer>& bufferProducer) {
    if (bufferProducer == NULL) {
        return NULL;
@@ -131,22 +131,22 @@ static jint nativeCreateFromSurfaceTexture(JNIEnv* env, jobject surfaceObj,
    return int(surface.get());
}

static void nativeRelease(JNIEnv* env, jobject surfaceObj, jint nativeObject) {
static void nativeRelease(JNIEnv* env, jclass clazz, jint nativeObject) {
    sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject));
    sur->decStrong(surfaceObj);
    sur->decStrong(clazz);
}

static void nativeDestroy(JNIEnv* env, jobject surfaceObj, jint nativeObject) {
static void nativeDestroy(JNIEnv* env, jclass clazz, jint nativeObject) {
    sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject));
    sur->decStrong(surfaceObj);
    sur->decStrong(clazz);
}

static jboolean nativeIsValid(JNIEnv* env, jobject surfaceObj, jint nativeObject) {
static jboolean nativeIsValid(JNIEnv* env, jclass clazz, jint nativeObject) {
    sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject));
    return Surface::isValid(sur) ? JNI_TRUE : JNI_FALSE;
}

static jboolean nativeIsConsumerRunningBehind(JNIEnv* env, jobject surfaceObj, jint nativeObject) {
static jboolean nativeIsConsumerRunningBehind(JNIEnv* env, jclass clazz, jint nativeObject) {
    sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject));
    if (!Surface::isValid(sur)) {
        doThrowIAE(env);
@@ -284,7 +284,7 @@ static void nativeUnlockCanvasAndPost(JNIEnv* env, jobject surfaceObj, jint nati

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

static jint nativeCopyFrom(JNIEnv* env, jobject surfaceObj,
static jint nativeCopyFrom(JNIEnv* env, jclass clazz,
        jint nativeObject, jint surfaceControlNativeObj) {
    /*
     * This is used by the WindowManagerService just after constructing
@@ -295,18 +295,18 @@ static jint nativeCopyFrom(JNIEnv* env, jobject surfaceObj,
    sp<SurfaceControl> ctrl(reinterpret_cast<SurfaceControl *>(surfaceControlNativeObj));
    sp<Surface> other(ctrl->getSurface());
    if (other != NULL) {
        other->incStrong(surfaceObj);
        other->incStrong(clazz);
    }

    sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject));
    if (sur != NULL) {
        sur->decStrong(surfaceObj);
        sur->decStrong(clazz);
    }

    return int(other.get());
}

static jint nativeReadFromParcel(JNIEnv* env, jobject surfaceObj,
static jint nativeReadFromParcel(JNIEnv* env, jclass clazz,
        jint nativeObject, jobject parcelObj) {
    Parcel* parcel = parcelForJavaObject(env, parcelObj);
    if (parcel == NULL) {
@@ -315,16 +315,16 @@ static jint nativeReadFromParcel(JNIEnv* env, jobject surfaceObj,
    }
    sp<Surface> self(reinterpret_cast<Surface *>(nativeObject));
    if (self != NULL) {
        self->decStrong(surfaceObj);
        self->decStrong(clazz);
    }
    sp<Surface> sur(Surface::readFromParcel(*parcel));
    if (sur != NULL) {
        sur->incStrong(surfaceObj);
        sur->incStrong(clazz);
    }
    return int(sur.get());
}

static void nativeWriteToParcel(JNIEnv* env, jobject surfaceObj,
static void nativeWriteToParcel(JNIEnv* env, jclass clazz,
        jint nativeObject, jobject parcelObj) {
    Parcel* parcel = parcelForJavaObject(env, parcelObj);
    if (parcel == NULL) {
+15 −15
Original line number Diff line number Diff line
@@ -120,7 +120,7 @@ private:

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

static jint nativeCreate(JNIEnv* env, jobject surfaceObj, jobject sessionObj,
static jint nativeCreate(JNIEnv* env, jclass clazz, jobject sessionObj,
        jstring nameStr, jint w, jint h, jint format, jint flags) {
    ScopedUtfChars name(env, nameStr);
    sp<SurfaceComposerClient> client(android_view_SurfaceSession_getClient(env, sessionObj));
@@ -130,19 +130,19 @@ static jint nativeCreate(JNIEnv* env, jobject surfaceObj, jobject sessionObj,
        jniThrowException(env, OutOfResourcesException, NULL);
        return 0;
    }
    surface->incStrong(surfaceObj);
    surface->incStrong(clazz);
    return int(surface.get());
}

static void nativeRelease(JNIEnv* env, jobject surfaceObj, jint nativeObject) {
static void nativeRelease(JNIEnv* env, jclass clazz, jint nativeObject) {
    sp<SurfaceControl> ctrl(reinterpret_cast<SurfaceControl *>(nativeObject));
    ctrl->decStrong(surfaceObj);
    ctrl->decStrong(clazz);
}

static void nativeDestroy(JNIEnv* env, jobject surfaceObj, jint nativeObject) {
static void nativeDestroy(JNIEnv* env, jclass clazz, jint nativeObject) {
    sp<SurfaceControl> ctrl(reinterpret_cast<SurfaceControl *>(nativeObject));
    ctrl->clear();
    ctrl->decStrong(surfaceObj);
    ctrl->decStrong(clazz);
}

static inline SkBitmap::Config convertPixelFormat(PixelFormat format) {
@@ -210,7 +210,7 @@ static void nativeSetAnimationTransaction(JNIEnv* env, jclass clazz) {
    SurfaceComposerClient::setAnimationTransaction();
}

static void nativeSetLayer(JNIEnv* env, jobject surfaceObj, jint nativeObject, jint zorder) {
static void nativeSetLayer(JNIEnv* env, jclass clazz, jint nativeObject, jint zorder) {
    SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
    status_t err = ctrl->setLayer(zorder);
    if (err < 0 && err != NO_INIT) {
@@ -218,7 +218,7 @@ static void nativeSetLayer(JNIEnv* env, jobject surfaceObj, jint nativeObject, j
    }
}

static void nativeSetPosition(JNIEnv* env, jobject surfaceObj, jint nativeObject, jfloat x, jfloat y) {
static void nativeSetPosition(JNIEnv* env, jclass clazz, jint nativeObject, jfloat x, jfloat y) {
    SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
    status_t err = ctrl->setPosition(x, y);
    if (err < 0 && err != NO_INIT) {
@@ -226,7 +226,7 @@ static void nativeSetPosition(JNIEnv* env, jobject surfaceObj, jint nativeObject
    }
}

static void nativeSetSize(JNIEnv* env, jobject surfaceObj, jint nativeObject, jint w, jint h) {
static void nativeSetSize(JNIEnv* env, jclass clazz, jint nativeObject, jint w, jint h) {
    SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
    status_t err = ctrl->setSize(w, h);
    if (err < 0 && err != NO_INIT) {
@@ -234,7 +234,7 @@ static void nativeSetSize(JNIEnv* env, jobject surfaceObj, jint nativeObject, ji
    }
}

static void nativeSetFlags(JNIEnv* env, jobject surfaceObj, jint nativeObject, jint flags, jint mask) {
static void nativeSetFlags(JNIEnv* env, jclass clazz, jint nativeObject, jint flags, jint mask) {
    SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
    status_t err = ctrl->setFlags(flags, mask);
    if (err < 0 && err != NO_INIT) {
@@ -242,7 +242,7 @@ static void nativeSetFlags(JNIEnv* env, jobject surfaceObj, jint nativeObject, j
    }
}

static void nativeSetTransparentRegionHint(JNIEnv* env, jobject surfaceObj, jint nativeObject, jobject regionObj) {
static void nativeSetTransparentRegionHint(JNIEnv* env, jclass clazz, jint nativeObject, jobject regionObj) {
    SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
    SkRegion* region = android_graphics_Region_getSkRegion(env, regionObj);
    if (!region) {
@@ -267,7 +267,7 @@ static void nativeSetTransparentRegionHint(JNIEnv* env, jobject surfaceObj, jint
    }
}

static void nativeSetAlpha(JNIEnv* env, jobject surfaceObj, jint nativeObject, jfloat alpha) {
static void nativeSetAlpha(JNIEnv* env, jclass clazz, jint nativeObject, jfloat alpha) {
    SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
    status_t err = ctrl->setAlpha(alpha);
    if (err < 0 && err != NO_INIT) {
@@ -275,7 +275,7 @@ static void nativeSetAlpha(JNIEnv* env, jobject surfaceObj, jint nativeObject, j
    }
}

static void nativeSetMatrix(JNIEnv* env, jobject surfaceObj, jint nativeObject,
static void nativeSetMatrix(JNIEnv* env, jclass clazz, jint nativeObject,
        jfloat dsdx, jfloat dtdx, jfloat dsdy, jfloat dtdy) {
    SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
    status_t err = ctrl->setMatrix(dsdx, dtdx, dsdy, dtdy);
@@ -284,7 +284,7 @@ static void nativeSetMatrix(JNIEnv* env, jobject surfaceObj, jint nativeObject,
    }
}

static void nativeSetWindowCrop(JNIEnv* env, jobject surfaceObj, jint nativeObject,
static void nativeSetWindowCrop(JNIEnv* env, jclass clazz, jint nativeObject,
        jint l, jint t, jint r, jint b) {
    SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
    Rect crop(l, t, r, b);
@@ -294,7 +294,7 @@ static void nativeSetWindowCrop(JNIEnv* env, jobject surfaceObj, jint nativeObje
    }
}

static void nativeSetLayerStack(JNIEnv* env, jobject surfaceObj, jint nativeObject, jint layerStack) {
static void nativeSetLayerStack(JNIEnv* env, jclass clazz, jint nativeObject, jint layerStack) {
    SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
    status_t err = ctrl->setLayerStack(layerStack);
    if (err < 0 && err != NO_INIT) {
Loading