hwc: Set display as active only after unblanking it
* For HDMI and non-Hybrid WFD solution, on receiving
online event, display hal sends hotplug connect to SF.
* In case of such displays, set them as active only
after receiving an unblank call.
* For Hybrid WFD solution, since display hal will not
be receiving unblank call from SF, set it as active
as part of processing online event itself.
Change-Id: I319f1576cba954da2024680568c37fedb1eb5d43
diff --git a/libhwcomposer/hwc_uevents.cpp b/libhwcomposer/hwc_uevents.cpp
index 5590798..ecb2104 100644
--- a/libhwcomposer/hwc_uevents.cpp
+++ b/libhwcomposer/hwc_uevents.cpp
@@ -226,20 +226,20 @@
ctx->dpyAttr[dpy].connected = true;
ctx->dpyAttr[dpy].isConfiguring = true;
- if(dpy == HWC_DISPLAY_VIRTUAL) {
+ if(dpy == HWC_DISPLAY_EXTERNAL ||
+ ctx->mVirtualonExtActive) {
+ /* External display is HDMI or non-hybrid WFD solution */
+ ALOGE_IF(UEVENT_DEBUG, "%s: Sending EXTERNAL_OFFLINE ONLINE"
+ "hotplug event", __FUNCTION__);
+ ctx->proc->hotplug(ctx->proc,HWC_DISPLAY_EXTERNAL,
+ EXTERNAL_ONLINE);
+ } else {
/* We wont be getting unblank for VIRTUAL DISPLAY and its
* always guaranteed from WFD stack that CONNECT uevent for
* VIRTUAL DISPLAY will be triggered before creating
* surface for the same. */
ctx->dpyAttr[HWC_DISPLAY_VIRTUAL].isActive = true;
}
- if(dpy == HWC_DISPLAY_EXTERNAL ||
- ctx->mVirtualonExtActive) {
- ALOGE_IF(UEVENT_DEBUG, "%s: Sending EXTERNAL_OFFLINE ONLINE"
- "hotplug event", __FUNCTION__);
- ctx->proc->hotplug(ctx->proc,HWC_DISPLAY_EXTERNAL,
- EXTERNAL_ONLINE);
- }
break;
}
case EXTERNAL_PAUSE: