diff options
author | 2022-02-10 03:30:09 +0000 | |
---|---|---|
committer | 2022-02-10 03:30:09 +0000 | |
commit | 249dbced45427ccfb920cee3c6e501901e3e0bd4 (patch) | |
tree | bd91222c0c3c7f73b30afde459da4af629d5bf89 /libs/gui/DisplayEventReceiver.cpp | |
parent | 7c60b886d46e8bf76f19c00130b9bc3d28cd2f6d (diff) | |
parent | 745f7b59ae19400240af4f390ea3c7f7a962a497 (diff) |
Merge "DisplayEventReceiver: improve error handling"
Diffstat (limited to 'libs/gui/DisplayEventReceiver.cpp')
-rw-r--r-- | libs/gui/DisplayEventReceiver.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/libs/gui/DisplayEventReceiver.cpp b/libs/gui/DisplayEventReceiver.cpp index 36e7d80d5e..bb659bf75f 100644 --- a/libs/gui/DisplayEventReceiver.cpp +++ b/libs/gui/DisplayEventReceiver.cpp @@ -40,7 +40,13 @@ DisplayEventReceiver::DisplayEventReceiver( mEventConnection = sf->createDisplayEventConnection(vsyncSource, eventRegistration); if (mEventConnection != nullptr) { mDataChannel = std::make_unique<gui::BitTube>(); - mEventConnection->stealReceiveChannel(mDataChannel.get()); + const auto status = mEventConnection->stealReceiveChannel(mDataChannel.get()); + if (!status.isOk()) { + ALOGE("stealReceiveChannel failed: %s", status.toString8().c_str()); + mInitError = std::make_optional<status_t>(status.transactionError()); + mDataChannel.reset(); + mEventConnection.clear(); + } } } } @@ -51,12 +57,11 @@ DisplayEventReceiver::~DisplayEventReceiver() { status_t DisplayEventReceiver::initCheck() const { if (mDataChannel != nullptr) return NO_ERROR; - return NO_INIT; + return mInitError.has_value() ? mInitError.value() : NO_INIT; } int DisplayEventReceiver::getFd() const { - if (mDataChannel == nullptr) - return NO_INIT; + if (mDataChannel == nullptr) return mInitError.has_value() ? mInitError.value() : NO_INIT; return mDataChannel->getFd(); } @@ -69,7 +74,7 @@ status_t DisplayEventReceiver::setVsyncRate(uint32_t count) { mEventConnection->setVsyncRate(count); return NO_ERROR; } - return NO_INIT; + return mInitError.has_value() ? mInitError.value() : NO_INIT; } status_t DisplayEventReceiver::requestNextVsync() { @@ -77,7 +82,7 @@ status_t DisplayEventReceiver::requestNextVsync() { mEventConnection->requestNextVsync(); return NO_ERROR; } - return NO_INIT; + return mInitError.has_value() ? mInitError.value() : NO_INIT; } status_t DisplayEventReceiver::getLatestVsyncEventData(VsyncEventData* outVsyncEventData) const { |