mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-28 15:03:40 +01:00
84 lines
2.3 KiB
C++
84 lines
2.3 KiB
C++
![]() |
/////////////////////////////////////////////////////////////////////////////
|
||
|
// Name: src/common/timerimpl.cpp
|
||
|
// Purpose: wxTimerBase implementation
|
||
|
// Author: Julian Smart, Guillermo Rodriguez, Vadim Zeitlin
|
||
|
// Modified by: VZ: extracted all non-wxTimer stuff in stopwatch.cpp (20.06.03)
|
||
|
// Created: 04/01/98
|
||
|
// Copyright: (c) Julian Smart
|
||
|
// (c) 1999 Guillermo Rodriguez <guille@iies.es>
|
||
|
// Licence: wxWindows licence
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
// ============================================================================
|
||
|
// declarations
|
||
|
// ============================================================================
|
||
|
|
||
|
// ----------------------------------------------------------------------------
|
||
|
// wxWin headers
|
||
|
// ----------------------------------------------------------------------------
|
||
|
|
||
|
// For compilers that support precompilation, includes "wx.h".
|
||
|
#include "wx/wxprec.h"
|
||
|
|
||
|
#ifdef __BORLANDC__
|
||
|
#pragma hdrstop
|
||
|
#endif
|
||
|
|
||
|
#if wxUSE_TIMER
|
||
|
|
||
|
#include "wx/private/timer.h"
|
||
|
#include "wx/utils.h" // for wxNewId()
|
||
|
#include "wx/thread.h"
|
||
|
|
||
|
wxTimerImpl::wxTimerImpl(wxTimer *timer)
|
||
|
{
|
||
|
m_timer = timer;
|
||
|
m_owner = NULL;
|
||
|
m_idTimer = wxID_ANY;
|
||
|
m_milli = 0;
|
||
|
m_oneShot = false;
|
||
|
}
|
||
|
|
||
|
void wxTimerImpl::SetOwner(wxEvtHandler *owner, int timerid)
|
||
|
{
|
||
|
m_owner = owner;
|
||
|
m_idTimer = timerid == wxID_ANY ? wxNewId() : timerid;
|
||
|
}
|
||
|
|
||
|
void wxTimerImpl::SendEvent()
|
||
|
{
|
||
|
wxTimerEvent event(*m_timer);
|
||
|
(void)m_owner->SafelyProcessEvent(event);
|
||
|
}
|
||
|
|
||
|
bool wxTimerImpl::Start(int milliseconds, bool oneShot)
|
||
|
{
|
||
|
// under MSW timers only work when they're started from the main thread so
|
||
|
// let the caller know about it
|
||
|
#if wxUSE_THREADS
|
||
|
wxASSERT_MSG( wxThread::IsMain(),
|
||
|
wxT("timer can only be started from the main thread") );
|
||
|
#endif // wxUSE_THREADS
|
||
|
|
||
|
if ( IsRunning() )
|
||
|
{
|
||
|
// not stopping the already running timer might work for some
|
||
|
// platforms (no problems under MSW) but leads to mysterious crashes
|
||
|
// on the others (GTK), so to be on the safe side do it here
|
||
|
Stop();
|
||
|
}
|
||
|
|
||
|
if ( milliseconds != -1 )
|
||
|
{
|
||
|
m_milli = milliseconds;
|
||
|
}
|
||
|
|
||
|
m_oneShot = oneShot;
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
|
||
|
#endif // wxUSE_TIMER
|
||
|
|