void CLCDOutput::Update(DWORD dwTimestamp) { if (m_pActiveScreen) { m_pActiveScreen->Update(dwTimestamp); } // check for expiration if (m_pActiveScreen && m_pActiveScreen->HasExpired()) { m_pActiveScreen = NULL; //m_nPriority = LGLCD_PRIORITY_FYI; -> needs to go so that if a // program sets priority to LGLCD_PRIORITY_BACKGROUND, that // priority sticks. OnScreenExpired(m_pActiveScreen); // Clear the bitmap ClearBitmap(m_pLastBitmap); // find the next active screen LCD_MGR_LIST::iterator it = m_LCDMgrList.begin(); while(it != m_LCDMgrList.end()) { CLCDManager *pMgr = *it; LCDUIASSERT(NULL != pMgr); if (!pMgr->HasExpired()) { ActivateScreen(pMgr); //m_nPriority = LGLCD_PRIORITY_FYI; -> needs to go so that if a // program sets priority to LGLCD_PRIORITY_BACKGROUND, that // priority sticks. break; } ++it; } // if no screen found, empty the screen at idle priority if (NULL == m_pActiveScreen) { if (LGLCD_INVALID_DEVICE != m_hDevice) { lgLcdUpdateBitmap(m_hDevice, &CLCDManager::GetLCDScreen()->hdr, LGLCD_ASYNC_UPDATE(LGLCD_PRIORITY_IDLE_NO_SHOW)); } } } // check for lcd devices if (LGLCD_INVALID_DEVICE == m_hDevice) { EnumerateDevices(); } }
HRESULT CLCDOutput::Initialize(lgLcdConnectContext* pContext, BOOL bUseWindow) { UNREFERENCED_PARAMETER(bUseWindow); DWORD res = ERROR_SUCCESS; CLCDManager::Initialize(); // initialize our screens LCD_MGR_LIST::iterator it = m_LCDMgrList.begin(); while(it != m_LCDMgrList.end()) { CLCDManager *pMgr = *it; LCDUIASSERT(NULL != pMgr); pMgr->Initialize(); ++it; } // LCD Stuff LCDUIASSERT(lInitCount >= 0); if(1 == InterlockedIncrement(&lInitCount)) { // need to call lgLcdInit once res = lgLcdInit(); if (ERROR_SUCCESS != res) { InterlockedDecrement(&lInitCount); LCDUITRACE(_T("WARNING: lgLcdInit failed\n")); return E_FAIL; } } m_lcdConnectCtxEx.appFriendlyName = _T("My App"); m_lcdConnectCtxEx.isPersistent = FALSE; m_lcdConnectCtxEx.isAutostartable = FALSE; m_lcdConnectCtxEx.connection = LGLCD_INVALID_CONNECTION; // Initialize the added version 3.0 API fields m_lcdConnectCtxEx.dwAppletCapabilitiesSupported = LGLCD_APPLET_CAP_BASIC; m_lcdConnectCtxEx.dwReserved1 = 0; m_lcdConnectCtxEx.onNotify.notificationCallback = NULL; m_lcdConnectCtxEx.onNotify.notifyContext = NULL; // if user passed in the context, fill it up if (NULL != pContext) { memcpy(&m_lcdConnectCtxEx, pContext, sizeof(lgLcdConnectContext)); } return S_OK; }
HRESULT CLCDOutput::Initialize(lgLcdConnectContext* pContext, BOOL bUseWindow) { UNREFERENCED_PARAMETER(bUseWindow); DWORD res = ERROR_SUCCESS; CLCDManager::Initialize(); // initialize our screens LCD_MGR_LIST::iterator it = m_LCDMgrList.begin(); while(it != m_LCDMgrList.end()) { CLCDManager *pMgr = *it; LOGIASSERT(NULL != pMgr); pMgr->Initialize(); ++it; } // LCD Stuff LOGIASSERT(lInitCount >= 0); if(1 == InterlockedIncrement(&lInitCount)) { // need to call lgLcdInit once res = lgLcdInit(); if (ERROR_SUCCESS != res) { InterlockedDecrement(&lInitCount); LOGITRACE(_T("WARNING: lgLcdInit failed\n")); return E_FAIL; } } m_lcdConnectCtx.appFriendlyName = _T("My App"); m_lcdConnectCtx.isPersistent = FALSE; m_lcdConnectCtx.isAutostartable = FALSE; m_lcdConnectCtx.connection = LGLCD_INVALID_CONNECTION; // if user passed in the context, fill it up if (NULL != pContext) { memcpy(&m_lcdConnectCtx, pContext, sizeof(lgLcdConnectContext)); } return S_OK; }
void CLCDOutput::Update(DWORD dwTimestamp) { if (m_pActiveScreen) { m_pActiveScreen->Update(dwTimestamp); } // check for expiration if (m_pActiveScreen && m_pActiveScreen->HasExpired(dwTimestamp)) { m_pActiveScreen = NULL; //m_nPriority = LGLCD_PRIORITY_FYI; -> needs to go so that if a // program sets priority to LGLCD_PRIORITY_BACKGROUND, that // priority sticks. OnScreenExpired(m_pActiveScreen); // find the next active screen LCD_MGR_LIST::iterator it = m_LCDMgrList.begin(); while(it != m_LCDMgrList.end()) { CLCDManager *pMgr = *it; LOGIASSERT(NULL != pMgr); if (!pMgr->HasExpired(dwTimestamp)) { ActivateScreen(pMgr); //m_nPriority = LGLCD_PRIORITY_FYI; -> needs to go so that if a // program sets priority to LGLCD_PRIORITY_BACKGROUND, that // priority sticks. break; } ++it; } } // check for lcd devices if (LGLCD_INVALID_DEVICE == m_hDevice) { EnumerateDevices(); } }