author | sky zhou <sky.zhou@amlogic.com> | 2019-12-26 13:35:35 (GMT) |
---|---|---|
committer | sky zhou <sky.zhou@amlogic.com> | 2020-05-21 11:35:19 (GMT) |
commit | ccf55f1db74d98e4c2a4cbb16386e89952399a50 (patch) | |
tree | 66fe8d6c16aabbc3cab35a40f72c138e936e0bf3 | |
parent | 0ab16d0b478cab423c10072a2efb6a027899012a (diff) | |
download | hwcomposer-ccf55f1db74d98e4c2a4cbb16386e89952399a50.zip hwcomposer-ccf55f1db74d98e4c2a4cbb16386e89952399a50.tar.gz hwcomposer-ccf55f1db74d98e4c2a4cbb16386e89952399a50.tar.bz2 |
HWC: temp disable set displaymode in hwc [1/1]
PD#SWPL-17875
Problem:
both hwc/systemcontrol set displaymode when
hdmi plugout.
Solution:
temp disable set displaymode in hwc, later
we will enable it and remove set displaymode
in systemcontrol.
Verify:
verify on Newton.
Change-Id: I8f56bcb2ab622c61d7f8bd00799753e95474723d
Signed-off-by: sky zhou <sky.zhou@amlogic.com>
-rw-r--r-- | common/display/HwDisplayCrtc.cpp | 1 | ||||
-rw-r--r-- | common/display/include/HwDisplayCrtc.h | 1 | ||||
-rw-r--r-- | common/hwc/FixedDisplayPipe.cpp | 15 | ||||
-rw-r--r-- | common/hwc/HwcDisplayPipe.cpp | 5 |
4 files changed, 15 insertions, 7 deletions
diff --git a/common/display/HwDisplayCrtc.cpp b/common/display/HwDisplayCrtc.cpp index fe4fd50..06ccc4f 100644 --- a/common/display/HwDisplayCrtc.cpp +++ b/common/display/HwDisplayCrtc.cpp @@ -86,7 +86,6 @@ int32_t HwDisplayCrtc::unbind() { mConnector->setCrtc(NULL); mConnector.reset(); mPlanes.clear(); - mBinded = false; } return 0; diff --git a/common/display/include/HwDisplayCrtc.h b/common/display/include/HwDisplayCrtc.h index db2efd7..e354944 100644 --- a/common/display/include/HwDisplayCrtc.h +++ b/common/display/include/HwDisplayCrtc.h @@ -74,6 +74,7 @@ protected: bool mFirstPresent; bool mConnected; + bool mBinded; drm_mode_info_t mCurModeInfo; display_zoom_info_t mScaleInfo; diff --git a/common/hwc/FixedDisplayPipe.cpp b/common/hwc/FixedDisplayPipe.cpp index 3302c88..018409e 100644 --- a/common/hwc/FixedDisplayPipe.cpp +++ b/common/hwc/FixedDisplayPipe.cpp @@ -25,10 +25,8 @@ int32_t FixedDisplayPipe::init( } void FixedDisplayPipe::handleEvent(drm_display_event event, int val) { - HwcDisplayPipe::handleEvent(event, val); - - std::lock_guard<std::mutex> lock(mMutex); if (event == DRM_EVENT_HDMITX_HOTPLUG) { + std::lock_guard<std::mutex> lock(mMutex); bool connected = (val == 0) ? false : true; std::shared_ptr<PipeStat> pipe; drm_connector_type_t targetConnector = DRM_MODE_CONNECTOR_INVALID; @@ -57,11 +55,16 @@ void FixedDisplayPipe::handleEvent(drm_display_event event, int val) { /*update display mode, workaround now.*/ initDisplayMode(pipe); } - break; - } else if (connectorType == HWC_HDMI_ONLY && connected) { - initDisplayMode(pipe); + statIt.second->hwcDisplay->onHotplug(connected); + } else if (connectorType == HWC_HDMI_ONLY) { + if (connected) { + initDisplayMode(pipe); + } + statIt.second->hwcDisplay->onHotplug(connected); } } + }else { + HwcDisplayPipe::handleEvent(event, val); } } diff --git a/common/hwc/HwcDisplayPipe.cpp b/common/hwc/HwcDisplayPipe.cpp index ed1cf7f..783227d 100644 --- a/common/hwc/HwcDisplayPipe.cpp +++ b/common/hwc/HwcDisplayPipe.cpp @@ -213,6 +213,7 @@ int32_t HwcDisplayPipe::updatePipe(std::shared_ptr<PipeStat> & stat) { if (resChanged) { /*reset vout displaymode, it will be null.*/ + MESON_LOGD("HwcDisplayPipe::updatePipe %d changed", stat->hwcId); stat->hwcCrtc->unbind(); stat->hwcCrtc->bind(stat->hwcConnector, stat->hwcPlanes); stat->hwcCrtc->loadProperities(); @@ -321,11 +322,15 @@ int32_t HwcDisplayPipe::initDisplayMode(std::shared_ptr<PipeStat> & stat) { switch (stat->cfg.modeConnectorType) { case DRM_MODE_CONNECTOR_CVBS: { + #if 0 const char * cvbs_config_key = "ubootenv.var.cvbsmode"; std::string modeName; if (0 == sc_read_bootenv(cvbs_config_key, modeName)) { stat->modeCrtc->writeCurDisplayMode(modeName); } + #else + /*TODO:*/ + #endif } break; case DRM_MODE_CONNECTOR_HDMI: |