summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy McFadden <fadden@android.com>2012-10-10 19:34:11 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-10-10 19:34:11 -0700
commitf0c89b28be2e74c26d74b2a21b7228516f8c236f (patch)
tree5af57adee4c57d165919aa7162cff83546b42bd4
parent8d5d2019805df1f27cbec07eeca47dd5ab453dad (diff)
parent9e9689c11148521d2c16a121a0b87b062be0714c (diff)
downloadframeworks_native-f0c89b28be2e74c26d74b2a21b7228516f8c236f.zip
frameworks_native-f0c89b28be2e74c26d74b2a21b7228516f8c236f.tar.gz
frameworks_native-f0c89b28be2e74c26d74b2a21b7228516f8c236f.tar.bz2
Merge "Fix HDMI unblank behavior" into jb-mr1-dev
-rw-r--r--services/surfaceflinger/DisplayHardware/HWComposer.cpp1
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp5
2 files changed, 4 insertions, 2 deletions
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
index be4af51..d9bda11 100644
--- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp
+++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
@@ -696,6 +696,7 @@ void HWComposer::disconnectDisplay(int disp) {
free(dd.list);
dd.list = NULL;
dd.framebufferTarget = NULL; // points into dd.list
+ dd.fbTargetHandle = NULL;
}
}
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 17c67f9..492d1cf 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -772,8 +772,7 @@ void SurfaceFlinger::onHotplugReceived(int type, bool connected) {
}
setTransactionFlags(eDisplayTransactionNeeded);
- // we should only receive DisplayDevice::DisplayType from the vsync callback
- mEventThread->onHotplugReceived(type, connected);
+ // Defer EventThread notification until SF has updated mDisplays.
}
}
@@ -1130,6 +1129,7 @@ void SurfaceFlinger::handleTransactionLocked(uint32_t transactionFlags)
DisplayDevice::makeCurrent(mEGLDisplay, hw, mEGLContext);
mDisplays.removeItem(draw.keyAt(i));
getHwComposer().disconnectDisplay(draw[i].type);
+ mEventThread->onHotplugReceived(draw[i].type, false);
} else {
ALOGW("trying to remove the main display");
}
@@ -1212,6 +1212,7 @@ void SurfaceFlinger::handleTransactionLocked(uint32_t transactionFlags)
state.viewport, state.frame);
hw->setDisplayName(state.displayName);
mDisplays.add(display, hw);
+ mEventThread->onHotplugReceived(state.type, true);
}
}
}