diff --git a/libexternal/external.cpp b/libexternal/external.cpp
index d6da7aa..f00d551 100644
--- a/libexternal/external.cpp
+++ b/libexternal/external.cpp
@@ -408,16 +408,6 @@
         const char* prop = (connected) ? "1" : "0";
         // set system property
         property_set("hw.hdmiON", prop);
-        ALOGD("%s sending hotplug: connected = %d", __FUNCTION__,connected);
-        //Inform SF. Disabled until SF calls unblank
-        ctx->dpyAttr[HWC_DISPLAY_EXTERNAL].isActive = false;
-        ctx->dpyAttr[HWC_DISPLAY_EXTERNAL].connected = connected;
-
-        //TODO ideally should be done on "connected" not "online"
-        ctx->proc->hotplug(ctx->proc, HWC_DISPLAY_EXTERNAL, connected);
-
-        if(connected == false)
-            ctx->priv_proc.onExtDisconnect(ctx->priv_proc);
     }
     return;
 }
diff --git a/libhwcomposer/hwc.cpp b/libhwcomposer/hwc.cpp
index c510b66..6c23846 100644
--- a/libhwcomposer/hwc.cpp
+++ b/libhwcomposer/hwc.cpp
@@ -79,7 +79,8 @@
 //Helper
 static void reset(hwc_context_t *ctx, int numDisplays) {
     memset(ctx->listStats, 0, sizeof(ctx->listStats));
-    for(int i = 0; i < numDisplays; i++){
+    for(int i = 0; i < HWC_NUM_DISPLAY_TYPES; i++){
+        ctx->overlayInUse[i] = false;
         ctx->listStats[i].yuvIndex = -1;
     }
 }
@@ -87,17 +88,21 @@
 static int hwc_prepare_primary(hwc_composer_device_1 *dev,
         hwc_display_contents_1_t *list) {
     hwc_context_t* ctx = (hwc_context_t*)(dev);
-    ctx->overlayInUse[HWC_DISPLAY_PRIMARY] = false;
-    if (LIKELY(list && list->numHwLayers > 1)) {
+
+    if (LIKELY(list && list->numHwLayers > 1) &&
+        ctx->dpyAttr[HWC_DISPLAY_PRIMARY].isActive) {
+
         uint32_t last = list->numHwLayers - 1;
-        hwc_layer_1_t *fblayer = &list->hwLayers[last];
-        setListStats(ctx, list, HWC_DISPLAY_PRIMARY);
-        if(VideoOverlay::prepare(ctx, list, HWC_DISPLAY_PRIMARY)) {
-            ctx->overlayInUse[HWC_DISPLAY_PRIMARY] = true;
-        } else if(MDPComp::configure(ctx, list)) {
-            ctx->overlayInUse[HWC_DISPLAY_PRIMARY] = true;
-        } else {
-            ctx->overlayInUse[HWC_DISPLAY_PRIMARY] = false;
+        hwc_layer_1_t *fbLayer = &list->hwLayers[last];
+        if(fbLayer->handle) {
+            setListStats(ctx, list, HWC_DISPLAY_PRIMARY);
+            if(VideoOverlay::prepare(ctx, list, HWC_DISPLAY_PRIMARY)) {
+                ctx->overlayInUse[HWC_DISPLAY_PRIMARY] = true;
+            } else if(MDPComp::configure(ctx, list)) {
+                ctx->overlayInUse[HWC_DISPLAY_PRIMARY] = true;
+            } else {
+                ctx->overlayInUse[HWC_DISPLAY_PRIMARY] = false;
+            }
         }
     }
     return 0;
@@ -105,9 +110,7 @@
 
 static int hwc_prepare_external(hwc_composer_device_1 *dev,
         hwc_display_contents_1_t *list) {
-
     hwc_context_t* ctx = (hwc_context_t*)(dev);
-    ctx->overlayInUse[HWC_DISPLAY_EXTERNAL] = false;
 
     if (LIKELY(list && list->numHwLayers > 1) &&
         ctx->dpyAttr[HWC_DISPLAY_EXTERNAL].isActive &&
@@ -116,15 +119,18 @@
         setListStats(ctx, list, HWC_DISPLAY_EXTERNAL);
 
         uint32_t last = list->numHwLayers - 1;
-        hwc_layer_1_t *fblayer = &list->hwLayers[last];
-        if(UIMirrorOverlay::prepare(ctx, fblayer)) {
-            ctx->overlayInUse[HWC_DISPLAY_EXTERNAL] = true;
-        }
+        hwc_layer_1_t *fbLayer = &list->hwLayers[last];
+        if(fbLayer->handle) {
+            if(UIMirrorOverlay::prepare(ctx, fbLayer)) {
+                ctx->overlayInUse[HWC_DISPLAY_EXTERNAL] = true;
+            }
 
-        if(VideoOverlay::prepare(ctx, list, HWC_DISPLAY_EXTERNAL)) {
-            ctx->overlayInUse[HWC_DISPLAY_EXTERNAL] = true;
-        } else {
-            ctx->mOverlay[HWC_DISPLAY_EXTERNAL]->setState(ovutils::OV_UI_MIRROR);
+            if(VideoOverlay::prepare(ctx, list, HWC_DISPLAY_EXTERNAL)) {
+                ctx->overlayInUse[HWC_DISPLAY_EXTERNAL] = true;
+            } else {
+                ctx->mOverlay[HWC_DISPLAY_EXTERNAL]->setState(
+                        ovutils::OV_UI_MIRROR);
+            }
         }
     }
     return 0;
@@ -135,7 +141,6 @@
 {
     int ret = 0;
     hwc_context_t* ctx = (hwc_context_t*)(dev);
-
     reset(ctx, numDisplays);
 
     //If securing of h/w in progress skip comp using overlay.
@@ -143,20 +148,15 @@
 
     for (uint32_t i = 0; i < numDisplays; i++) {
         hwc_display_contents_1_t *list = displays[i];
-        if(list && list->numHwLayers) {
-            uint32_t last = list->numHwLayers - 1;
-            if(list->hwLayers[last].handle != NULL) {
-                switch(i) {
-                case HWC_DISPLAY_PRIMARY:
-                    ret = hwc_prepare_primary(dev, list);
-                    break;
-                case HWC_DISPLAY_EXTERNAL:
-                    ret = hwc_prepare_external(dev, list);
-                    break;
-                default:
-                    ret = -EINVAL;
-                }
-            }
+        switch(i) {
+            case HWC_DISPLAY_PRIMARY:
+                ret = hwc_prepare_primary(dev, list);
+                break;
+            case HWC_DISPLAY_EXTERNAL:
+                ret = hwc_prepare_external(dev, list);
+                break;
+            default:
+                ret = -EINVAL;
         }
     }
     return ret;
@@ -254,9 +254,6 @@
 }
 
 static int hwc_set_primary(hwc_context_t *ctx, hwc_display_contents_1_t* list) {
-    if(!ctx->overlayInUse[HWC_DISPLAY_PRIMARY])
-        ctx->mOverlay[HWC_DISPLAY_PRIMARY]->setState(ovutils::OV_CLOSED);
-
     if (LIKELY(list && list->numHwLayers > 1) &&
         ctx->dpyAttr[HWC_DISPLAY_PRIMARY].isActive) {
         uint32_t last = list->numHwLayers - 1;
@@ -279,8 +276,6 @@
 static int hwc_set_external(hwc_context_t *ctx,
         hwc_display_contents_1_t* list) {
     Locker::Autolock _l(ctx->mExtSetLock);
-    if(!ctx->overlayInUse[HWC_DISPLAY_EXTERNAL])
-        ctx->mOverlay[HWC_DISPLAY_EXTERNAL]->setState(ovutils::OV_CLOSED);
 
     if (LIKELY(list && list->numHwLayers > 1) &&
         ctx->dpyAttr[HWC_DISPLAY_EXTERNAL].isActive &&
@@ -310,6 +305,11 @@
     hwc_context_t* ctx = (hwc_context_t*)(dev);
     Locker::Autolock _l(ctx->mBlankLock);
 
+    for(uint32_t i = 0; i < HWC_NUM_DISPLAY_TYPES; i++) {
+        if(!ctx->overlayInUse[i])
+            ctx->mOverlay[i]->setState(ovutils::OV_CLOSED);
+    }
+
     for (uint32_t i = 0; i < numDisplays; i++) {
         hwc_display_contents_1_t* list = displays[i];
         switch(i) {
diff --git a/libhwcomposer/hwc_uevents.cpp b/libhwcomposer/hwc_uevents.cpp
index 987957a..89b27aa 100644
--- a/libhwcomposer/hwc_uevents.cpp
+++ b/libhwcomposer/hwc_uevents.cpp
@@ -53,14 +53,23 @@
     // for now just parsing onlin/offline info is enough
     if (hdmi) {
         str = udata;
-        int connected = 0;
+        int connected = -1; //some event other than online and offline .. e.g
         if(!(strncmp(str,"online@",strlen("online@")))) {
+            //Disabled until SF calls unblank
+            ctx->dpyAttr[HWC_DISPLAY_EXTERNAL].isActive = false;
             connected = 1;
-            ctx->mExtDisplay->setExternalDisplay(connected);;
         } else if(!(strncmp(str,"offline@",strlen("offline@")))) {
+            //Disabled until SF calls unblank
+            ctx->dpyAttr[HWC_DISPLAY_EXTERNAL].isActive = false;
             connected = 0;
-            Locker::Autolock _l(ctx->mExtSetLock);
-            ctx->mExtDisplay->setExternalDisplay(connected);;
+        }
+        if(connected != -1) { //either we got online or offline
+            ctx->dpyAttr[HWC_DISPLAY_EXTERNAL].connected = connected;
+            ctx->mExtDisplay->setExternalDisplay(connected);
+            ALOGD("%s sending hotplug: connected = %d", __FUNCTION__,connected);
+            Locker::Autolock _l(ctx->mExtSetLock); //hwc comp could be on
+            //TODO ideally should be done on "connected" not "online"
+            ctx->proc->hotplug(ctx->proc, HWC_DISPLAY_EXTERNAL, connected);
         }
     }
 }
diff --git a/libhwcomposer/hwc_utils.cpp b/libhwcomposer/hwc_utils.cpp
index 340490a..e741eaa 100644
--- a/libhwcomposer/hwc_utils.cpp
+++ b/libhwcomposer/hwc_utils.cpp
@@ -48,13 +48,6 @@
     }
 }
 
-static void onExtDisconnect(const hwc_context_t::Callbacks& priv_proc) {
-    hwc_context_t *ctx = priv_proc.ctx;
-    overlay::Overlay& ov = *(ctx->mOverlay[HWC_DISPLAY_EXTERNAL]);
-    // Set overlay state
-    ov.setState(ovutils::OV_CLOSED);
-}
-
 void initContext(hwc_context_t *ctx)
 {
     openFramebufferDevice(ctx);
@@ -73,9 +66,6 @@
     pthread_cond_init(&(ctx->vstate.cond), NULL);
     ctx->vstate.enable = false;
 
-    ctx->priv_proc.onExtDisconnect = onExtDisconnect;
-    ctx->priv_proc.ctx = ctx;
-
     ALOGI("Initializing Qualcomm Hardware Composer");
     ALOGI("MDP version: %d", ctx->mMDP.version);
 }
diff --git a/libhwcomposer/hwc_utils.h b/libhwcomposer/hwc_utils.h
index ef2e3c8..ced542e 100644
--- a/libhwcomposer/hwc_utils.h
+++ b/libhwcomposer/hwc_utils.h
@@ -176,14 +176,6 @@
     hwc_composer_device_1_t device;
     const hwc_procs_t* proc;
 
-    //Private hwc handlers
-    struct Callbacks {
-        void (*onExtDisconnect)(const Callbacks& priv_proc);
-        hwc_context_t *ctx;
-    };
-
-    Callbacks priv_proc;
-
     int overlayInUse[HWC_NUM_DISPLAY_TYPES];
 
     //Framebuffer device
