Files
libreoffice/vcl/inc/saltimer.hxx
Luboš Luňák 06d731428e make idle timers actually activate only when idle
Without this, they can activate after any call to the event processing,
so they may activate in cases such as when updating progressbar while
loading a document, or on repeated user input (so things like showing
spellchecking get updated when the app is busy redrawing). This change
makes idle timers activate only when there's nothing more for the event
loop to process. It's a bit of a question if this doesn't break something
that happens to expect idle timers to be not-really-idle timers, but oh well.

No change for non-X11 platforms, as there's I don't know how to check
the event queues.

Change-Id: I074a88f2f5eeb4b456a11916a0ec2ad6f54dfbab
2015-02-04 15:44:09 +01:00

60 lines
1.8 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef INCLUDED_VCL_INC_SALTIMER_HXX
#define INCLUDED_VCL_INC_SALTIMER_HXX
#include <tools/solar.h>
#include <vcl/dllapi.h>
#include <salwtype.hxx>
/*
* note: there will be only a single instance of SalTimer
* SalTimer originally had only static methods, but
* this needed to be virtualized for the sal plugin migration
*/
class VCL_PLUGIN_PUBLIC SalTimer
{
SALTIMERPROC m_pProc;
public:
SalTimer() : m_pProc( NULL ) {}
virtual ~SalTimer();
// AutoRepeat and Restart
virtual void Start( sal_uLong nMS ) = 0;
virtual void Stop() = 0;
// Callbacks (indepen in \sv\source\app\timer.cxx)
void SetCallback( SALTIMERPROC pProc )
{
m_pProc = pProc;
}
void CallCallback( bool idle )
{
if( m_pProc )
m_pProc( idle );
}
};
#endif // INCLUDED_VCL_INC_SALTIMER_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */