Files
wxWidgets/src/gtk1/timer.cpp
Dimitri Schoolwerth 80fdcdb90e No changes, synchronised source names that appear commented at the top of files with the actual path to the files.
Fixed commented names (path, filename, and extension) of files in include/ and src/. Prepended the names in src/ with "src/" everywhere, while starting those in include/wx/ with "wx/".

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67254 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-03-20 00:14:35 +00:00

67 lines
1.5 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: src/gtk1/timer.cpp
// Purpose: wxTimer implementation
// Author: Robert Roebling
// Id: $Id$
// Copyright: (c) 1998 Robert Roebling
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/wxprec.h"
#if wxUSE_TIMER
#include "wx/gtk1/private/timer.h"
#include "gtk/gtk.h"
// ----------------------------------------------------------------------------
// wxTimer
// ----------------------------------------------------------------------------
extern "C" {
static gint timeout_callback(void *data)
{
wxTimerImpl * const timer = (wxTimerImpl *)data;
const bool keepGoing = !timer->IsOneShot();
if ( !keepGoing )
timer->Stop();
// When getting called from GDK's timer handler we
// are no longer within GDK's grab on the GUI
// thread so we must lock it here ourselves.
gdk_threads_enter();
timer->Notify();
// Release lock again.
gdk_threads_leave();
return keepGoing;
}
}
bool wxGTKTimerImpl::Start(int millisecs, bool oneShot)
{
if ( !wxTimerImpl::Start(millisecs, oneShot) )
return false;
wxASSERT_MSG( m_tag == -1, wxT("shouldn't be still running") );
m_tag = gtk_timeout_add( m_milli, timeout_callback, this );
return true;
}
void wxGTKTimerImpl::Stop()
{
wxASSERT_MSG( m_tag != -1, wxT("should be running") );
gtk_timeout_remove( m_tag );
m_tag = -1;
}
#endif // wxUSE_TIMER