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

Commit fcf7e25f authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add ANativeWindow_setBuffersTransform"

parents 05270f4d 09932ece
Loading
Loading
Loading
Loading
+17 −0
Original line number Original line Diff line number Diff line
@@ -69,3 +69,20 @@ int32_t ANativeWindow_lock(ANativeWindow* window, ANativeWindow_Buffer* outBuffe
int32_t ANativeWindow_unlockAndPost(ANativeWindow* window) {
int32_t ANativeWindow_unlockAndPost(ANativeWindow* window) {
    return window->perform(window, NATIVE_WINDOW_UNLOCK_AND_POST);
    return window->perform(window, NATIVE_WINDOW_UNLOCK_AND_POST);
}
}

int32_t ANativeWindow_setBuffersTransform(ANativeWindow* window, int32_t transform) {
    static_assert(ANATIVEWINDOW_TRANSFORM_MIRROR_HORIZONTAL == NATIVE_WINDOW_TRANSFORM_FLIP_H);
    static_assert(ANATIVEWINDOW_TRANSFORM_MIRROR_VERTICAL == NATIVE_WINDOW_TRANSFORM_FLIP_V);
    static_assert(ANATIVEWINDOW_TRANSFORM_ROTATE_90 == NATIVE_WINDOW_TRANSFORM_ROT_90);

    constexpr int32_t kAllTransformBits =
            ANATIVEWINDOW_TRANSFORM_MIRROR_HORIZONTAL |
            ANATIVEWINDOW_TRANSFORM_MIRROR_VERTICAL |
            ANATIVEWINDOW_TRANSFORM_ROTATE_90;
    if (!window || !getWindowProp(window, NATIVE_WINDOW_IS_VALID))
        return -EINVAL;
    if ((transform & ~kAllTransformBits) != 0)
        return -EINVAL;

    return native_window_set_buffers_transform(window, transform);
}
+4 −0
Original line number Original line Diff line number Diff line
@@ -34,6 +34,10 @@ cc_library {


    clang: true,
    clang: true,


    cppflags: [
        "-std=c++1z"
    ],

    srcs: [
    srcs: [
        "AHardwareBuffer.cpp",
        "AHardwareBuffer.cpp",
        "ANativeWindow.cpp",
        "ANativeWindow.cpp",
+32 −0
Original line number Original line Diff line number Diff line
@@ -50,6 +50,25 @@ enum {
    WINDOW_FORMAT_RGB_565            = AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM,
    WINDOW_FORMAT_RGB_565            = AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM,
};
};


/**
 * Transforms that can be applied to buffers as they are displayed to a window.
 *
 * Supported transforms are any combination of horizontal mirror, vertical
 * mirror, and clockwise 90 degree rotation, in that order. Rotations of 180
 * and 270 degrees are made up of those basic transforms.
 */
enum ANativeWindowTransform {
    ANATIVEWINDOW_TRANSFORM_IDENTITY            = 0x00,
    ANATIVEWINDOW_TRANSFORM_MIRROR_HORIZONTAL   = 0x01,
    ANATIVEWINDOW_TRANSFORM_MIRROR_VERTICAL     = 0x02,
    ANATIVEWINDOW_TRANSFORM_ROTATE_90           = 0x04,

    ANATIVEWINDOW_TRANSFORM_ROTATE_180          = ANATIVEWINDOW_TRANSFORM_MIRROR_HORIZONTAL |
                                                  ANATIVEWINDOW_TRANSFORM_MIRROR_VERTICAL,
    ANATIVEWINDOW_TRANSFORM_ROTATE_270          = ANATIVEWINDOW_TRANSFORM_ROTATE_180 |
                                                  ANATIVEWINDOW_TRANSFORM_ROTATE_90,
};

struct ANativeWindow;
struct ANativeWindow;
/**
/**
 * {@link ANativeWindow} is opaque type that provides access to a native window.
 * {@link ANativeWindow} is opaque type that provides access to a native window.
@@ -147,6 +166,19 @@ int32_t ANativeWindow_lock(ANativeWindow* window, ANativeWindow_Buffer* outBuffe
 */
 */
int32_t ANativeWindow_unlockAndPost(ANativeWindow* window);
int32_t ANativeWindow_unlockAndPost(ANativeWindow* window);


#if __ANDROID_API__ >= __ANDROID_API_O__

/**
 * Set a transform that will be applied to future buffers posted to the window.
 *
 * @param transform combination of {@link ANativeWindowTransform} flags
 * @return 0 if successful
 * @return -EINVAL if @param transform is invalid
 */
int32_t ANativeWindow_setBuffersTransform(ANativeWindow* window, int32_t transform);

#endif // __ANDROID_API__ >= __ANDROID_API_O__

#ifdef __cplusplus
#ifdef __cplusplus
};
};
#endif
#endif
+1 −0
Original line number Original line Diff line number Diff line
@@ -20,6 +20,7 @@ LIBNATIVEWINDOW {
    ANativeWindow_lock;
    ANativeWindow_lock;
    ANativeWindow_release;
    ANativeWindow_release;
    ANativeWindow_setBuffersGeometry;
    ANativeWindow_setBuffersGeometry;
    ANativeWindow_setBuffersTransform;
    ANativeWindow_unlockAndPost;
    ANativeWindow_unlockAndPost;
  local:
  local:
    *;
    *;