Files
wxWidgets/src/motif/timer.cpp
Václav Slavík ad81651f00 removed USE_SHARED_LIBRARY(IES)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4950 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1999-12-14 23:57:30 +00:00

92 lines
1.9 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: timer.cpp
// Purpose: wxTimer implementation
// Author: Julian Smart
// Modified by:
// Created: 17/09/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "timer.h"
#endif
#include "wx/timer.h"
#include "wx/app.h"
#include "wx/list.h"
#ifdef __VMS__
#pragma message disable nosimpint
#endif
#include <Xm/Xm.h>
#ifdef __VMS__
#pragma message enable nosimpint
#endif
#include "wx/motif/private.h"
IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxObject)
static wxList wxTimerList(wxKEY_INTEGER);
void wxTimerCallback (wxTimer * timer)
{
// Check to see if it's still on
if (!wxTimerList.Find((long)timer))
return;
if (timer->m_id == 0)
return; // Avoid to process spurious timer events
if (!timer->m_oneShot)
timer->m_id = XtAppAddTimeOut((XtAppContext) wxTheApp->GetAppContext(),
timer->m_milli,
(XtTimerCallbackProc) wxTimerCallback,
(XtPointer) timer);
else
timer->m_id = 0;
timer->Notify();
}
wxTimer::wxTimer()
{
m_id = 0;
}
wxTimer::~wxTimer()
{
wxTimer::Stop();
wxTimerList.DeleteObject(this);
}
bool wxTimer::Start(int milliseconds, bool mode)
{
Stop();
(void)wxTimerBase::Start(milliseconds, mode);
if (!wxTimerList.Find((long)this))
wxTimerList.Append((long)this, this);
m_id = XtAppAddTimeOut((XtAppContext) wxTheApp->GetAppContext(),
m_milli,
(XtTimerCallbackProc) wxTimerCallback,
(XtPointer) this);
return TRUE;
}
void wxTimer::Stop()
{
if (m_id > 0)
{
XtRemoveTimeOut (m_id);
m_id = 0;
}
m_milli = 0 ;
}