1 // Copyright 2014 PDFium Authors. All rights reserved.
\r
2 // Use of this source code is governed by a BSD-style license that can be
\r
3 // found in the LICENSE file.
\r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
\r
7 #include "../../include/fsdk_define.h"
\r
8 #include "../../include/fsdk_mgr.h"
\r
9 #include "../../include/fpdfxfa/fpdfxfa_util.h"
\r
11 CFX_PtrArray CXFA_FWLAdapterTimerMgr::ms_timerArray;
\r
13 FWL_ERR CXFA_FWLAdapterTimerMgr::Start(IFWL_Timer *pTimer, FX_DWORD dwElapse, FWL_HTIMER &hTimer, FX_BOOL bImmediately /* = TRUE */)
\r
17 uint32_t uIDEvent = m_pEnv->FFI_SetTimer(dwElapse, TimerProc);
\r
18 CFWL_TimerInfo *pInfo = FX_NEW CFWL_TimerInfo;
\r
19 pInfo->uIDEvent = uIDEvent;
\r
20 pInfo->pTimer = pTimer;
\r
21 ms_timerArray.Add(pInfo);
\r
23 hTimer = (FWL_HTIMER)pInfo;
\r
24 return FWL_ERR_Succeeded;
\r
27 return FWL_ERR_Indefinite;
\r
30 FWL_ERR CXFA_FWLAdapterTimerMgr::Stop(FWL_HTIMER hTimer)
\r
32 if (!hTimer) return FWL_ERR_Indefinite;
\r
36 CFWL_TimerInfo *pInfo = (CFWL_TimerInfo*)hTimer;
\r
38 m_pEnv->FFI_KillTimer(pInfo->uIDEvent);
\r
40 int32_t index = ms_timerArray.Find(pInfo);
\r
43 ms_timerArray.RemoveAt(index);
\r
46 return FWL_ERR_Succeeded;
\r
49 return FWL_ERR_Indefinite;
\r
52 void CXFA_FWLAdapterTimerMgr::TimerProc(int32_t idEvent)
\r
54 CFWL_TimerInfo *pInfo = NULL;
\r
55 int32_t iCount = CXFA_FWLAdapterTimerMgr::ms_timerArray.GetSize();
\r
56 for (int32_t i = 0; i < iCount; i++)
\r
58 CFWL_TimerInfo *pTemp = (CFWL_TimerInfo*)CXFA_FWLAdapterTimerMgr::ms_timerArray.GetAt(i);
\r
59 if (pTemp->uIDEvent == idEvent)
\r
61 pInfo = pTemp; break;
\r
66 pInfo->pTimer->Run((FWL_HTIMER)pInfo);
\r