+// ----------------------------------------------------------------------------
+// private globals
+// ----------------------------------------------------------------------------
+
+// define a hash containing all the timers: it is indexed by timer id and
+// contains the corresponding timer
+WX_DECLARE_HASH_MAP(WPARAM, wxMSWTimerImpl *, wxIntegerHash, wxIntegerEqual,
+ wxTimerMap);
+
+// instead of using a global here, wrap it in a static function as otherwise it
+// could have been used before being initialized if a timer object were created
+// globally
+static wxTimerMap& TimerMap()
+{
+ static wxTimerMap s_timerMap;
+
+ return s_timerMap;
+}
+
+// This gets a unique, non-zero timer ID and creates an entry in the TimerMap
+UINT_PTR GetNewTimerId(wxMSWTimerImpl *t)
+{
+ static UINT_PTR lastTimerId = 0;
+
+ while (lastTimerId == 0 ||
+ TimerMap().find(lastTimerId) != TimerMap().end())
+ {
+ lastTimerId = lastTimerId + 1;
+ }
+
+ TimerMap()[lastTimerId] = t;
+
+ return lastTimerId;
+}