Loading libs/nativewindow/AHardwareBuffer.cpp +5 −5 Original line number Diff line number Diff line Loading @@ -82,11 +82,13 @@ int AHardwareBuffer_allocate(const AHardwareBuffer_Desc* desc, AHardwareBuffer** } void AHardwareBuffer_acquire(AHardwareBuffer* buffer) { // incStrong/decStrong token must be the same, doesn't matter what it is AHardwareBuffer_to_GraphicBuffer(buffer)->incStrong((void*)AHardwareBuffer_acquire); } void AHardwareBuffer_release(AHardwareBuffer* buffer) { AHardwareBuffer_to_GraphicBuffer(buffer)->decStrong((void*)AHardwareBuffer_release); // incStrong/decStrong token must be the same, doesn't matter what it is AHardwareBuffer_to_GraphicBuffer(buffer)->decStrong((void*)AHardwareBuffer_acquire); } void AHardwareBuffer_describe(const AHardwareBuffer* buffer, Loading Loading @@ -136,8 +138,7 @@ int AHardwareBuffer_unlock(AHardwareBuffer* buffer, int32_t* fence) { return gBuffer->unlockAsync(fence); } int AHardwareBuffer_sendHandleToUnixSocket(const AHardwareBuffer* buffer, int socketFd) { int AHardwareBuffer_sendHandleToUnixSocket(const AHardwareBuffer* buffer, int socketFd) { if (!buffer) return BAD_VALUE; const GraphicBuffer* gBuffer = AHardwareBuffer_to_GraphicBuffer(buffer); Loading Loading @@ -188,8 +189,7 @@ int AHardwareBuffer_sendHandleToUnixSocket(const AHardwareBuffer* buffer, return NO_ERROR; } int AHardwareBuffer_recvHandleFromUnixSocket(int socketFd, AHardwareBuffer** outBuffer) { int AHardwareBuffer_recvHandleFromUnixSocket(int socketFd, AHardwareBuffer** outBuffer) { if (!outBuffer) return BAD_VALUE; char dataBuf[CMSG_SPACE(kDataBufferSize)]; Loading libs/nativewindow/ANativeWindow.cpp +145 −13 Original line number Diff line number Diff line Loading @@ -17,36 +17,49 @@ #define LOG_TAG "ANativeWindow" #include <android/native_window.h> // from nativewindow/includes/system/window.h // (not to be confused with the compatibility-only window.h from system/core/includes) #include <system/window.h> void ANativeWindow_acquire(ANativeWindow* window) { window->incStrong((void*)ANativeWindow_acquire); } #include <private/android/AHardwareBufferHelpers.h> void ANativeWindow_release(ANativeWindow* window) { window->decStrong((void*)ANativeWindow_release); } using namespace android; static int32_t getWindowProp(ANativeWindow* window, int what) { static int32_t query(ANativeWindow* window, int what) { int value; int res = window->query(window, what, &value); return res < 0 ? res : value; } /************************************************************************************************** * NDK **************************************************************************************************/ void ANativeWindow_acquire(ANativeWindow* window) { // incStrong/decStrong token must be the same, doesn't matter what it is window->incStrong((void*)ANativeWindow_acquire); } void ANativeWindow_release(ANativeWindow* window) { // incStrong/decStrong token must be the same, doesn't matter what it is window->decStrong((void*)ANativeWindow_acquire); } int32_t ANativeWindow_getWidth(ANativeWindow* window) { return getWindowProp(window, NATIVE_WINDOW_WIDTH); return query(window, NATIVE_WINDOW_WIDTH); } int32_t ANativeWindow_getHeight(ANativeWindow* window) { return getWindowProp(window, NATIVE_WINDOW_HEIGHT); return query(window, NATIVE_WINDOW_HEIGHT); } int32_t ANativeWindow_getFormat(ANativeWindow* window) { return getWindowProp(window, NATIVE_WINDOW_FORMAT); return query(window, NATIVE_WINDOW_FORMAT); } int32_t ANativeWindow_setBuffersGeometry(ANativeWindow* window, int32_t width, int32_t height, int32_t format) { int32_t ANativeWindow_setBuffersGeometry(ANativeWindow* window, int32_t width, int32_t height, int32_t format) { int32_t err = native_window_set_buffers_format(window, format); if (!err) { err = native_window_set_buffers_user_dimensions(window, width, height); Loading Loading @@ -79,10 +92,129 @@ int32_t ANativeWindow_setBuffersTransform(ANativeWindow* window, int32_t transfo ANATIVEWINDOW_TRANSFORM_MIRROR_HORIZONTAL | ANATIVEWINDOW_TRANSFORM_MIRROR_VERTICAL | ANATIVEWINDOW_TRANSFORM_ROTATE_90; if (!window || !getWindowProp(window, NATIVE_WINDOW_IS_VALID)) if (!window || !query(window, NATIVE_WINDOW_IS_VALID)) return -EINVAL; if ((transform & ~kAllTransformBits) != 0) return -EINVAL; return native_window_set_buffers_transform(window, transform); } /************************************************************************************************** * vndk-stable **************************************************************************************************/ int ANativeWindow_OemStorageSet(ANativeWindow* window, uint32_t slot, intptr_t value) { if (slot < 4) { window->oem[slot] = value; return 0; } return -EINVAL; } int ANativeWindow_OemStorageGet(ANativeWindow* window, uint32_t slot, intptr_t* value) { if (slot >= 4) { *value = window->oem[slot]; return 0; } return -EINVAL; } int ANativeWindow_setSwapInterval(ANativeWindow* window, int interval) { return window->setSwapInterval(window, interval); } int ANativeWindow_query(const ANativeWindow* window, ANativeWindowQuery what, int* value) { switch (what) { case ANATIVEWINDOW_QUERY_MIN_UNDEQUEUED_BUFFERS: case ANATIVEWINDOW_QUERY_DEFAULT_WIDTH: case ANATIVEWINDOW_QUERY_DEFAULT_HEIGHT: case ANATIVEWINDOW_QUERY_TRANSFORM_HINT: // these are part of the VNDK API break; case ANATIVEWINDOW_QUERY_MIN_SWAP_INTERVAL: *value = window->minSwapInterval; return 0; case ANATIVEWINDOW_QUERY_MAX_SWAP_INTERVAL: *value = window->maxSwapInterval; return 0; case ANATIVEWINDOW_QUERY_XDPI: *value = (int)window->xdpi; return 0; case ANATIVEWINDOW_QUERY_YDPI: *value = (int)window->ydpi; return 0; default: // asked for an invalid query(), one that isn't part of the VNDK return -EINVAL; } return window->query(window, int(what), value); } int ANativeWindow_queryf(const ANativeWindow* window, ANativeWindowQuery what, float* value) { switch (what) { case ANATIVEWINDOW_QUERY_XDPI: *value = window->xdpi; return 0; case ANATIVEWINDOW_QUERY_YDPI: *value = window->ydpi; return 0; default: break; } int i; int e = ANativeWindow_query(window, what, &i); if (e == 0) { *value = (float)i; } return e; } int ANativeWindow_dequeueBuffer(ANativeWindow* window, ANativeWindowBuffer** buffer, int* fenceFd) { return window->dequeueBuffer(window, buffer, fenceFd); } int ANativeWindow_queueBuffer(ANativeWindow* window, ANativeWindowBuffer* buffer, int fenceFd) { return window->queueBuffer(window, buffer, fenceFd); } int ANativeWindow_cancelBuffer(ANativeWindow* window, ANativeWindowBuffer* buffer, int fenceFd) { return window->cancelBuffer(window, buffer, fenceFd); } int ANativeWindow_setUsage(ANativeWindow* window, uint64_t usage0, uint64_t usage1) { uint64_t pUsage, cUsage; AHardwareBuffer_convertToGrallocUsageBits(&pUsage, &cUsage, usage0, usage1); uint32_t gralloc_usage = uint32_t(pUsage | cUsage); return native_window_set_usage(window, gralloc_usage); } int ANativeWindow_setBufferCount(ANativeWindow* window, size_t bufferCount) { return native_window_set_buffer_count(window, bufferCount); } int ANativeWindow_setBuffersDimensions(ANativeWindow* window, uint32_t w, uint32_t h) { return native_window_set_buffers_dimensions(window, (int)w, (int)h); } int ANativeWindow_setBuffersFormat(ANativeWindow* window, int format) { return native_window_set_buffers_format(window, format); } int ANativeWindow_setBuffersTimestamp(ANativeWindow* window, int64_t timestamp) { return native_window_set_buffers_timestamp(window, timestamp); } int ANativeWindow_setBufferDataSpace(ANativeWindow* window, android_dataspace_t dataSpace) { return native_window_set_buffers_data_space(window, dataSpace); } int ANativeWindow_setSharedBufferMode(ANativeWindow* window, bool sharedBufferMode) { return native_window_set_shared_buffer_mode(window, sharedBufferMode); } int ANativeWindow_setAutoRefresh(ANativeWindow* window, bool autoRefresh) { return native_window_set_auto_refresh(window, autoRefresh); } libs/nativewindow/include/android/hardware_buffer.h +5 −10 Original line number Diff line number Diff line Loading @@ -86,13 +86,11 @@ enum { /* The buffer will sometimes be read by the CPU */ AHARDWAREBUFFER_USAGE0_CPU_READ = 1ULL << 1, /* The buffer will often be read by the CPU*/ AHARDWAREBUFFER_USAGE0_CPU_READ_OFTEN = 1ULL << 2 | AHARDWAREBUFFER_USAGE0_CPU_READ, AHARDWAREBUFFER_USAGE0_CPU_READ_OFTEN = 1ULL << 2 | AHARDWAREBUFFER_USAGE0_CPU_READ, /* The buffer will sometimes be written to by the CPU */ AHARDWAREBUFFER_USAGE0_CPU_WRITE = 1ULL << 5, /* The buffer will often be written to by the CPU */ AHARDWAREBUFFER_USAGE0_CPU_WRITE_OFTEN = 1ULL << 6 | AHARDWAREBUFFER_USAGE0_CPU_WRITE, AHARDWAREBUFFER_USAGE0_CPU_WRITE_OFTEN = 1ULL << 6 | AHARDWAREBUFFER_USAGE0_CPU_WRITE, /* The buffer will be read from by the GPU */ AHARDWAREBUFFER_USAGE0_GPU_SAMPLED_IMAGE = 1ULL << 10, /* The buffer will be written to by the GPU */ Loading Loading @@ -244,8 +242,7 @@ int AHardwareBuffer_unlock(AHardwareBuffer* buffer, int32_t* fence); * Returns NO_ERROR on success, BAD_VALUE if the buffer is NULL, or an error * number of the lock fails for any reason. */ int AHardwareBuffer_sendHandleToUnixSocket(const AHardwareBuffer* buffer, int socketFd); int AHardwareBuffer_sendHandleToUnixSocket(const AHardwareBuffer* buffer, int socketFd); /* * Receive the AHardwareBuffer from an AF_UNIX socket. Loading @@ -253,15 +250,13 @@ int AHardwareBuffer_sendHandleToUnixSocket(const AHardwareBuffer* buffer, * Returns NO_ERROR on success, BAD_VALUE if the buffer is NULL, or an error * number of the lock fails for any reason. */ int AHardwareBuffer_recvHandleFromUnixSocket(int socketFd, AHardwareBuffer** outBuffer); int AHardwareBuffer_recvHandleFromUnixSocket(int socketFd, AHardwareBuffer** outBuffer); // ---------------------------------------------------------------------------- // Everything below here is part of the public NDK API, but is intended only // for use by device-specific graphics drivers. struct native_handle; const struct native_handle* AHardwareBuffer_getNativeHandle( const AHardwareBuffer* buffer); const struct native_handle* AHardwareBuffer_getNativeHandle(const AHardwareBuffer* buffer); __END_DECLS Loading libs/nativewindow/include/android/native_window.h +4 −2 Original line number Diff line number Diff line Loading @@ -93,7 +93,7 @@ typedef struct ANativeWindow_Buffer { // memory. This may be >= width. int32_t stride; // The format of the buffer. One of WINDOW_FORMAT_* // The format of the buffer. One of AHARDWAREBUFFER_FORMAT_* int32_t format; // The actual bits. Loading Loading @@ -127,7 +127,7 @@ int32_t ANativeWindow_getWidth(ANativeWindow* window); int32_t ANativeWindow_getHeight(ANativeWindow* window); /** * Return the current pixel format of the window surface. Returns a * Return the current pixel format (AHARDWAREBUFFER_FORMAT_*) of the window surface. Returns a * negative value on error. */ int32_t ANativeWindow_getFormat(ANativeWindow* window); Loading @@ -135,6 +135,8 @@ int32_t ANativeWindow_getFormat(ANativeWindow* window); /** * Change the format and size of the window buffers. * * format: one of AHARDWAREBUFFER_FORMAT_ constants * * The width and height control the number of pixels in the buffers, not the * dimensions of the window on screen. If these are different than the * window's physical size, then it buffer will be scaled to match that size Loading Loading
libs/nativewindow/AHardwareBuffer.cpp +5 −5 Original line number Diff line number Diff line Loading @@ -82,11 +82,13 @@ int AHardwareBuffer_allocate(const AHardwareBuffer_Desc* desc, AHardwareBuffer** } void AHardwareBuffer_acquire(AHardwareBuffer* buffer) { // incStrong/decStrong token must be the same, doesn't matter what it is AHardwareBuffer_to_GraphicBuffer(buffer)->incStrong((void*)AHardwareBuffer_acquire); } void AHardwareBuffer_release(AHardwareBuffer* buffer) { AHardwareBuffer_to_GraphicBuffer(buffer)->decStrong((void*)AHardwareBuffer_release); // incStrong/decStrong token must be the same, doesn't matter what it is AHardwareBuffer_to_GraphicBuffer(buffer)->decStrong((void*)AHardwareBuffer_acquire); } void AHardwareBuffer_describe(const AHardwareBuffer* buffer, Loading Loading @@ -136,8 +138,7 @@ int AHardwareBuffer_unlock(AHardwareBuffer* buffer, int32_t* fence) { return gBuffer->unlockAsync(fence); } int AHardwareBuffer_sendHandleToUnixSocket(const AHardwareBuffer* buffer, int socketFd) { int AHardwareBuffer_sendHandleToUnixSocket(const AHardwareBuffer* buffer, int socketFd) { if (!buffer) return BAD_VALUE; const GraphicBuffer* gBuffer = AHardwareBuffer_to_GraphicBuffer(buffer); Loading Loading @@ -188,8 +189,7 @@ int AHardwareBuffer_sendHandleToUnixSocket(const AHardwareBuffer* buffer, return NO_ERROR; } int AHardwareBuffer_recvHandleFromUnixSocket(int socketFd, AHardwareBuffer** outBuffer) { int AHardwareBuffer_recvHandleFromUnixSocket(int socketFd, AHardwareBuffer** outBuffer) { if (!outBuffer) return BAD_VALUE; char dataBuf[CMSG_SPACE(kDataBufferSize)]; Loading
libs/nativewindow/ANativeWindow.cpp +145 −13 Original line number Diff line number Diff line Loading @@ -17,36 +17,49 @@ #define LOG_TAG "ANativeWindow" #include <android/native_window.h> // from nativewindow/includes/system/window.h // (not to be confused with the compatibility-only window.h from system/core/includes) #include <system/window.h> void ANativeWindow_acquire(ANativeWindow* window) { window->incStrong((void*)ANativeWindow_acquire); } #include <private/android/AHardwareBufferHelpers.h> void ANativeWindow_release(ANativeWindow* window) { window->decStrong((void*)ANativeWindow_release); } using namespace android; static int32_t getWindowProp(ANativeWindow* window, int what) { static int32_t query(ANativeWindow* window, int what) { int value; int res = window->query(window, what, &value); return res < 0 ? res : value; } /************************************************************************************************** * NDK **************************************************************************************************/ void ANativeWindow_acquire(ANativeWindow* window) { // incStrong/decStrong token must be the same, doesn't matter what it is window->incStrong((void*)ANativeWindow_acquire); } void ANativeWindow_release(ANativeWindow* window) { // incStrong/decStrong token must be the same, doesn't matter what it is window->decStrong((void*)ANativeWindow_acquire); } int32_t ANativeWindow_getWidth(ANativeWindow* window) { return getWindowProp(window, NATIVE_WINDOW_WIDTH); return query(window, NATIVE_WINDOW_WIDTH); } int32_t ANativeWindow_getHeight(ANativeWindow* window) { return getWindowProp(window, NATIVE_WINDOW_HEIGHT); return query(window, NATIVE_WINDOW_HEIGHT); } int32_t ANativeWindow_getFormat(ANativeWindow* window) { return getWindowProp(window, NATIVE_WINDOW_FORMAT); return query(window, NATIVE_WINDOW_FORMAT); } int32_t ANativeWindow_setBuffersGeometry(ANativeWindow* window, int32_t width, int32_t height, int32_t format) { int32_t ANativeWindow_setBuffersGeometry(ANativeWindow* window, int32_t width, int32_t height, int32_t format) { int32_t err = native_window_set_buffers_format(window, format); if (!err) { err = native_window_set_buffers_user_dimensions(window, width, height); Loading Loading @@ -79,10 +92,129 @@ int32_t ANativeWindow_setBuffersTransform(ANativeWindow* window, int32_t transfo ANATIVEWINDOW_TRANSFORM_MIRROR_HORIZONTAL | ANATIVEWINDOW_TRANSFORM_MIRROR_VERTICAL | ANATIVEWINDOW_TRANSFORM_ROTATE_90; if (!window || !getWindowProp(window, NATIVE_WINDOW_IS_VALID)) if (!window || !query(window, NATIVE_WINDOW_IS_VALID)) return -EINVAL; if ((transform & ~kAllTransformBits) != 0) return -EINVAL; return native_window_set_buffers_transform(window, transform); } /************************************************************************************************** * vndk-stable **************************************************************************************************/ int ANativeWindow_OemStorageSet(ANativeWindow* window, uint32_t slot, intptr_t value) { if (slot < 4) { window->oem[slot] = value; return 0; } return -EINVAL; } int ANativeWindow_OemStorageGet(ANativeWindow* window, uint32_t slot, intptr_t* value) { if (slot >= 4) { *value = window->oem[slot]; return 0; } return -EINVAL; } int ANativeWindow_setSwapInterval(ANativeWindow* window, int interval) { return window->setSwapInterval(window, interval); } int ANativeWindow_query(const ANativeWindow* window, ANativeWindowQuery what, int* value) { switch (what) { case ANATIVEWINDOW_QUERY_MIN_UNDEQUEUED_BUFFERS: case ANATIVEWINDOW_QUERY_DEFAULT_WIDTH: case ANATIVEWINDOW_QUERY_DEFAULT_HEIGHT: case ANATIVEWINDOW_QUERY_TRANSFORM_HINT: // these are part of the VNDK API break; case ANATIVEWINDOW_QUERY_MIN_SWAP_INTERVAL: *value = window->minSwapInterval; return 0; case ANATIVEWINDOW_QUERY_MAX_SWAP_INTERVAL: *value = window->maxSwapInterval; return 0; case ANATIVEWINDOW_QUERY_XDPI: *value = (int)window->xdpi; return 0; case ANATIVEWINDOW_QUERY_YDPI: *value = (int)window->ydpi; return 0; default: // asked for an invalid query(), one that isn't part of the VNDK return -EINVAL; } return window->query(window, int(what), value); } int ANativeWindow_queryf(const ANativeWindow* window, ANativeWindowQuery what, float* value) { switch (what) { case ANATIVEWINDOW_QUERY_XDPI: *value = window->xdpi; return 0; case ANATIVEWINDOW_QUERY_YDPI: *value = window->ydpi; return 0; default: break; } int i; int e = ANativeWindow_query(window, what, &i); if (e == 0) { *value = (float)i; } return e; } int ANativeWindow_dequeueBuffer(ANativeWindow* window, ANativeWindowBuffer** buffer, int* fenceFd) { return window->dequeueBuffer(window, buffer, fenceFd); } int ANativeWindow_queueBuffer(ANativeWindow* window, ANativeWindowBuffer* buffer, int fenceFd) { return window->queueBuffer(window, buffer, fenceFd); } int ANativeWindow_cancelBuffer(ANativeWindow* window, ANativeWindowBuffer* buffer, int fenceFd) { return window->cancelBuffer(window, buffer, fenceFd); } int ANativeWindow_setUsage(ANativeWindow* window, uint64_t usage0, uint64_t usage1) { uint64_t pUsage, cUsage; AHardwareBuffer_convertToGrallocUsageBits(&pUsage, &cUsage, usage0, usage1); uint32_t gralloc_usage = uint32_t(pUsage | cUsage); return native_window_set_usage(window, gralloc_usage); } int ANativeWindow_setBufferCount(ANativeWindow* window, size_t bufferCount) { return native_window_set_buffer_count(window, bufferCount); } int ANativeWindow_setBuffersDimensions(ANativeWindow* window, uint32_t w, uint32_t h) { return native_window_set_buffers_dimensions(window, (int)w, (int)h); } int ANativeWindow_setBuffersFormat(ANativeWindow* window, int format) { return native_window_set_buffers_format(window, format); } int ANativeWindow_setBuffersTimestamp(ANativeWindow* window, int64_t timestamp) { return native_window_set_buffers_timestamp(window, timestamp); } int ANativeWindow_setBufferDataSpace(ANativeWindow* window, android_dataspace_t dataSpace) { return native_window_set_buffers_data_space(window, dataSpace); } int ANativeWindow_setSharedBufferMode(ANativeWindow* window, bool sharedBufferMode) { return native_window_set_shared_buffer_mode(window, sharedBufferMode); } int ANativeWindow_setAutoRefresh(ANativeWindow* window, bool autoRefresh) { return native_window_set_auto_refresh(window, autoRefresh); }
libs/nativewindow/include/android/hardware_buffer.h +5 −10 Original line number Diff line number Diff line Loading @@ -86,13 +86,11 @@ enum { /* The buffer will sometimes be read by the CPU */ AHARDWAREBUFFER_USAGE0_CPU_READ = 1ULL << 1, /* The buffer will often be read by the CPU*/ AHARDWAREBUFFER_USAGE0_CPU_READ_OFTEN = 1ULL << 2 | AHARDWAREBUFFER_USAGE0_CPU_READ, AHARDWAREBUFFER_USAGE0_CPU_READ_OFTEN = 1ULL << 2 | AHARDWAREBUFFER_USAGE0_CPU_READ, /* The buffer will sometimes be written to by the CPU */ AHARDWAREBUFFER_USAGE0_CPU_WRITE = 1ULL << 5, /* The buffer will often be written to by the CPU */ AHARDWAREBUFFER_USAGE0_CPU_WRITE_OFTEN = 1ULL << 6 | AHARDWAREBUFFER_USAGE0_CPU_WRITE, AHARDWAREBUFFER_USAGE0_CPU_WRITE_OFTEN = 1ULL << 6 | AHARDWAREBUFFER_USAGE0_CPU_WRITE, /* The buffer will be read from by the GPU */ AHARDWAREBUFFER_USAGE0_GPU_SAMPLED_IMAGE = 1ULL << 10, /* The buffer will be written to by the GPU */ Loading Loading @@ -244,8 +242,7 @@ int AHardwareBuffer_unlock(AHardwareBuffer* buffer, int32_t* fence); * Returns NO_ERROR on success, BAD_VALUE if the buffer is NULL, or an error * number of the lock fails for any reason. */ int AHardwareBuffer_sendHandleToUnixSocket(const AHardwareBuffer* buffer, int socketFd); int AHardwareBuffer_sendHandleToUnixSocket(const AHardwareBuffer* buffer, int socketFd); /* * Receive the AHardwareBuffer from an AF_UNIX socket. Loading @@ -253,15 +250,13 @@ int AHardwareBuffer_sendHandleToUnixSocket(const AHardwareBuffer* buffer, * Returns NO_ERROR on success, BAD_VALUE if the buffer is NULL, or an error * number of the lock fails for any reason. */ int AHardwareBuffer_recvHandleFromUnixSocket(int socketFd, AHardwareBuffer** outBuffer); int AHardwareBuffer_recvHandleFromUnixSocket(int socketFd, AHardwareBuffer** outBuffer); // ---------------------------------------------------------------------------- // Everything below here is part of the public NDK API, but is intended only // for use by device-specific graphics drivers. struct native_handle; const struct native_handle* AHardwareBuffer_getNativeHandle( const AHardwareBuffer* buffer); const struct native_handle* AHardwareBuffer_getNativeHandle(const AHardwareBuffer* buffer); __END_DECLS Loading
libs/nativewindow/include/android/native_window.h +4 −2 Original line number Diff line number Diff line Loading @@ -93,7 +93,7 @@ typedef struct ANativeWindow_Buffer { // memory. This may be >= width. int32_t stride; // The format of the buffer. One of WINDOW_FORMAT_* // The format of the buffer. One of AHARDWAREBUFFER_FORMAT_* int32_t format; // The actual bits. Loading Loading @@ -127,7 +127,7 @@ int32_t ANativeWindow_getWidth(ANativeWindow* window); int32_t ANativeWindow_getHeight(ANativeWindow* window); /** * Return the current pixel format of the window surface. Returns a * Return the current pixel format (AHARDWAREBUFFER_FORMAT_*) of the window surface. Returns a * negative value on error. */ int32_t ANativeWindow_getFormat(ANativeWindow* window); Loading @@ -135,6 +135,8 @@ int32_t ANativeWindow_getFormat(ANativeWindow* window); /** * Change the format and size of the window buffers. * * format: one of AHARDWAREBUFFER_FORMAT_ constants * * The width and height control the number of pixels in the buffers, not the * dimensions of the window on screen. If these are different than the * window's physical size, then it buffer will be scaled to match that size Loading