diff options
Diffstat (limited to 'libs/gui/DisplayEventDispatcher.cpp')
-rw-r--r-- | libs/gui/DisplayEventDispatcher.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/libs/gui/DisplayEventDispatcher.cpp b/libs/gui/DisplayEventDispatcher.cpp index 208d729812..8af1a1c6ef 100644 --- a/libs/gui/DisplayEventDispatcher.cpp +++ b/libs/gui/DisplayEventDispatcher.cpp @@ -50,17 +50,20 @@ status_t DisplayEventDispatcher::initialize() { return result; } - int rc = mLooper->addFd(mReceiver.getFd(), 0, Looper::EVENT_INPUT, this, NULL); - if (rc < 0) { - return UNKNOWN_ERROR; + if (mLooper != nullptr) { + int rc = mLooper->addFd(mReceiver.getFd(), 0, Looper::EVENT_INPUT, this, NULL); + if (rc < 0) { + return UNKNOWN_ERROR; + } } + return OK; } void DisplayEventDispatcher::dispose() { ALOGV("dispatcher %p ~ Disposing display event dispatcher.", this); - if (!mReceiver.initCheck()) { + if (!mReceiver.initCheck() && mLooper != nullptr) { mLooper->removeFd(mReceiver.getFd()); } } @@ -101,6 +104,10 @@ void DisplayEventDispatcher::toggleConfigEvents(ISurfaceComposer::ConfigChanged mConfigChangeFlag = configChangeFlag; } +int DisplayEventDispatcher::getFd() { + return mReceiver.getFd(); +} + int DisplayEventDispatcher::handleEvent(int, int events, void*) { if (events & (Looper::EVENT_ERROR | Looper::EVENT_HANGUP)) { ALOGE("Display event receiver pipe was closed or an error occurred. " |