-rw-r--r-- | hwc2/common/devices/PrimaryDevice.cpp | 40 | ||||
-rw-r--r-- | hwc2/common/observers/UeventObserver.cpp | 4 | ||||
-rw-r--r-- | hwc2/common/utils/Utils.cpp | 11 | ||||
-rw-r--r-- | hwc2/common/utils/Utils.h | 2 | ||||
-rw-r--r-- | hwc2/include/PrimaryDevice.h | 2 |
5 files changed, 23 insertions, 36 deletions
diff --git a/hwc2/common/devices/PrimaryDevice.cpp b/hwc2/common/devices/PrimaryDevice.cpp index 797f9ff..88ac1cb 100644 --- a/hwc2/common/devices/PrimaryDevice.cpp +++ b/hwc2/common/devices/PrimaryDevice.cpp @@ -49,7 +49,7 @@ bool PrimaryDevice::initialize() DEINIT_AND_RETURN_FALSE("failed to initialize physical device"); } - mSignalHpd = false; + mSignalHpd = Utils::getSysfsInt(DISPLAY_HPD_STATE, 1) == 1 ? true : false; UeventObserver *observer = Hwcomposer::getInstance().getUeventObserver(); if (observer) { @@ -75,20 +75,21 @@ void PrimaryDevice::deinitialize() void PrimaryDevice::hotplugEventListener(void *data, bool status) { + DTRACE("HDMI Plug State[%s]", status == true ? "Plug" : "UnPlug"); PrimaryDevice *pThis = (PrimaryDevice*)data; if (pThis) { - pThis->hotplugListener(0); - if (status) pThis->mSignalHpd = true; + pThis->mSignalHpd = status; } } void PrimaryDevice::modeChangeEventListener(void *data, bool status) { PrimaryDevice *pThis = (PrimaryDevice*)data; - DTRACE("mode change event: %d", status); + DTRACE("mode state: [%s] display mode.", status == true ? "Begin to change" : "Complete"); - if (status && pThis) { - pThis->changeModeDetectThread(); + if (!status && pThis) { + pThis->setOsdMouse(); + pThis->hotplugListener(pThis->mSignalHpd); } } @@ -143,32 +144,5 @@ int PrimaryDevice::parseConfigFile() return status; } -void PrimaryDevice::changeModeDetectThread() -{ - pthread_t id; - int ret = pthread_create(&id, NULL, changeModeDetect, this); - if (ret != 0) - ETRACE("Create changeModeDetect error!\n"); -} - -void* PrimaryDevice::changeModeDetect(void* data) -{ - PrimaryDevice *pThis = (PrimaryDevice*)data; - bool modeChanged = false; - char lastMode[32]; - Utils::getSysfsStr(SYSFS_DISPLAY_MODE, lastMode); - do { - modeChanged = Utils::checkSysfsStatus(SYSFS_DISPLAY_MODE, lastMode, 32); - usleep(500 * 1000); - } while (!modeChanged); - - if (pThis->mSignalHpd) { - pThis->setOsdMouse(); - pThis->hotplugListener(1); - pThis->mSignalHpd = false; - } - return NULL; -} - } // namespace amlogic } // namespace android |