graphics: hwc2on1adapter: Buffer hotplug event after display creation
If the HWC2 hotplug callback has not registered we buffer this event then return, but do so too early leading to no display being created. Buffer the event and return only after creating the display so when the callback is registered we have a display for this hotplug event. Test: Hotplug a display before the HWC2 hotplug callback is registered Change-Id: I999e3fd7cbe87d12969fb2d2d82dbd956ee8d97b Signed-off-by: Andrew F. Davis <afd@ti.com>
This commit is contained in:
parent
69879436a5
commit
272ff4a626
1 changed files with 7 additions and 7 deletions
|
@ -2590,13 +2590,6 @@ void HWC2On1Adapter::hwc1Hotplug(int hwc1DisplayId, int connected) {
|
|||
|
||||
std::unique_lock<std::recursive_timed_mutex> lock(mStateMutex);
|
||||
|
||||
// If the HWC2-side callback hasn't been registered yet, buffer this until
|
||||
// it is registered
|
||||
if (mCallbacks.count(Callback::Hotplug) == 0) {
|
||||
mPendingHotplugs.emplace_back(hwc1DisplayId, connected);
|
||||
return;
|
||||
}
|
||||
|
||||
hwc2_display_t displayId = UINT64_MAX;
|
||||
if (mHwc1DisplayMap.count(hwc1DisplayId) == 0) {
|
||||
if (connected == 0) {
|
||||
|
@ -2625,6 +2618,13 @@ void HWC2On1Adapter::hwc1Hotplug(int hwc1DisplayId, int connected) {
|
|||
mDisplays.erase(displayId);
|
||||
}
|
||||
|
||||
// If the HWC2-side callback hasn't been registered yet, buffer this until
|
||||
// it is registered
|
||||
if (mCallbacks.count(Callback::Hotplug) == 0) {
|
||||
mPendingHotplugs.emplace_back(hwc1DisplayId, connected);
|
||||
return;
|
||||
}
|
||||
|
||||
const auto& callbackInfo = mCallbacks[Callback::Hotplug];
|
||||
|
||||
// Call back without the state lock held
|
||||
|
|
Loading…
Reference in a new issue