summaryrefslogtreecommitdiff
path: root/fpdfsdk/fpdfxfa/cxfa_fwladaptertimermgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fpdfsdk/fpdfxfa/cxfa_fwladaptertimermgr.cpp')
-rw-r--r--fpdfsdk/fpdfxfa/cxfa_fwladaptertimermgr.cpp46
1 files changed, 33 insertions, 13 deletions
diff --git a/fpdfsdk/fpdfxfa/cxfa_fwladaptertimermgr.cpp b/fpdfsdk/fpdfxfa/cxfa_fwladaptertimermgr.cpp
index 5a9ae95be7..39aa72be87 100644
--- a/fpdfsdk/fpdfxfa/cxfa_fwladaptertimermgr.cpp
+++ b/fpdfsdk/fpdfxfa/cxfa_fwladaptertimermgr.cpp
@@ -6,17 +6,33 @@
#include "fpdfsdk/fpdfxfa/cxfa_fwladaptertimermgr.h"
+#include <utility>
#include <vector>
#include "fpdfsdk/cpdfsdk_formfillenvironment.h"
#include "fpdfsdk/fsdk_define.h"
+namespace {
+
+class CFWL_FWLAdapterTimerInfo : public CFWL_TimerInfo {
+ public:
+ CFWL_FWLAdapterTimerInfo(IFWL_AdapterTimerMgr* mgr,
+ int32_t event,
+ CFWL_Timer* timer)
+ : CFWL_TimerInfo(mgr), idEvent(event), pTimer(timer) {}
+
+ int32_t idEvent;
+ CFWL_Timer* pTimer;
+};
+
+} // namespace
+
std::vector<CFWL_TimerInfo*>* CXFA_FWLAdapterTimerMgr::s_TimerArray = nullptr;
-void CXFA_FWLAdapterTimerMgr::Start(IFWL_Timer* pTimer,
+void CXFA_FWLAdapterTimerMgr::Start(CFWL_Timer* pTimer,
uint32_t dwElapse,
bool bImmediately,
- IFWL_TimerInfo** pTimerInfo) {
+ CFWL_TimerInfo** pTimerInfo) {
if (!m_pFormFillEnv)
return;
@@ -24,22 +40,24 @@ void CXFA_FWLAdapterTimerMgr::Start(IFWL_Timer* pTimer,
if (!s_TimerArray)
s_TimerArray = new std::vector<CFWL_TimerInfo*>;
- s_TimerArray->push_back(new CFWL_TimerInfo(this, id_event, pTimer));
- *pTimerInfo = s_TimerArray->back();
+ *pTimerInfo = new CFWL_FWLAdapterTimerInfo(this, id_event, pTimer);
+ s_TimerArray->push_back(*pTimerInfo);
}
-void CXFA_FWLAdapterTimerMgr::Stop(IFWL_TimerInfo* pTimerInfo) {
+void CXFA_FWLAdapterTimerMgr::Stop(CFWL_TimerInfo* pTimerInfo) {
if (!pTimerInfo || !m_pFormFillEnv)
return;
- CFWL_TimerInfo* pInfo = static_cast<CFWL_TimerInfo*>(pTimerInfo);
+ CFWL_FWLAdapterTimerInfo* pInfo =
+ static_cast<CFWL_FWLAdapterTimerInfo*>(pTimerInfo);
m_pFormFillEnv->KillTimer(pInfo->idEvent);
- if (s_TimerArray) {
- auto it = std::find(s_TimerArray->begin(), s_TimerArray->end(), pInfo);
- if (it != s_TimerArray->end()) {
- s_TimerArray->erase(it);
- delete pInfo;
- }
+ if (!s_TimerArray)
+ return;
+
+ auto it = std::find(s_TimerArray->begin(), s_TimerArray->end(), pInfo);
+ if (it != s_TimerArray->end()) {
+ s_TimerArray->erase(it);
+ delete pInfo;
}
}
@@ -48,7 +66,9 @@ void CXFA_FWLAdapterTimerMgr::TimerProc(int32_t idEvent) {
if (!s_TimerArray)
return;
- for (CFWL_TimerInfo* pInfo : *s_TimerArray) {
+ for (const auto info : *s_TimerArray) {
+ CFWL_FWLAdapterTimerInfo* pInfo =
+ static_cast<CFWL_FWLAdapterTimerInfo*>(info);
if (pInfo->idEvent == idEvent) {
pInfo->pTimer->Run(pInfo);
break;