Loading services/surfaceflinger/DisplayHardware/HWComposer.cpp +12 −1 Original line number Diff line number Diff line Loading @@ -69,7 +69,8 @@ HWComposer::HWComposer(bool useVrComposer) mCBContext(), mEventHandler(nullptr), mVSyncCounts(), mRemainingHwcVirtualDisplays(0) mRemainingHwcVirtualDisplays(0), mDumpMayLockUp(false) { for (size_t i=0 ; i<HWC_NUM_PHYSICAL_DISPLAY_TYPES ; i++) { mLastHwVSync[i] = 0; Loading Loading @@ -489,6 +490,8 @@ status_t HWComposer::prepare(DisplayDevice& displayDevice) { return NO_ERROR; } mDumpMayLockUp = true; uint32_t numTypes = 0; uint32_t numRequests = 0; auto error = hwcDisplay->validate(&numTypes, &numRequests); Loading Loading @@ -633,6 +636,9 @@ status_t HWComposer::presentAndGetReleaseFences(int32_t displayId) { auto& displayData = mDisplayData[displayId]; auto& hwcDisplay = displayData.hwcDisplay; auto error = hwcDisplay->present(&displayData.lastPresentFence); mDumpMayLockUp = false; if (error != HWC2::Error::None) { ALOGE("presentAndGetReleaseFences: failed for display %d: %s (%d)", displayId, to_string(error).c_str(), static_cast<int32_t>(error)); Loading Loading @@ -878,6 +884,11 @@ bool HWComposer::isUsingVrComposer() const { } void HWComposer::dump(String8& result) const { if (mDumpMayLockUp) { result.append("HWComposer dump skipped because present in progress"); return; } // TODO: In order to provide a dump equivalent to HWC1, we need to shadow // all the state going into the layers. This is probably better done in // Layer itself, but it's going to take a bit of work to get there. Loading services/surfaceflinger/DisplayHardware/HWComposer.h +3 −0 Original line number Diff line number Diff line Loading @@ -231,6 +231,9 @@ private: // thread-safe mutable Mutex mVsyncLock; // XXX temporary workaround for b/35806047 mutable std::atomic<bool> mDumpMayLockUp; }; class HWComposerBufferCache { Loading Loading
services/surfaceflinger/DisplayHardware/HWComposer.cpp +12 −1 Original line number Diff line number Diff line Loading @@ -69,7 +69,8 @@ HWComposer::HWComposer(bool useVrComposer) mCBContext(), mEventHandler(nullptr), mVSyncCounts(), mRemainingHwcVirtualDisplays(0) mRemainingHwcVirtualDisplays(0), mDumpMayLockUp(false) { for (size_t i=0 ; i<HWC_NUM_PHYSICAL_DISPLAY_TYPES ; i++) { mLastHwVSync[i] = 0; Loading Loading @@ -489,6 +490,8 @@ status_t HWComposer::prepare(DisplayDevice& displayDevice) { return NO_ERROR; } mDumpMayLockUp = true; uint32_t numTypes = 0; uint32_t numRequests = 0; auto error = hwcDisplay->validate(&numTypes, &numRequests); Loading Loading @@ -633,6 +636,9 @@ status_t HWComposer::presentAndGetReleaseFences(int32_t displayId) { auto& displayData = mDisplayData[displayId]; auto& hwcDisplay = displayData.hwcDisplay; auto error = hwcDisplay->present(&displayData.lastPresentFence); mDumpMayLockUp = false; if (error != HWC2::Error::None) { ALOGE("presentAndGetReleaseFences: failed for display %d: %s (%d)", displayId, to_string(error).c_str(), static_cast<int32_t>(error)); Loading Loading @@ -878,6 +884,11 @@ bool HWComposer::isUsingVrComposer() const { } void HWComposer::dump(String8& result) const { if (mDumpMayLockUp) { result.append("HWComposer dump skipped because present in progress"); return; } // TODO: In order to provide a dump equivalent to HWC1, we need to shadow // all the state going into the layers. This is probably better done in // Layer itself, but it's going to take a bit of work to get there. Loading
services/surfaceflinger/DisplayHardware/HWComposer.h +3 −0 Original line number Diff line number Diff line Loading @@ -231,6 +231,9 @@ private: // thread-safe mutable Mutex mVsyncLock; // XXX temporary workaround for b/35806047 mutable std::atomic<bool> mDumpMayLockUp; }; class HWComposerBufferCache { Loading