summaryrefslogtreecommitdiff
path: root/libs/gui/DisplayEventDispatcher.cpp
diff options
context:
space:
mode:
author Brian Johnson <hibrian@google.com> 2023-08-15 09:36:37 -0700
committer Huihong Luo <huisinro@google.com> 2023-09-21 10:44:18 -0700
commit5dcd75d46c5e4eda82c42660eea56f0d923acd53 (patch)
tree4361b8ed292282f70c411e458a9f85fabc997bdf /libs/gui/DisplayEventDispatcher.cpp
parentc79a756a21be45c13d5578f3c14e7b021cc9927e (diff)
SF: Propagate display hotplug errors
Add support for SurfaceFlinger to handle display connection errors and propagate any error code on hotplug event up the stack. Bug: 241286153 Test: manual Change-Id: I88afeb4f61b13714a81138180db0762cf3ae4ab0
Diffstat (limited to 'libs/gui/DisplayEventDispatcher.cpp')
-rw-r--r--libs/gui/DisplayEventDispatcher.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/libs/gui/DisplayEventDispatcher.cpp b/libs/gui/DisplayEventDispatcher.cpp
index 8a883770d8..5dd058cf9f 100644
--- a/libs/gui/DisplayEventDispatcher.cpp
+++ b/libs/gui/DisplayEventDispatcher.cpp
@@ -173,7 +173,13 @@ bool DisplayEventDispatcher::processPendingEvents(nsecs_t* outTimestamp,
*outVsyncEventData = ev.vsync.vsyncData;
break;
case DisplayEventReceiver::DISPLAY_EVENT_HOTPLUG:
- dispatchHotplug(ev.header.timestamp, ev.header.displayId, ev.hotplug.connected);
+ if (ev.hotplug.connectionError == 0) {
+ dispatchHotplug(ev.header.timestamp, ev.header.displayId,
+ ev.hotplug.connected);
+ } else {
+ dispatchHotplugConnectionError(ev.header.timestamp,
+ ev.hotplug.connectionError);
+ }
break;
case DisplayEventReceiver::DISPLAY_EVENT_MODE_CHANGE:
dispatchModeChanged(ev.header.timestamp, ev.header.displayId,