diff options
-rw-r--r-- | libs/hwui/renderthread/ReliableSurface.cpp | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/libs/hwui/renderthread/ReliableSurface.cpp b/libs/hwui/renderthread/ReliableSurface.cpp index 64d38b9ef466..01e8010444c0 100644 --- a/libs/hwui/renderthread/ReliableSurface.cpp +++ b/libs/hwui/renderthread/ReliableSurface.cpp @@ -149,9 +149,25 @@ ANativeWindowBuffer* ReliableSurface::acquireFallbackBuffer(int error) { return AHardwareBuffer_to_ANativeWindowBuffer(mScratchBuffer.get()); } + int width = -1; + int result = mWindow->query(mWindow, NATIVE_WINDOW_DEFAULT_WIDTH, &width); + if (result != OK || width < 0) { + ALOGW("Failed to query window default width: %s (%d) value=%d", strerror(-result), result, + width); + width = 1; + } + + int height = -1; + result = mWindow->query(mWindow, NATIVE_WINDOW_DEFAULT_HEIGHT, &height); + if (result != OK || height < 0) { + ALOGW("Failed to query window default height: %s (%d) value=%d", strerror(-result), result, + height); + height = 1; + } + AHardwareBuffer_Desc desc = AHardwareBuffer_Desc{ - .width = 1, - .height = 1, + .width = static_cast<uint32_t>(width), + .height = static_cast<uint32_t>(height), .layers = 1, .format = mFormat, .usage = mUsage, @@ -160,9 +176,9 @@ ANativeWindowBuffer* ReliableSurface::acquireFallbackBuffer(int error) { }; AHardwareBuffer* newBuffer; - int result = AHardwareBuffer_allocate(&desc, &newBuffer); + result = AHardwareBuffer_allocate(&desc, &newBuffer); - if (result != NO_ERROR) { + if (result != OK) { // Allocate failed, that sucks ALOGW("Failed to allocate scratch buffer, error=%d", result); return nullptr; |