summaryrefslogtreecommitdiff
authorSky Zhou <sky.zhou@amlogic.com>2017-12-22 09:55:33 (GMT)
committer Gerrit Code Review <gituser@scgit.amlogic.com>2017-12-22 09:55:33 (GMT)
commitdeaf618be119cb330b78217204e2e3accf197437 (patch)
tree4a1d83af2b4f60d703253e69aa627ce8b5d77283
parent77319d09aa4e707d37ed105b9c08548f8b6fdf9e (diff)
parente16b144a4a5d1b78596d1998ccf4fb6fcb95c185 (diff)
downloadhwcomposer-deaf618be119cb330b78217204e2e3accf197437.zip
hwcomposer-deaf618be119cb330b78217204e2e3accf197437.tar.gz
hwcomposer-deaf618be119cb330b78217204e2e3accf197437.tar.bz2
Merge "hwc2: Fix hdmi uevent and refresh sf after hotplug complete." into o-amlogic
Diffstat
-rw-r--r--hwc2/common/devices/PrimaryDevice.cpp20
-rw-r--r--hwc2/common/utils/Utils.cpp2
-rw-r--r--hwc2/include/PrimaryDevice.h1
3 files changed, 18 insertions, 5 deletions
diff --git a/hwc2/common/devices/PrimaryDevice.cpp b/hwc2/common/devices/PrimaryDevice.cpp
index 377db74..797f9ff 100644
--- a/hwc2/common/devices/PrimaryDevice.cpp
+++ b/hwc2/common/devices/PrimaryDevice.cpp
@@ -49,6 +49,8 @@ bool PrimaryDevice::initialize()
DEINIT_AND_RETURN_FALSE("failed to initialize physical device");
}
+ mSignalHpd = false;
+
UeventObserver *observer = Hwcomposer::getInstance().getUeventObserver();
if (observer) {
observer->registerListener(
@@ -75,7 +77,8 @@ void PrimaryDevice::hotplugEventListener(void *data, bool status)
{
PrimaryDevice *pThis = (PrimaryDevice*)data;
if (pThis) {
- pThis->hotplugListener(status);
+ pThis->hotplugListener(0);
+ if (status) pThis->mSignalHpd = true;
}
}
@@ -83,6 +86,7 @@ void PrimaryDevice::modeChangeEventListener(void *data, bool status)
{
PrimaryDevice *pThis = (PrimaryDevice*)data;
DTRACE("mode change event: %d", status);
+
if (status && pThis) {
pThis->changeModeDetectThread();
}
@@ -96,7 +100,10 @@ void PrimaryDevice::hotplugListener(bool connected)
updateHotplugState(connected);
// update display configs
- onHotplug(getDisplayId(), connected);
+ // onHotplug(getDisplayId(), connected);
+
+ // notify sf to refresh.
+ getDevice().refresh(getDisplayId());
}
int PrimaryDevice::parseConfigFile()
@@ -152,9 +159,14 @@ void* PrimaryDevice::changeModeDetect(void* data)
Utils::getSysfsStr(SYSFS_DISPLAY_MODE, lastMode);
do {
modeChanged = Utils::checkSysfsStatus(SYSFS_DISPLAY_MODE, lastMode, 32);
- usleep(1000 * 1000);
+ usleep(500 * 1000);
} while (!modeChanged);
- pThis->setOsdMouse();
+
+ if (pThis->mSignalHpd) {
+ pThis->setOsdMouse();
+ pThis->hotplugListener(1);
+ pThis->mSignalHpd = false;
+ }
return NULL;
}
diff --git a/hwc2/common/utils/Utils.cpp b/hwc2/common/utils/Utils.cpp
index deae89c..4bccd50 100644
--- a/hwc2/common/utils/Utils.cpp
+++ b/hwc2/common/utils/Utils.cpp
@@ -203,7 +203,7 @@ bool Utils::checkSysfsStatus(const char* sysfstr, char* lastr, int32_t size) {
const char* Utils::getHotplugUeventEnvelope()
{
- return "change@/devices/virtual/switch/hdmi_delay";
+ return "change@/devices/virtual/amhdmitx/amhdmitx0/hdmi";
}
const char* Utils::getHdcpUeventEnvelope()
diff --git a/hwc2/include/PrimaryDevice.h b/hwc2/include/PrimaryDevice.h
index 7cb8fef..216f404 100644
--- a/hwc2/include/PrimaryDevice.h
+++ b/hwc2/include/PrimaryDevice.h
@@ -58,6 +58,7 @@ private:
const char* pConfigPath;
int mDisplayType;
+ bool mSignalHpd;
};
}