-  if (millisecs != -1) m_time = millisecs;
-  m_oneShot = oneShot;
-  m_tag = gtk_timeout_add( millisecs, timeout_callback, this );
+    if ( !wxTimerImpl::Start(millisecs, oneShot) )
+        return false;
+
+    wxASSERT_MSG( !m_sourceId, _T("shouldn't be still running") );
+
+    m_sourceId = g_timeout_add(m_milli, timeout_callback, this);
+
+    return true;