Loading cmds/dumpstate/dumpstate.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -1558,6 +1558,13 @@ static void DumpstateLimitedOnly() { RunDumpsys("DUMPSYS CONNECTIVITY REQUESTS", {"connectivity", "requests"}, CommandOptions::WithTimeout(90).Build(), SEC_TO_MSEC(10)); printf("========================================================\n"); printf("== Networking Policy\n"); printf("========================================================\n"); RunDumpsys("DUMPSYS NETWORK POLICY", {"netpolicy"}, CommandOptions::WithTimeout(90).Build(), SEC_TO_MSEC(10)); printf("========================================================\n"); printf("== Dropbox crashes\n"); printf("========================================================\n"); Loading libs/bufferstreams/examples/app/java/com/android/graphics/bufferstreamsdemoapp/BufferDemosAppBar.kt +5 −6 Original line number Diff line number Diff line package com.android.graphics.bufferstreamsdemoapp import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme Loading Loading @@ -29,10 +27,11 @@ fun BufferDemosAppBar( navigationIcon = { if (canNavigateBack) { IconButton(onClick = navigateUp) { Icon( imageVector = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = stringResource(R.string.back_button) ) // b/355293776 // Icon( // imageVector = Icons.AutoMirrored.Filled.ArrowBack, // contentDescription = stringResource(R.string.back_button) // ) } } } Loading libs/gui/BufferItemConsumer.cpp +28 −4 Original line number Diff line number Diff line Loading @@ -21,8 +21,11 @@ #include <inttypes.h> #include <com_android_graphics_libgui_flags.h> #include <gui/BufferItem.h> #include <gui/BufferItemConsumer.h> #include <ui/BufferQueueDefs.h> #include <ui/GraphicBuffer.h> #define BI_LOGV(x, ...) ALOGV("[%s] " x, mName.c_str(), ##__VA_ARGS__) // #define BI_LOGD(x, ...) ALOGD("[%s] " x, mName.c_str(), ##__VA_ARGS__) Loading Loading @@ -87,17 +90,38 @@ status_t BufferItemConsumer::acquireBuffer(BufferItem *item, status_t BufferItemConsumer::releaseBuffer(const BufferItem &item, const sp<Fence>& releaseFence) { status_t err; Mutex::Autolock _l(mMutex); return releaseBufferSlotLocked(item.mSlot, item.mGraphicBuffer, releaseFence); } #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) status_t BufferItemConsumer::releaseBuffer(const sp<GraphicBuffer>& buffer, const sp<Fence>& releaseFence) { Mutex::Autolock _l(mMutex); err = addReleaseFenceLocked(item.mSlot, item.mGraphicBuffer, releaseFence); if (buffer == nullptr) { return BAD_VALUE; } int slotIndex = getSlotForBufferLocked(buffer); if (slotIndex == INVALID_BUFFER_SLOT) { return BAD_VALUE; } return releaseBufferSlotLocked(slotIndex, buffer, releaseFence); } #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) status_t BufferItemConsumer::releaseBufferSlotLocked(int slotIndex, const sp<GraphicBuffer>& buffer, const sp<Fence>& releaseFence) { status_t err; err = addReleaseFenceLocked(slotIndex, buffer, releaseFence); if (err != OK) { BI_LOGE("Failed to addReleaseFenceLocked"); } err = releaseBufferLocked(item.mSlot, item.mGraphicBuffer, EGL_NO_DISPLAY, EGL_NO_SYNC_KHR); err = releaseBufferLocked(slotIndex, buffer, EGL_NO_DISPLAY, EGL_NO_SYNC_KHR); if (err != OK && err != IGraphicBufferConsumer::STALE_BUFFER_SLOT) { BI_LOGE("Failed to release buffer: %s (%d)", strerror(-err), err); Loading libs/gui/ConsumerBase.cpp +53 −7 Original line number Diff line number Diff line Loading @@ -30,9 +30,10 @@ #include <cutils/atomic.h> #include <gui/BufferItem.h> #include <gui/ConsumerBase.h> #include <gui/ISurfaceComposer.h> #include <gui/SurfaceComposerClient.h> #include <gui/ConsumerBase.h> #include <ui/BufferQueueDefs.h> #include <private/gui/ComposerService.h> Loading @@ -40,6 +41,8 @@ #include <utils/String8.h> #include <utils/Trace.h> #include <com_android_graphics_libgui_flags.h> // Macros for including the ConsumerBase name in log messages #define CB_LOGV(x, ...) ALOGV("[%s] " x, mName.c_str(), ##__VA_ARGS__) // #define CB_LOGD(x, ...) ALOGD("[%s] " x, mName.c_str(), ##__VA_ARGS__) Loading Loading @@ -96,6 +99,35 @@ void ConsumerBase::onLastStrongRef(const void* id __attribute__((unused))) { abandon(); } int ConsumerBase::getSlotForBufferLocked(const sp<GraphicBuffer>& buffer) { if (!buffer) { return BufferQueue::INVALID_BUFFER_SLOT; } uint64_t id = buffer->getId(); for (int i = 0; i < BufferQueueDefs::NUM_BUFFER_SLOTS; i++) { auto& slot = mSlots[i]; if (slot.mGraphicBuffer && slot.mGraphicBuffer->getId() == id) { return i; } } return BufferQueue::INVALID_BUFFER_SLOT; } status_t ConsumerBase::detachBufferLocked(int slotIndex) { status_t result = mConsumer->detachBuffer(slotIndex); if (result != NO_ERROR) { CB_LOGE("Failed to detach buffer: %d", result); return result; } freeBufferLocked(slotIndex); return result; } void ConsumerBase::freeBufferLocked(int slotIndex) { CB_LOGV("freeBufferLocked: slotIndex=%d", slotIndex); mSlots[slotIndex].mGraphicBuffer = nullptr; Loading Loading @@ -252,16 +284,30 @@ status_t ConsumerBase::detachBuffer(int slot) { return NO_INIT; } status_t result = mConsumer->detachBuffer(slot); if (result != NO_ERROR) { CB_LOGE("Failed to detach buffer: %d", result); return result; return detachBufferLocked(slot); } freeBufferLocked(slot); #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) status_t ConsumerBase::detachBuffer(const sp<GraphicBuffer>& buffer) { CB_LOGV("detachBuffer"); Mutex::Autolock lock(mMutex); return result; if (mAbandoned) { CB_LOGE("detachBuffer: ConsumerBase is abandoned!"); return NO_INIT; } if (buffer == nullptr) { return BAD_VALUE; } int slotIndex = getSlotForBufferLocked(buffer); if (slotIndex == BufferQueue::INVALID_BUFFER_SLOT) { return BAD_VALUE; } return detachBufferLocked(slotIndex); } #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) status_t ConsumerBase::setDefaultBufferSize(uint32_t width, uint32_t height) { Mutex::Autolock _l(mMutex); Loading libs/gui/include/gui/BufferItemConsumer.h +12 −2 Original line number Diff line number Diff line Loading @@ -17,13 +17,15 @@ #ifndef ANDROID_GUI_BUFFERITEMCONSUMER_H #define ANDROID_GUI_BUFFERITEMCONSUMER_H #include <gui/ConsumerBase.h> #include <com_android_graphics_libgui_flags.h> #include <gui/BufferQueue.h> #include <gui/ConsumerBase.h> #define ANDROID_GRAPHICS_BUFFERITEMCONSUMER_JNI_ID "mBufferItemConsumer" namespace android { class GraphicBuffer; class String8; /** Loading Loading @@ -85,7 +87,15 @@ class BufferItemConsumer: public ConsumerBase status_t releaseBuffer(const BufferItem &item, const sp<Fence>& releaseFence = Fence::NO_FENCE); #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) status_t releaseBuffer(const sp<GraphicBuffer>& buffer, const sp<Fence>& releaseFence = Fence::NO_FENCE); #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) private: status_t releaseBufferSlotLocked(int slotIndex, const sp<GraphicBuffer>& buffer, const sp<Fence>& releaseFence); void freeBufferLocked(int slotIndex) override; // mBufferFreedListener is the listener object that will be called when Loading Loading
cmds/dumpstate/dumpstate.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -1558,6 +1558,13 @@ static void DumpstateLimitedOnly() { RunDumpsys("DUMPSYS CONNECTIVITY REQUESTS", {"connectivity", "requests"}, CommandOptions::WithTimeout(90).Build(), SEC_TO_MSEC(10)); printf("========================================================\n"); printf("== Networking Policy\n"); printf("========================================================\n"); RunDumpsys("DUMPSYS NETWORK POLICY", {"netpolicy"}, CommandOptions::WithTimeout(90).Build(), SEC_TO_MSEC(10)); printf("========================================================\n"); printf("== Dropbox crashes\n"); printf("========================================================\n"); Loading
libs/bufferstreams/examples/app/java/com/android/graphics/bufferstreamsdemoapp/BufferDemosAppBar.kt +5 −6 Original line number Diff line number Diff line package com.android.graphics.bufferstreamsdemoapp import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme Loading Loading @@ -29,10 +27,11 @@ fun BufferDemosAppBar( navigationIcon = { if (canNavigateBack) { IconButton(onClick = navigateUp) { Icon( imageVector = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = stringResource(R.string.back_button) ) // b/355293776 // Icon( // imageVector = Icons.AutoMirrored.Filled.ArrowBack, // contentDescription = stringResource(R.string.back_button) // ) } } } Loading
libs/gui/BufferItemConsumer.cpp +28 −4 Original line number Diff line number Diff line Loading @@ -21,8 +21,11 @@ #include <inttypes.h> #include <com_android_graphics_libgui_flags.h> #include <gui/BufferItem.h> #include <gui/BufferItemConsumer.h> #include <ui/BufferQueueDefs.h> #include <ui/GraphicBuffer.h> #define BI_LOGV(x, ...) ALOGV("[%s] " x, mName.c_str(), ##__VA_ARGS__) // #define BI_LOGD(x, ...) ALOGD("[%s] " x, mName.c_str(), ##__VA_ARGS__) Loading Loading @@ -87,17 +90,38 @@ status_t BufferItemConsumer::acquireBuffer(BufferItem *item, status_t BufferItemConsumer::releaseBuffer(const BufferItem &item, const sp<Fence>& releaseFence) { status_t err; Mutex::Autolock _l(mMutex); return releaseBufferSlotLocked(item.mSlot, item.mGraphicBuffer, releaseFence); } #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) status_t BufferItemConsumer::releaseBuffer(const sp<GraphicBuffer>& buffer, const sp<Fence>& releaseFence) { Mutex::Autolock _l(mMutex); err = addReleaseFenceLocked(item.mSlot, item.mGraphicBuffer, releaseFence); if (buffer == nullptr) { return BAD_VALUE; } int slotIndex = getSlotForBufferLocked(buffer); if (slotIndex == INVALID_BUFFER_SLOT) { return BAD_VALUE; } return releaseBufferSlotLocked(slotIndex, buffer, releaseFence); } #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) status_t BufferItemConsumer::releaseBufferSlotLocked(int slotIndex, const sp<GraphicBuffer>& buffer, const sp<Fence>& releaseFence) { status_t err; err = addReleaseFenceLocked(slotIndex, buffer, releaseFence); if (err != OK) { BI_LOGE("Failed to addReleaseFenceLocked"); } err = releaseBufferLocked(item.mSlot, item.mGraphicBuffer, EGL_NO_DISPLAY, EGL_NO_SYNC_KHR); err = releaseBufferLocked(slotIndex, buffer, EGL_NO_DISPLAY, EGL_NO_SYNC_KHR); if (err != OK && err != IGraphicBufferConsumer::STALE_BUFFER_SLOT) { BI_LOGE("Failed to release buffer: %s (%d)", strerror(-err), err); Loading
libs/gui/ConsumerBase.cpp +53 −7 Original line number Diff line number Diff line Loading @@ -30,9 +30,10 @@ #include <cutils/atomic.h> #include <gui/BufferItem.h> #include <gui/ConsumerBase.h> #include <gui/ISurfaceComposer.h> #include <gui/SurfaceComposerClient.h> #include <gui/ConsumerBase.h> #include <ui/BufferQueueDefs.h> #include <private/gui/ComposerService.h> Loading @@ -40,6 +41,8 @@ #include <utils/String8.h> #include <utils/Trace.h> #include <com_android_graphics_libgui_flags.h> // Macros for including the ConsumerBase name in log messages #define CB_LOGV(x, ...) ALOGV("[%s] " x, mName.c_str(), ##__VA_ARGS__) // #define CB_LOGD(x, ...) ALOGD("[%s] " x, mName.c_str(), ##__VA_ARGS__) Loading Loading @@ -96,6 +99,35 @@ void ConsumerBase::onLastStrongRef(const void* id __attribute__((unused))) { abandon(); } int ConsumerBase::getSlotForBufferLocked(const sp<GraphicBuffer>& buffer) { if (!buffer) { return BufferQueue::INVALID_BUFFER_SLOT; } uint64_t id = buffer->getId(); for (int i = 0; i < BufferQueueDefs::NUM_BUFFER_SLOTS; i++) { auto& slot = mSlots[i]; if (slot.mGraphicBuffer && slot.mGraphicBuffer->getId() == id) { return i; } } return BufferQueue::INVALID_BUFFER_SLOT; } status_t ConsumerBase::detachBufferLocked(int slotIndex) { status_t result = mConsumer->detachBuffer(slotIndex); if (result != NO_ERROR) { CB_LOGE("Failed to detach buffer: %d", result); return result; } freeBufferLocked(slotIndex); return result; } void ConsumerBase::freeBufferLocked(int slotIndex) { CB_LOGV("freeBufferLocked: slotIndex=%d", slotIndex); mSlots[slotIndex].mGraphicBuffer = nullptr; Loading Loading @@ -252,16 +284,30 @@ status_t ConsumerBase::detachBuffer(int slot) { return NO_INIT; } status_t result = mConsumer->detachBuffer(slot); if (result != NO_ERROR) { CB_LOGE("Failed to detach buffer: %d", result); return result; return detachBufferLocked(slot); } freeBufferLocked(slot); #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) status_t ConsumerBase::detachBuffer(const sp<GraphicBuffer>& buffer) { CB_LOGV("detachBuffer"); Mutex::Autolock lock(mMutex); return result; if (mAbandoned) { CB_LOGE("detachBuffer: ConsumerBase is abandoned!"); return NO_INIT; } if (buffer == nullptr) { return BAD_VALUE; } int slotIndex = getSlotForBufferLocked(buffer); if (slotIndex == BufferQueue::INVALID_BUFFER_SLOT) { return BAD_VALUE; } return detachBufferLocked(slotIndex); } #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) status_t ConsumerBase::setDefaultBufferSize(uint32_t width, uint32_t height) { Mutex::Autolock _l(mMutex); Loading
libs/gui/include/gui/BufferItemConsumer.h +12 −2 Original line number Diff line number Diff line Loading @@ -17,13 +17,15 @@ #ifndef ANDROID_GUI_BUFFERITEMCONSUMER_H #define ANDROID_GUI_BUFFERITEMCONSUMER_H #include <gui/ConsumerBase.h> #include <com_android_graphics_libgui_flags.h> #include <gui/BufferQueue.h> #include <gui/ConsumerBase.h> #define ANDROID_GRAPHICS_BUFFERITEMCONSUMER_JNI_ID "mBufferItemConsumer" namespace android { class GraphicBuffer; class String8; /** Loading Loading @@ -85,7 +87,15 @@ class BufferItemConsumer: public ConsumerBase status_t releaseBuffer(const BufferItem &item, const sp<Fence>& releaseFence = Fence::NO_FENCE); #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) status_t releaseBuffer(const sp<GraphicBuffer>& buffer, const sp<Fence>& releaseFence = Fence::NO_FENCE); #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) private: status_t releaseBufferSlotLocked(int slotIndex, const sp<GraphicBuffer>& buffer, const sp<Fence>& releaseFence); void freeBufferLocked(int slotIndex) override; // mBufferFreedListener is the listener object that will be called when Loading