void ExternalDisplay::processUEventOnline(const char *str) { const char *s1 = str + (strlen(str)-strlen(DEVICE_NODE_FB1)); // check if it is for FB1 if(strncmp(s1,DEVICE_NODE_FB1, strlen(DEVICE_NODE_FB1))== 0) { if(isHDMIConfigured()) { // HDMI connect event. // Tear-down WFD if it is active. if(mExternalDisplay == EXTERN_DISPLAY_FB2) { closeFrameBuffer(); setExternalDisplay(EXTERN_DISPLAY_NONE); triggerRefresh(); } } readResolution(); //Get the best mode and set setResolution(getBestMode()); enableHDMIVsync(EXTERN_DISPLAY_FB1); setExternalDisplay(EXTERN_DISPLAY_FB1); triggerRefresh(); } else if(strncmp(s1, DEVICE_NODE_FB2, strlen(DEVICE_NODE_FB2)) == 0) { // WFD connect event if(mExternalDisplay == EXTERN_DISPLAY_FB1) { // HDMI has higher priority. // Do Not Override. }else { // WFD is connected openFrameBuffer(EXTERN_DISPLAY_FB2); setExternalDisplay(EXTERN_DISPLAY_FB2); triggerRefresh(); } } }
ExternalDisplay::ExternalDisplay(hwc_context_t* ctx):mFd(-1), mCurrentMode(-1), mExternalDisplay(0), mModeCount(0), mHwcContext(ctx) { memset(&mVInfo, 0, sizeof(mVInfo)); //Enable HPD for HDMI if(isHDMIConfigured()) { writeHPDOption(1); } }
void ExternalDisplay::processUEventOffline(const char *str) { const char *s1 = str + (strlen(str)-strlen(DEVICE_NODE_FB1)); // check if it is for FB1 if(strncmp(s1,DEVICE_NODE_FB1, strlen(DEVICE_NODE_FB1))== 0) { if(isHDMIConfigured()) { enableHDMIVsync(EXTERN_DISPLAY_NONE); closeFrameBuffer(); resetInfo(); } else { closeFrameBuffer(); } } else if(strncmp(s1, DEVICE_NODE_FB2, strlen(DEVICE_NODE_FB2)) == 0) { closeFrameBuffer(); } setExternalDisplay(EXTERN_DISPLAY_NONE); }