avmedia/source/framework/mediacontrol.cxx | 2 avmedia/source/framework/soundhandler.cxx | 2 avmedia/source/opengl/oglplayer.cxx | 2 basctl/source/basicide/baside2b.cxx | 4 basctl/source/dlged/dlged.cxx | 2 chart2/source/view/charttypes/GL3DBarChart.cxx | 3 cui/source/dialogs/cuigaldlg.cxx | 2 cui/source/dialogs/linkdlg.cxx | 2 cui/source/dialogs/thesdlg.cxx | 2 cui/source/options/optjava.cxx | 2 cui/source/tabpages/backgrnd.cxx | 2 cui/source/tabpages/chardlg.cxx | 2 cui/source/tabpages/macroass.cxx | 12 dbaccess/source/ui/querydesign/JoinTableView.cxx | 2 desktop/source/app/app.cxx | 5 desktop/source/deployment/gui/dp_gui_dialog2.cxx | 4 desktop/source/lib/init.cxx | 2 drawinglayer/source/primitive2d/textlayoutdevice.cxx | 2 drawinglayer/source/processor2d/vclhelperbufferdevice.cxx | 1 editeng/source/editeng/impedit2.cxx | 5 editeng/source/editeng/impedit5.cxx | 2 extensions/source/bibliography/bibcont.cxx | 2 extensions/source/bibliography/toolbar.cxx | 2 extensions/source/update/ui/updatecheckui.cxx | 2 forms/source/component/ListBox.cxx | 2 formula/source/ui/dlg/formula.cxx | 2 formula/source/ui/dlg/funcutl.cxx | 4 framework/source/layoutmanager/layoutmanager.cxx | 4 framework/source/services/autorecovery.cxx | 1 framework/source/uielement/menubarmanager.cxx | 2 framework/source/uielement/toolbarmanager.cxx | 1 include/tools/link.hxx | 1 include/vcl/dockwin.hxx | 7 include/vcl/idle.hxx | 44 ++- include/vcl/scheduler.hxx | 86 +++--- include/vcl/syswin.hxx | 7 include/vcl/timer.hxx | 52 ++- linguistic/source/lngsvcmgr.cxx | 2 reportdesign/source/ui/report/DesignView.cxx | 2 sc/inc/chartlis.hxx | 3 sc/source/core/data/documen2.cxx | 2 sc/source/core/tool/chartlis.cxx | 14 - sc/source/core/tool/refreshtimer.cxx | 2 sc/source/ui/app/inputhdl.cxx | 79 ++---- sc/source/ui/app/scmod.cxx | 5 sc/source/ui/dbgui/sfiltdlg.cxx | 2 sc/source/ui/docshell/autostyl.cxx | 2 sc/source/ui/docshell/externalrefmgr.cxx | 1 sc/source/ui/miscdlgs/acredlin.cxx | 5 sc/source/ui/miscdlgs/anyrefdg.cxx | 2 sc/source/ui/miscdlgs/conflictsdlg.cxx | 3 sc/source/ui/navipi/navipi.cxx | 2 sc/source/ui/pagedlg/tphfedit.cxx | 2 sd/source/core/drawdoc4.cxx | 2 sd/source/ui/dlg/brkdlg.cxx | 9 sd/source/ui/dlg/filedlg.cxx | 3 sd/source/ui/framework/module/ShellStackGuard.cxx | 2 sd/source/ui/inc/BreakDlg.hxx | 2 sd/source/ui/slideshow/slideshowimpl.cxx | 2 sd/source/ui/slidesorter/controller/SlsAnimator.cxx | 2 sd/source/ui/view/sdview.cxx | 4 sfx2/source/appl/appcfg.cxx | 3 sfx2/source/appl/newhelp.cxx | 8 sfx2/source/control/bindings.cxx | 53 ++-- sfx2/source/control/dispatch.cxx | 7 sfx2/source/control/itemdel.cxx | 4 sfx2/source/dialog/basedlgs.cxx | 6 sfx2/source/dialog/dinfdlg.cxx | 4 sfx2/source/dialog/dockwin.cxx | 3 sfx2/source/dialog/filedlghelper.cxx | 6 sfx2/source/dialog/templdlg.cxx | 2 sfx2/source/doc/new.cxx | 2 solenv/bin/install-gdb-printers | 3 solenv/gdb/libreoffice/vcl.py | 98 +++++++ starmath/source/edit.cxx | 4 svtools/source/contnr/imivctl1.cxx | 30 +- svtools/source/contnr/svimpbox.cxx | 4 svtools/source/contnr/treelistbox.cxx | 3 svtools/source/control/tabbar.cxx | 5 svtools/source/dialogs/wizdlg.cxx | 2 svtools/source/graphic/grfcache.cxx | 2 svtools/source/graphic/grfmgr.cxx | 2 svtools/source/misc/filechangedchecker.cxx | 2 svx/source/dialog/_contdlg.cxx | 4 svx/source/dialog/fontwork.cxx | 2 svx/source/dialog/graphctl.cxx | 2 svx/source/dialog/imapdlg.cxx | 2 svx/source/dialog/svxbmpnumvalueset.cxx | 2 svx/source/form/datanavi.cxx | 2 svx/source/form/fmshimp.cxx | 1 svx/source/form/formcontroller.cxx | 2 svx/source/sdr/contact/objectcontactofpageview.cxx | 2 svx/source/sdr/contact/viewobjectcontactofpageobj.cxx | 2 svx/source/sdr/event/eventhandler.cxx | 2 svx/source/sdr/overlay/overlaymanagerbuffered.cxx | 3 svx/source/sidebar/PanelLayout.cxx | 3 svx/source/sidebar/media/MediaPlaybackPanel.cxx | 2 svx/source/stbctrls/modctrl.cxx | 2 svx/source/svdraw/svdetc.cxx | 3 svx/source/svdraw/svdibrow.cxx | 2 svx/source/svdraw/svdpntv.cxx | 3 svx/source/tbxctrls/grafctrl.cxx | 2 sw/inc/dbmgr.hxx | 5 sw/qa/extras/uiwriter/uiwriter.cxx | 2 sw/source/core/doc/DocumentStatisticsManager.cxx | 3 sw/source/core/doc/DocumentTimerManager.cxx | 3 sw/source/core/doc/docnew.cxx | 3 sw/source/core/docnode/threadmanager.cxx | 2 sw/source/core/txtnode/SwGrammarContact.cxx | 1 sw/source/core/unocore/unochart.cxx | 1 sw/source/ui/dbui/mmoutputtypepage.cxx | 2 sw/source/ui/envelp/labfmt.cxx | 2 sw/source/uibase/dbui/dbmgr.cxx | 19 - sw/source/uibase/docvw/edtwin.cxx | 2 sw/source/uibase/docvw/srcedtw.cxx | 2 sw/source/uibase/misc/swruler.cxx | 1 sw/source/uibase/uiview/view.cxx | 1 sw/source/uibase/utlui/navipi.cxx | 2 sw/source/uibase/utlui/unotools.cxx | 2 toolkit/source/awt/vclxtoolkit.cxx | 2 vcl/backendtest/VisualBackendTest.cxx | 2 vcl/inc/saltimer.hxx | 11 vcl/inc/svdata.hxx | 2 vcl/opengl/gdiimpl.cxx | 9 vcl/osx/salinst.cxx | 2 vcl/qa/cppunit/lifecycle.cxx | 2 vcl/qa/cppunit/timer.cxx | 4 vcl/source/app/help.cxx | 8 vcl/source/app/idle.cxx | 38 -- vcl/source/app/scheduler.cxx | 184 ++++++-------- vcl/source/app/svapp.cxx | 6 vcl/source/app/timer.cxx | 79 +----- vcl/source/control/edit.cxx | 3 vcl/source/control/quickselectionengine.cxx | 1 vcl/source/control/scrbar.cxx | 1 vcl/source/edit/textdata.cxx | 6 vcl/source/edit/texteng.cxx | 1 vcl/source/window/cursor.cxx | 1 vcl/source/window/dockmgr.cxx | 7 vcl/source/window/dockwin.cxx | 6 vcl/source/window/menufloatingwindow.cxx | 5 vcl/source/window/paint.cxx | 2 vcl/source/window/scrwnd.cxx | 1 vcl/source/window/seleng.cxx | 1 vcl/source/window/splitwin.cxx | 1 vcl/source/window/syswin.cxx | 3 vcl/source/window/toolbox.cxx | 5 vcl/source/window/window.cxx | 6 vcl/source/window/window2.cxx | 1 vcl/source/window/wrkwin.cxx | 2 vcl/unx/generic/print/genprnpsp.cxx | 2 vcl/unx/generic/window/salframe.cxx | 1 vcl/unx/gtk/gtksalmenu.cxx | 2 vcl/unx/kde4/KDEXLib.cxx | 20 - 154 files changed, 684 insertions(+), 527 deletions(-)
New commits: commit eaf2b87a2e4a2a72c3efdf979c7b87fad5c7cbe5 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Thu Jan 5 09:47:50 2017 +0100 KDE4 Qt always processes all pending events Change-Id: I6a6e37c36a64640b641b116867da5c63c9d36bca diff --git a/vcl/unx/kde4/KDEXLib.cxx b/vcl/unx/kde4/KDEXLib.cxx index 06340be..8d59315 100644 --- a/vcl/unx/kde4/KDEXLib.cxx +++ b/vcl/unx/kde4/KDEXLib.cxx @@ -301,21 +301,19 @@ SalYieldResult KDEXLib::Yield( bool bWait, bool bHandleAllCurrentEvents ) } } -SalYieldResult KDEXLib::processYield( bool bWait, bool bHandleAllCurrentEvents ) +/** + * Quoting the Qt docs: [QAbstractEventDispatcher::processEvents] processes + * pending events that match flags until there are no more events to process. + */ +SalYieldResult KDEXLib::processYield( bool bWait, bool ) { m_blockIdleTimeout = !bWait; QAbstractEventDispatcher* dispatcher = QAbstractEventDispatcher::instance( qApp->thread()); bool wasEvent = false; - for( int cnt = bHandleAllCurrentEvents ? 100 : 1; - cnt > 0; - --cnt ) - { - if( !dispatcher->processEvents( QEventLoop::AllEvents )) - break; - wasEvent = true; - } - if( bWait && !wasEvent ) - dispatcher->processEvents( QEventLoop::WaitForMoreEvents ); + if ( bWait ) + wasEvent = dispatcher->processEvents( QEventLoop::WaitForMoreEvents ); + else + wasEvent = dispatcher->processEvents( QEventLoop::AllEvents ); m_blockIdleTimeout = false; return wasEvent ? SalYieldResult::EVENT : SalYieldResult::TIMEOUT; commit 59b84bc78dff2adb265d9fa8edb4c42794cf9771 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Wed Sep 14 13:48:02 2016 +0200 Change Idle to be a Timer subclass Drops a lot of duplicated code, as Idle is just a convenience class for instant, mostly low priority timers. Change-Id: I847592e92e86d15ab1cab168bf0e667322e48048 diff --git a/basctl/source/basicide/baside2b.cxx b/basctl/source/basicide/baside2b.cxx index 12ccf1c..a7d88ef 100644 --- a/basctl/source/basicide/baside2b.cxx +++ b/basctl/source/basicide/baside2b.cxx @@ -1325,7 +1325,7 @@ void EditorWindow::DestroyProgress() void EditorWindow::ForceSyntaxTimeout() { aSyntaxIdle.Stop(); - aSyntaxIdle.GetIdleHdl().Call(&aSyntaxIdle); + aSyntaxIdle.Invoke(); } // BreakPointWindow diff --git a/editeng/source/editeng/impedit5.cxx b/editeng/source/editeng/impedit5.cxx index 0d30081..f089225 100644 --- a/editeng/source/editeng/impedit5.cxx +++ b/editeng/source/editeng/impedit5.cxx @@ -809,7 +809,7 @@ void IdleFormattter::ForceTimeout() if ( IsActive() ) { Stop(); - ((Link<Idle *, void>&)GetIdleHdl()).Call( this ); + Invoke(); } } diff --git a/framework/source/layoutmanager/layoutmanager.cxx b/framework/source/layoutmanager/layoutmanager.cxx index b6303be..d78a4a7 100644 --- a/framework/source/layoutmanager/layoutmanager.cxx +++ b/framework/source/layoutmanager/layoutmanager.cxx @@ -2668,8 +2668,7 @@ throw( uno::RuntimeException, std::exception ) m_bMustDoLayout = true; if ( !m_aAsyncLayoutTimer.IsActive() ) { - const Link<Timer *, void>& aLink = m_aAsyncLayoutTimer.GetTimeoutHdl(); - aLink.Call( &m_aAsyncLayoutTimer ); + m_aAsyncLayoutTimer.Invoke(); } if ( m_nLockCount == 0 ) m_aAsyncLayoutTimer.Start(); diff --git a/include/tools/link.hxx b/include/tools/link.hxx index 8b65be4..de76c25 100644 --- a/include/tools/link.hxx +++ b/include/tools/link.hxx @@ -102,6 +102,7 @@ public: { return function_ == other.function_ && instance_ == other.instance_; }; void *GetInstance() const { return instance_; } + Stub* GetFunction() const { return function_; } private: Stub * function_; diff --git a/include/vcl/idle.hxx b/include/vcl/idle.hxx index 9f491e1..85ea758 100644 --- a/include/vcl/idle.hxx +++ b/include/vcl/idle.hxx @@ -20,12 +20,19 @@ #ifndef INCLUDED_VCL_IDLE_HXX #define INCLUDED_VCL_IDLE_HXX -#include <tools/link.hxx> -#include <vcl/scheduler.hxx> +#include <vcl/timer.hxx> -class VCL_DLLPUBLIC Idle : public Task +/** + * An idle is a timer to be scheduled immediately. + * + * It's - more or less - just a convenience class. + */ +class VCL_DLLPUBLIC Idle : public Timer { - Link<Idle *, void> maIdleHdl; // Callback Link +private: + // Delete all timeout specific functions, we don't want in an Idle + void SetTimeout( sal_uInt64 nTimeoutMs ) = delete; + sal_uInt64 GetTimeout() const = delete; protected: virtual bool ReadyForSchedule( bool bIdle, sal_uInt64 nTimeNow ) const override; @@ -34,18 +41,23 @@ protected: public: Idle( const sal_Char *pDebugName = nullptr ); - Idle( const Idle& rIdle ); - virtual void Start() override; + virtual void Start() override; - /// Make it possible to associate a callback with this idle handler - /// of course, you can also sub-class and override 'Invoke' - void SetIdleHdl( const Link<Idle *, void>& rLink ) { maIdleHdl = rLink; } - const Link<Idle *, void>& GetIdleHdl() const { return maIdleHdl; } - virtual void Invoke() override; - Idle& operator=( const Idle& rIdle ); + /** + * Convenience function for more readable code + * + * TODO: actually rename it and it's instances to SetInvokeHandler + */ + inline void SetIdleHdl( const Link<Idle *, void>& rLink ); }; +inline void Idle::SetIdleHdl( const Link<Idle*, void> &rLink ) +{ + SetInvokeHandler( Link<Timer*, void>( rLink.GetInstance(), + reinterpret_cast< Link<Timer*, void>::Stub* >( rLink.GetFunction()) ) ); +} + #endif // INCLUDED_VCL_IDLE_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/vcl/timer.hxx b/include/vcl/timer.hxx index 19a882f..07fb9a8 100644 --- a/include/vcl/timer.hxx +++ b/include/vcl/timer.hxx @@ -26,9 +26,9 @@ class VCL_DLLPUBLIC Timer : public Task { protected: - Link<Timer *, void> maTimeoutHdl; // Callback Link - sal_uInt64 mnTimeout; - bool mbAuto; + Link<Timer *, void> maInvokeHandler; ///< Callback Link + sal_uInt64 mnTimeout; + bool mbAuto; virtual void SetDeletionFlags() override; virtual bool ReadyForSchedule( bool bIdle, sal_uInt64 nTimeNow ) const override; @@ -37,29 +37,45 @@ protected: public: Timer( const sal_Char *pDebugName = nullptr ); - Timer( const Timer& rTimer ); - /// Make it possible to associate a callback with this timer handler - /// of course, you can also sub-class and override 'Invoke' - void SetTimeoutHdl( const Link<Timer *, void>& rLink ) { maTimeoutHdl = rLink; } - const Link<Timer *, void>& GetTimeoutHdl() const { return maTimeoutHdl; } + /** + * Calls the maInvokeHandler with the parameter this. + */ + virtual void Invoke() override; + /** + * Calls the maInvokeHandler with the parameter. + * + * Convenience Invoke function, mainly used to call with nullptr. + * + * @param arg parameter for the Link::Call function + */ + void Invoke( Timer *arg ); + void SetInvokeHandler( const Link<Timer *, void>& rLink ) { maInvokeHandler = rLink; } + bool HasInvokeHandler() const { return maInvokeHandler.IsSet(); }; + + /** + * Convenience function for more readable code + * + * TODO: actually use SetInvokeHandler and drop it + */ + inline void SetTimeoutHdl( const Link<Timer *, void>& rLink ); + void SetTimeout( sal_uInt64 nTimeoutMs ); sal_uInt64 GetTimeout() const { return mnTimeout; } - virtual void Invoke() override; - void Timeout() { Invoke(); } - Timer& operator=( const Timer& rTimer ); virtual void Start() override; }; +inline void Timer::SetTimeoutHdl( const Link<Timer *, void>& rLink ) +{ + SetInvokeHandler( rLink ); +} + /// An auto-timer is a multi-shot timer re-emitting itself at /// interval until destroyed. class VCL_DLLPUBLIC AutoTimer : public Timer { public: - AutoTimer( const sal_Char *pDebugName = nullptr ); - AutoTimer( const AutoTimer& rTimer ); - - AutoTimer& operator=( const AutoTimer& rTimer ); + AutoTimer( const sal_Char *pDebugName = nullptr ); }; #endif // INCLUDED_VCL_TIMER_HXX diff --git a/sc/source/core/tool/refreshtimer.cxx b/sc/source/core/tool/refreshtimer.cxx index cb83c4c..954c132 100644 --- a/sc/source/core/tool/refreshtimer.cxx +++ b/sc/source/core/tool/refreshtimer.cxx @@ -120,7 +120,7 @@ void ScRefreshTimer::Invoke() { // now we COULD make the call in another thread ... ::osl::MutexGuard aGuard( (*ppControl)->GetMutex() ); - maTimeoutHdl.Call( this ); + Timer::Invoke(); // restart from now on, don't execute immediately again if timed out // a second time during refresh if ( IsActive() ) diff --git a/solenv/gdb/libreoffice/vcl.py b/solenv/gdb/libreoffice/vcl.py index 28ba3eb..62dc3a0 100644 --- a/solenv/gdb/libreoffice/vcl.py +++ b/solenv/gdb/libreoffice/vcl.py @@ -26,19 +26,27 @@ class ImplSchedulerDataPrinter(object): def as_string(self, gdbobj): if gdbobj['mpTask']: - sched = gdbobj['mpTask'].dereference() - if gdbobj['mpTask'].dynamic_cast( self.timer_type_ptr ): - sched_type = "Timer" - elif gdbobj['mpTask'].dynamic_cast( self.idle_type_ptr ): - sched_type = "Idle" + task = gdbobj['mpTask'].dereference() + timer = gdbobj['mpTask'].dynamic_cast( self.timer_type_ptr ) + idle = gdbobj['mpTask'].dynamic_cast( self.idle_type_ptr ) + if idle: + task_type = "Idle" + elif timer: + task_type = "Timer" else: - assert sched_type, "Task object neither Timer nor Idle" - res = "{:7s}{:10s} active: {:6s}".format( sched_type, str(sched['mePriority']), str(sched['mbActive']) ) - name = sched['mpDebugName'] + task_type = "Task" + res = "{:7s}{:10s} active: {:6s}".format( task_type, str(task['mePriority']), str(task['mbActive']) ) + name = task['mpDebugName'] if not name: res = res + " (task debug name not set)" else: - res = "{} '{}' ({})".format(res, str(name.string()), str(sched.dynamic_type)) + res = "{} '{}' ({})".format(res, str(name.string()), str(task.dynamic_type)) + val_type = gdb.lookup_type(str( task.dynamic_type )).pointer() + timer = gdbobj['mpTask'].cast( val_type ) + if (task_type == "Timer"): + res = "{}: {}ms".format(res, timer['mnTimeout']) + else: + assert 1 == timer['mnTimeout'], "Idle with timeout == {}".format( timer['mnTimeout'] ) return res else: assert gdbobj['mbDelete'], "No task set and not marked for deletion!" diff --git a/vcl/source/app/idle.cxx b/vcl/source/app/idle.cxx index 52b8d98..895000a 100644 --- a/vcl/source/app/idle.cxx +++ b/vcl/source/app/idle.cxx @@ -20,25 +20,9 @@ #include <vcl/idle.hxx> #include "saltimer.hxx" -void Idle::Invoke() +Idle::Idle( const sal_Char *pDebugName ) + : Timer( pDebugName ) { - maIdleHdl.Call( this ); -} - -Idle& Idle::operator=( const Idle& rIdle ) -{ - Task::operator=(rIdle); - maIdleHdl = rIdle.maIdleHdl; - return *this; -} - -Idle::Idle( const sal_Char *pDebugName ) : Task( pDebugName ) -{ -} - -Idle::Idle( const Idle& rIdle ) : Task(rIdle) -{ - maIdleHdl = rIdle.maIdleHdl; } void Idle::Start() diff --git a/vcl/source/app/timer.cxx b/vcl/source/app/timer.cxx index 96485ae..77704db 100644 --- a/vcl/source/app/timer.cxx +++ b/vcl/source/app/timer.cxx @@ -53,25 +53,22 @@ sal_uInt64 Timer::UpdateMinPeriod( sal_uInt64 nMinPeriod, sal_uInt64 nTimeNow ) } } -Timer::Timer(const sal_Char *pDebugName) : - Task(pDebugName), - mnTimeout(Scheduler::ImmediateTimeoutMs), - mbAuto(false) +Timer::Timer(const sal_Char *pDebugName) + : Task( pDebugName ) + , mnTimeout( Scheduler::ImmediateTimeoutMs ) + , mbAuto( false ) { mePriority = TaskPriority::HIGHEST; } -Timer::Timer( const Timer& rTimer ) : - Task(rTimer), - mnTimeout(rTimer.mnTimeout), - mbAuto(rTimer.mbAuto) +void Timer::Invoke() { - maTimeoutHdl = rTimer.maTimeoutHdl; + maInvokeHandler.Call( this ); } -void Timer::Invoke() +void Timer::Invoke( Timer *arg ) { - maTimeoutHdl.Call( this ); + maInvokeHandler.Call( arg ); } void Timer::Start() @@ -88,29 +85,10 @@ void Timer::SetTimeout( sal_uInt64 nNewTimeout ) StartTimer( mnTimeout ); } -Timer& Timer::operator=( const Timer& rTimer ) -{ - Task::operator=(rTimer); - maTimeoutHdl = rTimer.maTimeoutHdl; - mnTimeout = rTimer.mnTimeout; - mbAuto = rTimer.mbAuto; - return *this; -} - AutoTimer::AutoTimer( const sal_Char *pDebugName ) : Timer( pDebugName ) { mbAuto = true; } -AutoTimer::AutoTimer( const AutoTimer& rTimer ) : Timer( rTimer ) -{ - mbAuto = true; -} - -AutoTimer& AutoTimer::operator=( const AutoTimer& rTimer ) -{ - Timer::operator=( rTimer ); - return *this; -} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx index 610e492..8ee93fb 100644 --- a/vcl/source/control/edit.cxx +++ b/vcl/source/control/edit.cxx @@ -1909,7 +1909,7 @@ void Edit::LoseFocus() { //notify an update latest when the focus is lost mpUpdateDataTimer->Stop(); - mpUpdateDataTimer->Timeout(); + mpUpdateDataTimer->Invoke(); } if ( !mpSubEdit ) diff --git a/vcl/source/edit/textdata.cxx b/vcl/source/edit/textdata.cxx index ceb42d0..6b8abdf 100644 --- a/vcl/source/edit/textdata.cxx +++ b/vcl/source/edit/textdata.cxx @@ -293,7 +293,7 @@ void IdleFormatter::DoIdleFormat( TextView* pV, sal_uInt16 nMaxRestarts ) if ( mnRestarts > nMaxRestarts ) { mnRestarts = 0; - ((Link<Idle *, void>&)GetIdleHdl()).Call( this ); + Invoke(); } else { @@ -307,7 +307,7 @@ void IdleFormatter::ForceTimeout() { Stop(); mnRestarts = 0; - ((Link<Idle *, void>&)GetIdleHdl()).Call( this ); + Invoke(); } } diff --git a/vcl/source/window/paint.cxx b/vcl/source/window/paint.cxx index e0e1a93..8e8dfcc 100644 --- a/vcl/source/window/paint.cxx +++ b/vcl/source/window/paint.cxx @@ -660,7 +660,7 @@ IMPL_LINK_NOARG(Window, ImplHandleResizeTimerHdl, Idle *, void) if( mpWindowImpl->mpFrameData->maPaintIdle.IsActive() ) { mpWindowImpl->mpFrameData->maPaintIdle.Stop(); - mpWindowImpl->mpFrameData->maPaintIdle.GetIdleHdl().Call( nullptr ); + mpWindowImpl->mpFrameData->maPaintIdle.Invoke( nullptr ); } } } diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index 2757800..46d949a 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -2407,7 +2407,7 @@ Size Window::GetSizePixel() const { VclPtr<vcl::Window> xWindow( const_cast<Window*>(this) ); mpWindowImpl->mpFrameData->maResizeIdle.Stop(); - mpWindowImpl->mpFrameData->maResizeIdle.GetIdleHdl().Call( nullptr ); + mpWindowImpl->mpFrameData->maResizeIdle.Invoke( nullptr ); if( xWindow->IsDisposed() ) return Size(0,0); } commit 1531152eff8061d63be5d98641fcafaa1da05167 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Wed Nov 2 16:43:02 2016 +0100 Add sensible timer handling for Calc input There is no need to destroy and recreate the timer object. Simply stop and start the timer as required. Change-Id: I2885fef8bdb90c379dc2e9b9caf986d250face5c diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx index e2c96c6..2f1c901 100644 --- a/sc/source/ui/app/inputhdl.cxx +++ b/sc/source/ui/app/inputhdl.cxx @@ -645,6 +645,10 @@ ScInputHandler::ScInputHandler() pActiveViewSh = nullptr; // Bindings (only still used for Invalidate) are retrieved if needed on demand + + pDelayTimer = new Timer( "ScInputHandlerDelay timer" ); + pDelayTimer->SetTimeout( 500 ); // 500 ms delay + pDelayTimer->SetTimeoutHdl( LINK( this, ScInputHandler, DelayTimer ) ); } ScInputHandler::~ScInputHandler() @@ -3722,36 +3726,23 @@ void ScInputHandler::NotifyChange( const ScInputHdlState* pState, { if ( !pInputWin->IsEnabled()) { + pDelayTimer->Stop(); pInputWin->Enable(); - if(pDelayTimer ) - { - DELETEZ( pDelayTimer ); - } } } else if(pScMod->IsRefDialogOpen()) { // Because every document has its own InputWin, // we should start Timer again, because the input line may // still be active - if ( !pDelayTimer ) - { - pDelayTimer = new Timer("Restart ScInputHandlerDelay timer"); - pDelayTimer->SetTimeout( 500 ); // 500 ms delay - pDelayTimer->SetTimeoutHdl( LINK( this, ScInputHandler, DelayTimer ) ); + if ( !pDelayTimer->IsActive() ) pDelayTimer->Start(); - } } } } else // !pState || !pActiveViewSh { - if ( !pDelayTimer ) - { - pDelayTimer = new Timer("ScInputHandlerDelay timer"); - pDelayTimer->SetTimeout( 500 ); // 500 ms delay - pDelayTimer->SetTimeoutHdl( LINK( this, ScInputHandler, DelayTimer ) ); + if ( !pDelayTimer->IsActive() ) pDelayTimer->Start(); - } } HideTip(); @@ -3767,50 +3758,42 @@ void ScInputHandler::UpdateCellAdjust( SvxCellHorJustify eJust ) void ScInputHandler::ResetDelayTimer() { - if(pDelayTimer!=nullptr) + if( pDelayTimer->IsActive() ) { - DELETEZ( pDelayTimer ); - - if ( pInputWin) - { + pDelayTimer->Stop(); + if ( pInputWin ) pInputWin->Enable(); - } } } -IMPL_LINK( ScInputHandler, DelayTimer, Timer*, pTimer, void ) +IMPL_LINK_NOARG( ScInputHandler, DelayTimer, Timer*, void ) { - if ( pTimer == pDelayTimer ) + if ( nullptr == pLastState || SC_MOD()->IsFormulaMode() || SC_MOD()->IsRefDialogOpen()) { - DELETEZ( pDelayTimer ); - - if ( nullptr == pLastState || SC_MOD()->IsFormulaMode() || SC_MOD()->IsRefDialogOpen()) + //! New method at ScModule to query if function autopilot is open + SfxViewFrame* pViewFrm = SfxViewFrame::Current(); + if ( pViewFrm && pViewFrm->GetChildWindow( SID_OPENDLG_FUNCTION ) ) { - //! New method at ScModule to query if function autopilot is open - SfxViewFrame* pViewFrm = SfxViewFrame::Current(); - if ( pViewFrm && pViewFrm->GetChildWindow( SID_OPENDLG_FUNCTION ) ) + if ( pInputWin) { - if ( pInputWin) - { - pInputWin->EnableButtons( false ); - pInputWin->Disable(); - } + pInputWin->EnableButtons( false ); + pInputWin->Disable(); } - else if ( !bFormulaMode ) // Keep formula e.g. for help - { - bInOwnChange = true; // disable ModifyHdl (reset below) - - pActiveViewSh = nullptr; - mpEditEngine->SetText( EMPTY_OUSTRING ); - if ( pInputWin ) - { - pInputWin->SetPosString( EMPTY_OUSTRING ); - pInputWin->SetTextString( EMPTY_OUSTRING ); - pInputWin->Disable(); - } + } + else if ( !bFormulaMode ) // Keep formula e.g. for help + { + bInOwnChange = true; // disable ModifyHdl (reset below) - bInOwnChange = false; + pActiveViewSh = nullptr; + mpEditEngine->SetText( EMPTY_OUSTRING ); + if ( pInputWin ) + { + pInputWin->SetPosString( EMPTY_OUSTRING ); + pInputWin->SetTextString( EMPTY_OUSTRING ); + pInputWin->Disable(); } + + bInOwnChange = false; } } } commit fdc612619c1c133353026166206cea18c48089a6 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Wed Jan 4 12:06:42 2017 +0100 Refactor Scheduler to add Task class Moves all the "task-specific" stuff into a Task class and just keeps the "real" static Scheduler functions in the original Scheduler class. Change-Id: I9eb02d46e2bcf1abb06af5bab1fa0ee734d1984c diff --git a/avmedia/source/framework/mediacontrol.cxx b/avmedia/source/framework/mediacontrol.cxx index 8d3ac38..0f257ef 100644 --- a/avmedia/source/framework/mediacontrol.cxx +++ b/avmedia/source/framework/mediacontrol.cxx @@ -114,7 +114,7 @@ MediaControl::MediaControl( vcl::Window* pParent, MediaControlStyle eControlStyl mpZoomToolBox->SetPaintTransparent( true ); } - maIdle.SetPriority( SchedulerPriority::LOW ); + maIdle.SetPriority( TaskPriority::LOW ); maIdle.SetIdleHdl( LINK( this, MediaControl, implTimeoutHdl ) ); maIdle.Start(); } diff --git a/avmedia/source/framework/soundhandler.cxx b/avmedia/source/framework/soundhandler.cxx index 753fddc..0907555 100644 --- a/avmedia/source/framework/soundhandler.cxx +++ b/avmedia/source/framework/soundhandler.cxx @@ -221,7 +221,7 @@ void SAL_CALL SoundHandler::dispatchWithNotification(const css::util::URL& // Count this request and initialize self-holder against dying by uno ref count ... m_xSelfHold.set(static_cast< ::cppu::OWeakObject* >(this), css::uno::UNO_QUERY); m_xPlayer->start(); - m_aUpdateIdle.SetPriority( SchedulerPriority::LOWER ); + m_aUpdateIdle.SetPriority( TaskPriority::LOWER ); m_aUpdateIdle.Start(); } catch( css::uno::Exception& e ) diff --git a/avmedia/source/opengl/oglplayer.cxx b/avmedia/source/opengl/oglplayer.cxx index bfc25d4..12b746a 100644 --- a/avmedia/source/opengl/oglplayer.cxx +++ b/avmedia/source/opengl/oglplayer.cxx @@ -123,7 +123,7 @@ bool OGLPlayer::create( const OUString& rURL ) // Set timer m_aTimer.SetTimeout(8); // is 125fps enough for anyone ? - m_aTimer.SetPriority(SchedulerPriority::LOW); + m_aTimer.SetPriority(TaskPriority::LOW); m_aTimer.SetTimeoutHdl(LINK(this,OGLPlayer,TimerHandler)); return true; diff --git a/basctl/source/basicide/baside2b.cxx b/basctl/source/basicide/baside2b.cxx index d7a9074..12ccf1c 100644 --- a/basctl/source/basicide/baside2b.cxx +++ b/basctl/source/basicide/baside2b.cxx @@ -960,7 +960,7 @@ void EditorWindow::CreateEditEngine() ImplSetFont(); - aSyntaxIdle.SetPriority( SchedulerPriority::LOWER ); + aSyntaxIdle.SetPriority( TaskPriority::LOWER ); aSyntaxIdle.SetIdleHdl( LINK( this, EditorWindow, SyntaxTimerHdl ) ); bool bWasDoSyntaxHighlight = bDoSyntaxHighlight; diff --git a/basctl/source/dlged/dlged.cxx b/basctl/source/dlged/dlged.cxx index 411cb55..cc0aa7f 100644 --- a/basctl/source/dlged/dlged.cxx +++ b/basctl/source/dlged/dlged.cxx @@ -217,7 +217,7 @@ DlgEditor::DlgEditor ( m_ClipboardDataFlavorsResource[1].HumanPresentableName = "Dialog 8.0" ; m_ClipboardDataFlavorsResource[1].DataType = cppu::UnoType<Sequence< sal_Int8 >>::get(); - aMarkIdle.SetPriority(SchedulerPriority::LOW); + aMarkIdle.SetPriority(TaskPriority::LOW); aMarkIdle.SetIdleHdl( LINK( this, DlgEditor, MarkTimeout ) ); rWindow.SetMapMode( MapMode( MapUnit::Map100thMM ) ); diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx b/chart2/source/view/charttypes/GL3DBarChart.cxx index 6891007..fea7cf0 100644 --- a/chart2/source/view/charttypes/GL3DBarChart.cxx +++ b/chart2/source/view/charttypes/GL3DBarChart.cxx @@ -558,7 +558,7 @@ GL3DBarChart::GL3DBarChart( { mbAutoFly = atoi(aAutoFly); } - maIdle.SetPriority(SchedulerPriority::REPAINT); + maIdle.SetPriority(TaskPriority::REPAINT); maIdle.SetIdleHdl(LINK(this, GL3DBarChart, UpdateTimerHdl)); maIdle.SetDebugName( "charttypes::GL3DBarChart maIdle" ); maIdle.Start(); diff --git a/cui/source/dialogs/cuigaldlg.cxx b/cui/source/dialogs/cuigaldlg.cxx index 08b28da..185ffc6 100644 --- a/cui/source/dialogs/cuigaldlg.cxx +++ b/cui/source/dialogs/cuigaldlg.cxx @@ -450,7 +450,7 @@ short ActualizeProgress::Execute() pIdle = new Idle("ActualizeProgressTimeout"); pIdle->SetIdleHdl( LINK( this, ActualizeProgress, TimeoutHdl ) ); - pIdle->SetPriority( SchedulerPriority::LOWEST ); + pIdle->SetPriority( TaskPriority::LOWEST ); pIdle->Start(); nRet = ModalDialog::Execute(); diff --git a/cui/source/dialogs/linkdlg.cxx b/cui/source/dialogs/linkdlg.cxx index bba24a8..1da650d 100644 --- a/cui/source/dialogs/linkdlg.cxx +++ b/cui/source/dialogs/linkdlg.cxx @@ -124,7 +124,7 @@ SvBaseLinksDlg::SvBaseLinksDlg( vcl::Window * pParent, LinkManager* pMgr, bool b // UpdateTimer for DDE-/Grf-links, which are waited for aUpdateIdle.SetIdleHdl( LINK( this, SvBaseLinksDlg, UpdateWaitingHdl ) ); - aUpdateIdle.SetPriority( SchedulerPriority::LOWEST ); + aUpdateIdle.SetPriority( TaskPriority::LOWEST ); m_pPbOpenSource->Hide(); diff --git a/cui/source/dialogs/thesdlg.cxx b/cui/source/dialogs/thesdlg.cxx index cd71d22..3f831e7 100644 --- a/cui/source/dialogs/thesdlg.cxx +++ b/cui/source/dialogs/thesdlg.cxx @@ -64,7 +64,7 @@ LookUpComboBox::LookUpComboBox(vcl::Window *pParent) EnableAutoSize(true); m_aModifyIdle.SetIdleHdl( LINK( this, LookUpComboBox, ModifyTimer_Hdl ) ); - m_aModifyIdle.SetPriority( SchedulerPriority::LOWEST ); + m_aModifyIdle.SetPriority( TaskPriority::LOWEST ); EnableAutocomplete( false ); } diff --git a/cui/source/options/optjava.cxx b/cui/source/options/optjava.cxx index 03f51c9..4621607 100644 --- a/cui/source/options/optjava.cxx +++ b/cui/source/options/optjava.cxx @@ -186,7 +186,7 @@ SvxJavaOptionsPage::SvxJavaOptionsPage( vcl::Window* pParent, const SfxItemSet& m_pParameterBtn->SetClickHdl( LINK( this, SvxJavaOptionsPage, ParameterHdl_Impl ) ); m_pClassPathBtn->SetClickHdl( LINK( this, SvxJavaOptionsPage, ClassPathHdl_Impl ) ); m_aResetIdle.SetIdleHdl( LINK( this, SvxJavaOptionsPage, ResetHdl_Impl ) ); - m_aResetIdle.SetPriority(SchedulerPriority::LOWER); + m_aResetIdle.SetPriority(TaskPriority::LOWER); m_pExpertConfigBtn->SetClickHdl( LINK( this, SvxJavaOptionsPage, ExpertConfigHdl_Impl) ); if (!officecfg::Office::Common::Security::EnableExpertConfiguration::get()) diff --git a/cui/source/tabpages/backgrnd.cxx b/cui/source/tabpages/backgrnd.cxx index 9938b36..5858783 100644 --- a/cui/source/tabpages/backgrnd.cxx +++ b/cui/source/tabpages/backgrnd.cxx @@ -953,7 +953,7 @@ void SvxBackgroundTabPage::ShowSelector() // delayed loading via timer (because of UI-Update) pPageImpl->pLoadIdle = new Idle("DelayedLoad"); - pPageImpl->pLoadIdle->SetPriority( SchedulerPriority::LOWEST ); + pPageImpl->pLoadIdle->SetPriority( TaskPriority::LOWEST ); pPageImpl->pLoadIdle->SetIdleHdl( LINK( this, SvxBackgroundTabPage, LoadIdleHdl_Impl ) ); diff --git a/cui/source/tabpages/chardlg.cxx b/cui/source/tabpages/chardlg.cxx index 5bb00f4..240698f 100644 --- a/cui/source/tabpages/chardlg.cxx +++ b/cui/source/tabpages/chardlg.cxx @@ -247,7 +247,7 @@ struct SvxCharNamePage_Impl m_bInSearchMode ( false ) { - m_aUpdateIdle.SetPriority( SchedulerPriority::LOWEST ); + m_aUpdateIdle.SetPriority( TaskPriority::LOWEST ); } ~SvxCharNamePage_Impl() diff --git a/cui/source/tabpages/macroass.cxx b/cui/source/tabpages/macroass.cxx index 529124c..7485ad5 100644 --- a/cui/source/tabpages/macroass.cxx +++ b/cui/source/tabpages/macroass.cxx @@ -138,7 +138,7 @@ SfxMacroTabPage::SfxMacroTabPage(vcl::Window* pParent, const Reference< XFrame > mpImpl.reset(new SfxMacroTabPage_Impl); mpImpl->maFillGroupIdle.SetIdleHdl( LINK( this, SfxMacroTabPage, TimeOut_Impl ) ); - mpImpl->maFillGroupIdle.SetPriority( SchedulerPriority::HIGHEST ); + mpImpl->maFillGroupIdle.SetPriority( TaskPriority::HIGHEST ); mpImpl->maFillGroupIdle.SetDebugName( "SfxMacroTabPage maFillGroupIdle" ); mpImpl->sStrEvent = get<FixedText>("eventft")->GetText(); diff --git a/dbaccess/source/ui/querydesign/JoinTableView.cxx b/dbaccess/source/ui/querydesign/JoinTableView.cxx index f08beee..7289032 100644 --- a/dbaccess/source/ui/querydesign/JoinTableView.cxx +++ b/dbaccess/source/ui/querydesign/JoinTableView.cxx @@ -1063,7 +1063,7 @@ void OJoinTableView::ScrollWhileDragging() // resetting timer, if still necessary if (bNeedScrollTimer) { - m_aDragScrollIdle.SetPriority(SchedulerPriority::LOW); + m_aDragScrollIdle.SetPriority(TaskPriority::LOW); m_aDragScrollIdle.Start(); } diff --git a/desktop/source/deployment/gui/dp_gui_dialog2.cxx b/desktop/source/deployment/gui/dp_gui_dialog2.cxx index 89ac27c..04a0259 100644 --- a/desktop/source/deployment/gui/dp_gui_dialog2.cxx +++ b/desktop/source/deployment/gui/dp_gui_dialog2.cxx @@ -521,7 +521,7 @@ ExtMgrDialog::ExtMgrDialog(vcl::Window *pParent, TheExtensionManager *pManager, m_pUpdateBtn->Hide(); #endif - m_aIdle.SetPriority(SchedulerPriority::LOWEST); + m_aIdle.SetPriority(TaskPriority::LOWEST); m_aIdle.SetIdleHdl( LINK( this, ExtMgrDialog, TimeOutHdl ) ); } @@ -1065,7 +1065,7 @@ UpdateRequiredDialog::UpdateRequiredDialog(vcl::Window *pParent, TheExtensionMan m_pUpdateBtn->Enable( false ); m_pCloseBtn->GrabFocus(); - m_aIdle.SetPriority( SchedulerPriority::LOWEST ); + m_aIdle.SetPriority( TaskPriority::LOWEST ); m_aIdle.SetIdleHdl( LINK( this, UpdateRequiredDialog, TimeOutHdl ) ); } diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index 79e284a..d29a695 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -602,7 +602,7 @@ CallbackFlushHandler::CallbackFlushHandler(LibreOfficeKitDocument* pDocument, Li m_bPartTilePainting(false), m_bEventLatch(false) { - SetPriority(SchedulerPriority::POST_PAINT); + SetPriority(TaskPriority::POST_PAINT); // Add the states that are safe to skip duplicates on, // even when not consequent. diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx index 946ae5c..fc2b2aa 100644 --- a/editeng/source/editeng/impedit2.cxx +++ b/editeng/source/editeng/impedit2.cxx @@ -148,7 +148,7 @@ ImpEditEngine::ImpEditEngine( EditEngine* pEE, SfxItemPool* pItemPool ) : aStatusTimer.SetTimeoutHdl( LINK( this, ImpEditEngine, StatusTimerHdl ) ); aStatusTimer.SetDebugName( "editeng::ImpEditEngine aStatusTimer" ); - aIdleFormatter.SetPriority( SchedulerPriority::REPAINT ); + aIdleFormatter.SetPriority( TaskPriority::REPAINT ); aIdleFormatter.SetIdleHdl( LINK( this, ImpEditEngine, IdleFormatHdl ) ); aIdleFormatter.SetDebugName( "editeng::ImpEditEngine aIdleFormatter" ); diff --git a/extensions/source/bibliography/bibcont.cxx b/extensions/source/bibliography/bibcont.cxx index 834d400..3429248 100644 --- a/extensions/source/bibliography/bibcont.cxx +++ b/extensions/source/bibliography/bibcont.cxx @@ -121,7 +121,7 @@ BibBookContainer::BibBookContainer(vcl::Window* pParent): { pBibMod = OpenBibModul(); aIdle.SetIdleHdl(LINK( this, BibBookContainer, SplitHdl)); - aIdle.SetPriority(SchedulerPriority::LOWEST); + aIdle.SetPriority(TaskPriority::LOWEST); } BibBookContainer::~BibBookContainer() diff --git a/extensions/source/bibliography/toolbar.cxx b/extensions/source/bibliography/toolbar.cxx index 9f5541d..b62a03c 100644 --- a/extensions/source/bibliography/toolbar.cxx +++ b/extensions/source/bibliography/toolbar.cxx @@ -202,7 +202,7 @@ BibToolBar::BibToolBar(vcl::Window* pParent, Link<void*,void> aLink) Application::AddEventListener( LINK( this, BibToolBar, SettingsChanged_Impl ) ); aIdle.SetIdleHdl(LINK( this, BibToolBar, SendSelHdl)); - aIdle.SetPriority(SchedulerPriority::LOWEST); + aIdle.SetPriority(TaskPriority::LOWEST); SetDropdownClickHdl( LINK( this, BibToolBar, MenuHdl)); diff --git a/extensions/source/update/ui/updatecheckui.cxx b/extensions/source/update/ui/updatecheckui.cxx index 13268df..d8f3a03 100644 --- a/extensions/source/update/ui/updatecheckui.cxx +++ b/extensions/source/update/ui/updatecheckui.cxx @@ -206,7 +206,7 @@ UpdateCheckUI::UpdateCheckUI(const uno::Reference<uno::XComponentContext>& xCont maBubbleImage = GetBubbleImage( maBubbleImageURL ); - maWaitIdle.SetPriority( SchedulerPriority::LOWEST ); + maWaitIdle.SetPriority( TaskPriority::LOWEST ); maWaitIdle.SetIdleHdl( LINK( this, UpdateCheckUI, WaitTimeOutHdl ) ); maTimeoutTimer.SetTimeout( 10000 ); diff --git a/forms/source/component/ListBox.cxx b/forms/source/component/ListBox.cxx index 00e1e7a..8a7276c 100644 --- a/forms/source/component/ListBox.cxx +++ b/forms/source/component/ListBox.cxx @@ -1798,7 +1798,7 @@ namespace frm doSetDelegator(); - m_aChangeIdle.SetPriority(SchedulerPriority::LOWEST); + m_aChangeIdle.SetPriority(TaskPriority::LOWEST); m_aChangeIdle.SetIdleHdl(LINK(this,OListBoxControl,OnTimeout)); } diff --git a/formula/source/ui/dlg/formula.cxx b/formula/source/ui/dlg/formula.cxx index f745cbc..a0eacea 100644 --- a/formula/source/ui/dlg/formula.cxx +++ b/formula/source/ui/dlg/formula.cxx @@ -1801,7 +1801,7 @@ OUString FormulaDlg::GetMeText() const void FormulaDlg::Update() { m_pImpl->Update(); - m_pImpl->aIdle.SetPriority(SchedulerPriority::LOWER); + m_pImpl->aIdle.SetPriority(TaskPriority::LOWER); m_pImpl->aIdle.SetIdleHdl(LINK( this, FormulaDlg, UpdateFocusHdl)); m_pImpl->aIdle.Start(); } diff --git a/formula/source/ui/dlg/funcutl.cxx b/formula/source/ui/dlg/funcutl.cxx index 2389864..6472fde 100644 --- a/formula/source/ui/dlg/funcutl.cxx +++ b/formula/source/ui/dlg/funcutl.cxx @@ -409,7 +409,7 @@ RefEdit::RefEdit( vcl::Window* _pParent, vcl::Window* pShrinkModeLabel, WinBits , pLabelWidget(pShrinkModeLabel) { aIdle.SetIdleHdl( LINK( this, RefEdit, UpdateHdl ) ); - aIdle.SetPriority( SchedulerPriority::LOW ); + aIdle.SetPriority( TaskPriority::LOW ); } VCL_BUILDER_DECL_FACTORY(RefEdit) @@ -478,7 +478,7 @@ void RefEdit::SetReferences( IControlReferenceHandler* pDlg, vcl::Window* pLabel if( pDlg ) { aIdle.SetIdleHdl( LINK( this, RefEdit, UpdateHdl ) ); - aIdle.SetPriority( SchedulerPriority::LOW ); + aIdle.SetPriority( TaskPriority::LOW ); } else { diff --git a/include/vcl/idle.hxx b/include/vcl/idle.hxx index d3fdfbb..9f491e1 100644 --- a/include/vcl/idle.hxx +++ b/include/vcl/idle.hxx @@ -23,7 +23,7 @@ #include <tools/link.hxx> #include <vcl/scheduler.hxx> -class VCL_DLLPUBLIC Idle : public Scheduler +class VCL_DLLPUBLIC Idle : public Task { Link<Idle *, void> maIdleHdl; // Callback Link diff --git a/include/vcl/scheduler.hxx b/include/vcl/scheduler.hxx index 16aba06..1e4b9d6 100644 --- a/include/vcl/scheduler.hxx +++ b/include/vcl/scheduler.hxx @@ -22,9 +22,43 @@ #include <vcl/dllapi.h> +class Task; + +class VCL_DLLPUBLIC Scheduler +{ + friend class Task; + Scheduler() = delete; + +protected: + static void ImplStartTimer ( sal_uInt64 nMS, bool bForce = false ); + +public: + static const SAL_CONSTEXPR sal_uInt64 ImmediateTimeoutMs = 1; + static const SAL_CONSTEXPR sal_uInt64 InfiniteTimeoutMs = 1000 * 60 * 60 * 24; // 1 day + + static void ImplDeInitScheduler(); + + /// Process one pending Timer with highhest priority + static void CallbackTaskScheduling( bool ignore ); + /// Calculate minimum timeout - and return its value. + static sal_uInt64 CalculateMinimumTimeout( bool &bHasActiveIdles ); + /// Process one pending task ahead of time with highest priority. + static bool ProcessTaskScheduling( bool bIdle ); + /// Process all events until we are idle + static void ProcessEventsToIdle(); + + /// Control the deterministic mode. In this mode, two subsequent runs of + /// LibreOffice fire about the same amount idles. + static void SetDeterministicMode(bool bDeterministic); + /// Return the current state of deterministic mode. + static bool GetDeterministicMode(); +}; + + struct ImplSchedulerData; -enum class SchedulerPriority { +enum class TaskPriority +{ HIGHEST = 0, HIGH = 1, RESIZE = 2, @@ -37,21 +71,19 @@ enum class SchedulerPriority { LOWEST = 8 }; -class VCL_DLLPUBLIC Scheduler +class VCL_DLLPUBLIC Task { -protected: - ImplSchedulerData* mpSchedulerData; /// Pointer to element in scheduler list - const sal_Char *mpDebugName; /// Useful for debugging - SchedulerPriority mePriority; /// Scheduler priority - bool mbActive; /// Currently in the scheduler + friend class Scheduler; + friend struct ImplSchedulerData; - // These should be constexpr static, when supported. - static const sal_uInt64 ImmediateTimeoutMs = 1; - static const sal_uInt64 InfiniteTimeoutMs = 1000 * 60 * 60 * 24; // 1 day +protected: + ImplSchedulerData *mpSchedulerData; /// Pointer to the element in scheduler list + const sal_Char *mpDebugName; /// Useful for debugging + TaskPriority mePriority; /// Task priority + bool mbActive; /// Currently in the scheduler - static void ImplStartTimer(sal_uInt64 nMS, bool bForce = false); + void StartTimer( sal_uInt64 nMS ); - friend struct ImplSchedulerData; virtual void SetDeletionFlags(); /// Is this item ready to be dispatched at nTimeNow virtual bool ReadyForSchedule( bool bIdle, sal_uInt64 nTimeNow ) const = 0; @@ -64,12 +96,12 @@ protected: virtual sal_uInt64 UpdateMinPeriod( sal_uInt64 nMinPeriod, sal_uInt64 nTimeNow ) const = 0; public: - Scheduler( const sal_Char *pDebugName ); - Scheduler( const Scheduler& rScheduler ); - virtual ~Scheduler(); + Task( const sal_Char *pDebugName ); + Task( const Task& rTask ); + virtual ~Task(); - void SetPriority(SchedulerPriority ePriority) { mePriority = ePriority; } - SchedulerPriority GetPriority() const { return mePriority; } + void SetPriority(TaskPriority ePriority) { mePriority = ePriority; } + TaskPriority GetPriority() const { return mePriority; } void SetDebugName( const sal_Char *pDebugName ) { mpDebugName = pDebugName; } const char *GetDebugName() { return mpDebugName; } @@ -82,23 +114,7 @@ public: bool IsActive() const { return mbActive; } - Scheduler& operator=( const Scheduler& rScheduler ); - static void ImplDeInitScheduler(); - - /// Process one pending Timer with highhest priority - static void CallbackTaskScheduling( bool ignore ); - /// Calculate minimum timeout - and return its value. - static sal_uInt64 CalculateMinimumTimeout( bool &bHasActiveIdles ); - /// Process one pending task ahead of time with highest priority. - static bool ProcessTaskScheduling( bool bIdle ); - /// Process all events until we are idle - static void ProcessEventsToIdle(); - - /// Control the deterministic mode. In this mode, two subsequent runs of - /// LibreOffice fire about the same amount idles. - static void SetDeterministicMode(bool bDeterministic); - /// Return the current state of deterministic mode. - static bool GetDeterministicMode(); + Task& operator=( const Task& rTask ); }; #endif // INCLUDED_VCL_SCHEDULER_HXX diff --git a/include/vcl/timer.hxx b/include/vcl/timer.hxx index ff79acd..19a882f 100644 --- a/include/vcl/timer.hxx +++ b/include/vcl/timer.hxx @@ -23,7 +23,7 @@ #include <tools/link.hxx> #include <vcl/scheduler.hxx> -class VCL_DLLPUBLIC Timer : public Scheduler +class VCL_DLLPUBLIC Timer : public Task { protected: Link<Timer *, void> maTimeoutHdl; // Callback Link diff --git a/linguistic/source/lngsvcmgr.cxx b/linguistic/source/lngsvcmgr.cxx index 9a752ae..2f43476 100644 --- a/linguistic/source/lngsvcmgr.cxx +++ b/linguistic/source/lngsvcmgr.cxx @@ -447,7 +447,7 @@ LngSvcMgr::LngSvcMgr() UpdateAll(); - aUpdateIdle.SetPriority(SchedulerPriority::LOWEST); + aUpdateIdle.SetPriority(TaskPriority::LOWEST); aUpdateIdle.SetIdleHdl(LINK(this, LngSvcMgr, updateAndBroadcast)); // request to be notified if an extension has been added/removed diff --git a/reportdesign/source/ui/report/DesignView.cxx b/reportdesign/source/ui/report/DesignView.cxx index 5332dbc..bddccde 100644 --- a/reportdesign/source/ui/report/DesignView.cxx +++ b/reportdesign/source/ui/report/DesignView.cxx @@ -116,7 +116,7 @@ ODesignView::ODesignView( vcl::Window* pParent, m_aSplitWin->SetAlign(WindowAlign::Left); m_aSplitWin->Show(); - m_aMarkIdle.SetPriority( SchedulerPriority::LOW ); + m_aMarkIdle.SetPriority( TaskPriority::LOW ); m_aMarkIdle.SetIdleHdl( LINK( this, ODesignView, MarkTimeout ) ); } diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx index c199c11..b5d60ab 100644 --- a/sc/source/core/data/documen2.cxx +++ b/sc/source/core/data/documen2.cxx @@ -249,7 +249,7 @@ ScDocument::ScDocument( ScDocumentMode eMode, SfxObjectShell* pDocShell ) : SetLanguage( ScGlobal::eLnge, ScGlobal::eLnge, ScGlobal::eLnge ); aTrackIdle.SetIdleHdl( LINK( this, ScDocument, TrackTimeHdl ) ); - aTrackIdle.SetPriority( SchedulerPriority::LOW ); + aTrackIdle.SetPriority( TaskPriority::LOW ); } sfx2::LinkManager* ScDocument::GetLinkManager() diff --git a/sc/source/core/tool/chartlis.cxx b/sc/source/core/tool/chartlis.cxx index fd27fbd..c159f39 100644 --- a/sc/source/core/tool/chartlis.cxx +++ b/sc/source/core/tool/chartlis.cxx @@ -405,7 +405,7 @@ ScChartHiddenRangeListener::~ScChartHiddenRangeListener() void ScChartListenerCollection::Init() { aIdle.SetIdleHdl( LINK( this, ScChartListenerCollection, TimerHdl ) ); - aIdle.SetPriority( SchedulerPriority::REPAINT ); + aIdle.SetPriority( TaskPriority::REPAINT ); aIdle.SetDebugName( "sc::ScChartListenerCollection aIdle" ); } diff --git a/sc/source/ui/app/scmod.cxx b/sc/source/ui/app/scmod.cxx index c81adcc..1bf3cba 100644 --- a/sc/source/ui/app/scmod.cxx +++ b/sc/source/ui/app/scmod.cxx @@ -179,7 +179,7 @@ ScModule::ScModule( SfxObjectFactory* pFact ) : ERRCODE_AREA_APP2-1, GetResMgr() ); - aSpellIdle.SetPriority(SchedulerPriority::LOWER); + aSpellIdle.SetPriority(TaskPriority::LOWER); aSpellIdle.SetIdleHdl( LINK( this, ScModule, SpellTimerHdl ) ); aSpellIdle.SetDebugName( "sc::ScModule aSpellIdle" ); diff --git a/sc/source/ui/dbgui/sfiltdlg.cxx b/sc/source/ui/dbgui/sfiltdlg.cxx index e49bf82..5148a7c 100644 --- a/sc/source/ui/dbgui/sfiltdlg.cxx +++ b/sc/source/ui/dbgui/sfiltdlg.cxx @@ -88,7 +88,7 @@ ScSpecialFilterDlg::ScSpecialFilterDlg( SfxBindings* pB, SfxChildWindow* pCW, vc // Hack: RefInput-Kontrolle pIdle = new Idle; // FIXME: this is an abomination - pIdle->SetPriority( SchedulerPriority::LOWEST ); + pIdle->SetPriority( TaskPriority::LOWEST ); pIdle->SetIdleHdl( LINK( this, ScSpecialFilterDlg, TimeOutHdl ) ); pIdle->Start(); } diff --git a/sc/source/ui/docshell/autostyl.cxx b/sc/source/ui/docshell/autostyl.cxx index 3888dbc..355d5b7 100644 --- a/sc/source/ui/docshell/autostyl.cxx +++ b/sc/source/ui/docshell/autostyl.cxx @@ -65,7 +65,7 @@ ScAutoStyleList::ScAutoStyleList(ScDocShell* pShell) { aTimer.SetTimeoutHdl( LINK( this, ScAutoStyleList, TimerHdl ) ); aInitIdle.SetIdleHdl( LINK( this, ScAutoStyleList, InitHdl ) ); - aInitIdle.SetPriority( SchedulerPriority::HIGHEST ); + aInitIdle.SetPriority( TaskPriority::HIGHEST ); } ScAutoStyleList::~ScAutoStyleList() diff --git a/sc/source/ui/miscdlgs/acredlin.cxx b/sc/source/ui/miscdlgs/acredlin.cxx index e92e3ee..6bfa541 100644 --- a/sc/source/ui/miscdlgs/acredlin.cxx +++ b/sc/source/ui/miscdlgs/acredlin.cxx @@ -108,13 +108,13 @@ ScAcceptChgDlg::ScAcceptChgDlg(SfxBindings* pB, SfxChildWindow* pCW, vcl::Window m_pAcceptChgCtr = VclPtr<SvxAcceptChgCtr>::Create(get_content_area(), this); nAcceptCount=0; nRejectCount=0; - aReOpenIdle.SetPriority(SchedulerPriority::MEDIUM); + aReOpenIdle.SetPriority(TaskPriority::MEDIUM); aReOpenIdle.SetIdleHdl(LINK( this, ScAcceptChgDlg, ReOpenTimerHdl )); pTPFilter=m_pAcceptChgCtr->GetFilterPage(); pTPView=m_pAcceptChgCtr->GetViewPage(); pTheView=pTPView->GetTableControl(); - aSelectionIdle.SetPriority(SchedulerPriority::LOW); + aSelectionIdle.SetPriority(TaskPriority::LOW); aSelectionIdle.SetIdleHdl(LINK( this, ScAcceptChgDlg, UpdateSelectionHdl )); aSelectionIdle.SetDebugName( "ScAcceptChgDlg aSelectionIdle" ); diff --git a/sc/source/ui/miscdlgs/anyrefdg.cxx b/sc/source/ui/miscdlgs/anyrefdg.cxx index 1498a1f..5998d39 100644 --- a/sc/source/ui/miscdlgs/anyrefdg.cxx +++ b/sc/source/ui/miscdlgs/anyrefdg.cxx @@ -764,7 +764,7 @@ ScRefHandler::ScRefHandler( vcl::Window &rWindow, SfxBindings* pB, bool bBindRef pActiveWin(nullptr) { m_aHelper.SetWindow(m_rWindow.get()); - aIdle.SetPriority(SchedulerPriority::LOWER); + aIdle.SetPriority(TaskPriority::LOWER); aIdle.SetIdleHdl(LINK( this, ScRefHandler, UpdateFocusHdl)); if( bBindRef ) EnterRefMode(); diff --git a/sc/source/ui/miscdlgs/conflictsdlg.cxx b/sc/source/ui/miscdlgs/conflictsdlg.cxx index 578efed..6b50687 100644 --- a/sc/source/ui/miscdlgs/conflictsdlg.cxx +++ b/sc/source/ui/miscdlgs/conflictsdlg.cxx @@ -421,7 +421,7 @@ ScConflictsDlg::ScConflictsDlg( vcl::Window* pParent, ScViewData* pViewData, ScD m_pLbConflicts->SetSelectionMode( SelectionMode::Multiple ); m_pLbConflicts->SetHighlightRange(); - maSelectionIdle.SetPriority( SchedulerPriority::LOW ); + maSelectionIdle.SetPriority( TaskPriority::LOW ); maSelectionIdle.SetIdleHdl( LINK( this, ScConflictsDlg, UpdateSelectionHdl ) ); maSelectionIdle.SetDebugName( "ScConflictsDlg maSelectionIdle" ); diff --git a/sc/source/ui/navipi/navipi.cxx b/sc/source/ui/navipi/navipi.cxx index e8e5745..0d17bbb 100644 --- a/sc/source/ui/navipi/navipi.cxx +++ b/sc/source/ui/navipi/navipi.cxx @@ -528,7 +528,7 @@ ScNavigatorDlg::ScNavigatorDlg(SfxBindings* pB, bool bSidebar, vcl::Window* pPar aScenarioBox->Hide(); aContentIdle.SetIdleHdl( LINK( this, ScNavigatorDlg, TimeHdl ) ); - aContentIdle.SetPriority( SchedulerPriority::LOWEST ); + aContentIdle.SetPriority( TaskPriority::LOWEST ); if (bInSidebar) { diff --git a/sc/source/ui/pagedlg/tphfedit.cxx b/sc/source/ui/pagedlg/tphfedit.cxx index 2fd8ff0..9602323 100644 --- a/sc/source/ui/pagedlg/tphfedit.cxx +++ b/sc/source/ui/pagedlg/tphfedit.cxx @@ -341,7 +341,7 @@ ScExtIButton::ScExtIButton(vcl::Window* pParent, WinBits nBits ) pPopupMenu(nullptr) { nSelected=0; - aIdle.SetPriority(SchedulerPriority::LOWEST); + aIdle.SetPriority(TaskPriority::LOWEST); SetDropDown(PushButtonDropdownStyle::Toolbox); } diff --git a/sd/source/core/drawdoc4.cxx b/sd/source/core/drawdoc4.cxx index 9787754..0f5fe0e 100644 --- a/sd/source/core/drawdoc4.cxx +++ b/sd/source/core/drawdoc4.cxx @@ -771,7 +771,7 @@ void SdDrawDocument::StartOnlineSpelling(bool bForceSpelling) mpOnlineSpellingList->seekShape(0); mpOnlineSpellingIdle = new Idle("OnlineSpelling"); mpOnlineSpellingIdle->SetIdleHdl( LINK(this, SdDrawDocument, OnlineSpellingHdl) ); - mpOnlineSpellingIdle->SetPriority(SchedulerPriority::LOWEST); + mpOnlineSpellingIdle->SetPriority(TaskPriority::LOWEST); mpOnlineSpellingIdle->Start(); } } diff --git a/sd/source/ui/dlg/brkdlg.cxx b/sd/source/ui/dlg/brkdlg.cxx index 0626fde..cdb2448 100644 --- a/sd/source/ui/dlg/brkdlg.cxx +++ b/sd/source/ui/dlg/brkdlg.cxx @@ -47,7 +47,7 @@ BreakDlg::BreakDlg( : SfxModalDialog(pWindow, "BreakDialog", "modules/sdraw/ui/breakdialog.ui") , mpProgress( nullptr ) { - m_aUpdateIdle.SetPriority( SchedulerPriority::REPAINT ); + m_aUpdateIdle.SetPriority( TaskPriority::REPAINT ); m_aUpdateIdle.SetIdleHdl( LINK( this, BreakDlg, InitialUpdate ) ); m_aUpdateIdle.SetDebugName( "sd::BreakDlg m_aUpdateIdle" ); diff --git a/sd/source/ui/dlg/filedlg.cxx b/sd/source/ui/dlg/filedlg.cxx index b06c780..bcf3913 100644 --- a/sd/source/ui/dlg/filedlg.cxx +++ b/sd/source/ui/dlg/filedlg.cxx @@ -129,7 +129,7 @@ IMPL_LINK_NOARG(SdFileDialog_Imp, PlayMusicHdl, void*, void) { mxPlayer.set( avmedia::MediaWindow::createPlayer( aUrl, "" ), css::uno::UNO_QUERY_THROW ); mxPlayer->start(); - maUpdateIdle.SetPriority( SchedulerPriority::LOW ); + maUpdateIdle.SetPriority( TaskPriority::LOW ); maUpdateIdle.Start(); } catch (const css::uno::Exception&) diff --git a/sd/source/ui/framework/module/ShellStackGuard.cxx b/sd/source/ui/framework/module/ShellStackGuard.cxx index cf4fe2d..7022b91 100644 --- a/sd/source/ui/framework/module/ShellStackGuard.cxx +++ b/sd/source/ui/framework/module/ShellStackGuard.cxx @@ -72,7 +72,7 @@ ShellStackGuard::ShellStackGuard (Reference<frame::XController>& rxController) // Prepare the printer polling. maPrinterPollingIdle.SetIdleHdl(LINK(this,ShellStackGuard,TimeoutHandler)); - maPrinterPollingIdle.SetPriority(SchedulerPriority::LOWER); + maPrinterPollingIdle.SetPriority(TaskPriority::LOWER); } } diff --git a/sd/source/ui/slideshow/slideshowimpl.cxx b/sd/source/ui/slideshow/slideshowimpl.cxx index 350ca3e..e24f0a9 100644 --- a/sd/source/ui/slideshow/slideshowimpl.cxx +++ b/sd/source/ui/slideshow/slideshowimpl.cxx @@ -512,7 +512,7 @@ SlideshowImpl::SlideshowImpl( const Reference< XPresentation2 >& xPresentation, maUpdateTimer.SetTimeoutHdl(LINK(this, SlideshowImpl, updateHdl)); // Priority must not be too high or we'll starve input handling etc. - maUpdateTimer.SetPriority(SchedulerPriority::REPAINT); + maUpdateTimer.SetPriority(TaskPriority::REPAINT); maDeactivateTimer.SetTimeoutHdl(LINK(this, SlideshowImpl, deactivateHdl)); maDeactivateTimer.SetTimeout( 20 ); diff --git a/sd/source/ui/slidesorter/controller/SlsAnimator.cxx b/sd/source/ui/slidesorter/controller/SlsAnimator.cxx index f0fd688..d1791ad 100644 --- a/sd/source/ui/slidesorter/controller/SlsAnimator.cxx +++ b/sd/source/ui/slidesorter/controller/SlsAnimator.cxx @@ -67,7 +67,7 @@ Animator::Animator (SlideSorter& rSlideSorter) mpDrawLock(), mnNextAnimationId(0) { - maIdle.SetPriority(SchedulerPriority::REPAINT); + maIdle.SetPriority(TaskPriority::REPAINT); maIdle.SetIdleHdl(LINK(this,Animator,TimeoutHandler)); } diff --git a/sd/source/ui/view/sdview.cxx b/sd/source/ui/view/sdview.cxx index 3ecc8c5..66b0ef5 100644 --- a/sd/source/ui/view/sdview.cxx +++ b/sd/source/ui/view/sdview.cxx @@ -143,9 +143,9 @@ View::View(SdDrawDocument& rDrawDoc, OutputDevice* pOutDev, // Timer for delayed drop (has to be for MAC) maDropErrorIdle.SetIdleHdl( LINK(this, View, DropErrorHdl) ); - maDropErrorIdle.SetPriority(SchedulerPriority::MEDIUM); + maDropErrorIdle.SetPriority(TaskPriority::MEDIUM); maDropInsertFileIdle.SetIdleHdl( LINK(this, View, DropInsertFileHdl) ); - maDropInsertFileIdle.SetPriority(SchedulerPriority::MEDIUM); + maDropInsertFileIdle.SetPriority(TaskPriority::MEDIUM); } void View::ImplClearDrawDropMarker() diff --git a/sfx2/source/appl/appcfg.cxx b/sfx2/source/appl/appcfg.cxx index f0a8726..4e9a40e 100644 --- a/sfx2/source/appl/appcfg.cxx +++ b/sfx2/source/appl/appcfg.cxx @@ -109,7 +109,7 @@ SfxEventAsyncer_Impl::SfxEventAsyncer_Impl( const SfxEventHint& rHint ) StartListening( *rHint.GetObjShell() ); pIdle.reset( new Idle("SfxEventASyncer") ); pIdle->SetIdleHdl( LINK(this, SfxEventAsyncer_Impl, IdleHdl) ); - pIdle->SetPriority( SchedulerPriority::HIGHEST ); + pIdle->SetPriority( TaskPriority::HIGHEST ); pIdle->SetDebugName( "sfx::SfxEventAsyncer_Impl pIdle" ); pIdle->Start(); } diff --git a/sfx2/source/appl/newhelp.cxx b/sfx2/source/appl/newhelp.cxx index e29f139..46eb4ab 100644 --- a/sfx2/source/appl/newhelp.cxx +++ b/sfx2/source/appl/newhelp.cxx @@ -552,7 +552,7 @@ IndexTabPage_Impl::IndexTabPage_Impl(vcl::Window* pParent, SfxHelpIndexWindow_Im m_pOpenBtn->SetClickHdl( LINK( this, IndexTabPage_Impl, OpenHdl ) ); Link<Timer *, void> aTimeoutLink = LINK( this, IndexTabPage_Impl, TimeoutHdl ); aFactoryIdle.SetIdleHdl( LINK(this, IndexTabPage_Impl, IdleHdl )); - aFactoryIdle.SetPriority(SchedulerPriority::LOWER); + aFactoryIdle.SetPriority(TaskPriority::LOWER); aKeywordTimer.SetTimeoutHdl( aTimeoutLink ); } @@ -1432,7 +1432,7 @@ SfxHelpIndexWindow_Impl::SfxHelpIndexWindow_Impl(SfxHelpWindow_Impl* _pParent) nMinWidth = ( m_pActiveLB->GetSizePixel().Width() / 2 ); aIdle.SetIdleHdl( LINK( this, SfxHelpIndexWindow_Impl, InitHdl ) ); - aIdle.SetPriority( SchedulerPriority::LOWER ); + aIdle.SetPriority( TaskPriority::LOWER ); aIdle.Start(); Show(); @@ -1562,7 +1562,7 @@ IMPL_LINK_NOARG(SfxHelpIndexWindow_Impl, InitHdl, Idle *, void) // now use the timer for selection aIdle.SetIdleHdl( LINK( this, SfxHelpIndexWindow_Impl, SelectFactoryHdl ) ); - aIdle.SetPriority( SchedulerPriority::LOWEST ); + aIdle.SetPriority( TaskPriority::LOWEST ); } IMPL_LINK_NOARG(SfxHelpIndexWindow_Impl, SelectFactoryHdl, Idle *, void) @@ -1902,7 +1902,7 @@ SfxHelpTextWindow_Impl::SfxHelpTextWindow_Impl( SfxHelpWindow_Impl* pParent ) : aOnStartupCB->SetClickHdl( LINK( this, SfxHelpTextWindow_Impl, CheckHdl ) ); aSelectIdle.SetIdleHdl( LINK( this, SfxHelpTextWindow_Impl, SelectHdl ) ); - aSelectIdle.SetPriority( SchedulerPriority::LOWEST ); + aSelectIdle.SetPriority( TaskPriority::LOWEST ); char* pEnv = getenv( "help_debug" ); if ( pEnv ) diff --git a/sfx2/source/control/dispatch.cxx b/sfx2/source/control/dispatch.cxx index 49e7e54..fefdf6a 100644 --- a/sfx2/source/control/dispatch.cxx +++ b/sfx2/source/control/dispatch.cxx @@ -450,7 +450,7 @@ void SfxDispatcher::Construct_Impl() xImp->xPoster = new SfxHintPoster(aGenLink); - xImp->aIdle.SetPriority(SchedulerPriority::MEDIUM); + xImp->aIdle.SetPriority(TaskPriority::MEDIUM); xImp->aIdle.SetIdleHdl( LINK(this, SfxDispatcher, EventHdl_Impl ) ); xImp->aIdle.SetDebugName( "sfx::SfxDispatcher_Impl aIdle" ); } @@ -574,7 +574,7 @@ void SfxDispatcher::Pop(SfxShell& rShell, SfxDispatcherPopFlags nMode) if(!pSfxApp->IsDowning() && !xImp->aToDoStack.empty()) { // No immediate update is requested - xImp->aIdle.SetPriority(SchedulerPriority::MEDIUM); + xImp->aIdle.SetPriority(TaskPriority::MEDIUM); xImp->aIdle.SetIdleHdl( LINK(this, SfxDispatcher, EventHdl_Impl ) ); xImp->aIdle.Start(); } @@ -770,7 +770,7 @@ void SfxDispatcher::DoActivate_Impl(bool bMDI) if(!xImp->aToDoStack.empty()) { // No immediate update is requested - xImp->aIdle.SetPriority(SchedulerPriority::MEDIUM); + xImp->aIdle.SetPriority(TaskPriority::MEDIUM); xImp->aIdle.SetIdleHdl( LINK(this, SfxDispatcher, EventHdl_Impl ) ); xImp->aIdle.Start(); } diff --git a/sfx2/source/control/itemdel.cxx b/sfx2/source/control/itemdel.cxx index c835b8c..706f0cc 100644 --- a/sfx2/source/control/itemdel.cxx +++ b/sfx2/source/control/itemdel.cxx @@ -45,7 +45,7 @@ SfxItemDisruptor_Impl::SfxItemDisruptor_Impl(SfxPoolItem *const pItemToDisrupt) , m_Idle("sfx SfxItemDisruptor_Impl::Delete") { m_Idle.SetIdleHdl(LINK(this, SfxItemDisruptor_Impl, Delete)); - m_Idle.SetPriority(SchedulerPriority::DEFAULT_IDLE); + m_Idle.SetPriority(TaskPriority::DEFAULT_IDLE); DBG_ASSERT( 0 == pItem->GetRefCount(), "disrupting pooled item" ); pItem->SetKind(SfxItemKind::DeleteOnIdle); diff --git a/sfx2/source/dialog/basedlgs.cxx b/sfx2/source/dialog/basedlgs.cxx index b319f29..a097085 100644 --- a/sfx2/source/dialog/basedlgs.cxx +++ b/sfx2/source/dialog/basedlgs.cxx @@ -301,7 +301,7 @@ void SfxModelessDialog::Init(SfxBindings *pBindinx, SfxChildWindow *pCW) pImpl->bConstructed = false; if ( pBindinx ) pImpl->StartListening( *pBindinx ); - pImpl->aMoveIdle.SetPriority(SchedulerPriority::RESIZE); + pImpl->aMoveIdle.SetPriority(TaskPriority::RESIZE); pImpl->aMoveIdle.SetIdleHdl(LINK(this,SfxModelessDialog,TimerHdl)); } @@ -439,7 +439,7 @@ SfxFloatingWindow::SfxFloatingWindow( SfxBindings *pBindinx, pImpl->bConstructed = false; if ( pBindinx ) pImpl->StartListening( *pBindinx ); - pImpl->aMoveIdle.SetPriority(SchedulerPriority::RESIZE); + pImpl->aMoveIdle.SetPriority(TaskPriority::RESIZE); pImpl->aMoveIdle.SetIdleHdl(LINK(this,SfxFloatingWindow,TimerHdl)); } @@ -456,7 +456,7 @@ SfxFloatingWindow::SfxFloatingWindow( SfxBindings *pBindinx, if ( pBindinx ) pImpl->StartListening( *pBindinx ); - pImpl->aMoveIdle.SetPriority(SchedulerPriority::RESIZE); + pImpl->aMoveIdle.SetPriority(TaskPriority::RESIZE); pImpl->aMoveIdle.SetIdleHdl(LINK(this,SfxFloatingWindow,TimerHdl)); } diff --git a/sfx2/source/dialog/dinfdlg.cxx b/sfx2/source/dialog/dinfdlg.cxx index 410d5e6..cddee1e 100644 --- a/sfx2/source/dialog/dinfdlg.cxx +++ b/sfx2/source/dialog/dinfdlg.cxx @@ -1506,9 +1506,9 @@ CustomPropertiesWindow::CustomPropertiesWindow(vcl::Window* pParent, m_aDateField->SetPosSizePixel(aPos, aSize); m_aTimeField->SetPosSizePixel(aPos, aSize); - m_aEditLoseFocusIdle.SetPriority( SchedulerPriority::LOWEST ); + m_aEditLoseFocusIdle.SetPriority( TaskPriority::LOWEST ); m_aEditLoseFocusIdle.SetIdleHdl( LINK( this, CustomPropertiesWindow, EditTimeoutHdl ) ); - m_aBoxLoseFocusIdle.SetPriority( SchedulerPriority::LOWEST ); + m_aBoxLoseFocusIdle.SetPriority( TaskPriority::LOWEST ); m_aBoxLoseFocusIdle.SetIdleHdl( LINK( this, CustomPropertiesWindow, BoxTimeoutHdl ) ); m_aNameBox->add_mnemonic_label(m_pHeaderAccName); diff --git a/sfx2/source/dialog/dockwin.cxx b/sfx2/source/dialog/dockwin.cxx index 6178bd0..6bc24a7 100644 --- a/sfx2/source/dialog/dockwin.cxx +++ b/sfx2/source/dialog/dockwin.cxx @@ -433,7 +433,7 @@ SfxDockingWindow_Impl::SfxDockingWindow_Impl(SfxDockingWindow* pBase) ,bNewLine(false) ,bDockingPrevented(false) { - aMoveIdle.SetPriority(SchedulerPriority::RESIZE); + aMoveIdle.SetPriority(TaskPriority::RESIZE); aMoveIdle.SetIdleHdl(LINK(pBase,SfxDockingWindow,TimerHdl)); aMoveIdle.SetDebugName( "sfx::SfxDockingWindow_Impl aMoveIdle" ); } diff --git a/sfx2/source/dialog/filedlghelper.cxx b/sfx2/source/dialog/filedlghelper.cxx index 4e81508..3f17a8a 100644 --- a/sfx2/source/dialog/filedlghelper.cxx +++ b/sfx2/source/dialog/filedlghelper.cxx @@ -986,7 +986,7 @@ FileDialogHelper_Impl::FileDialogHelper_Impl( mbHasPreview = true; // aPreviewTimer - maPreviewIdle.SetPriority( SchedulerPriority::LOWEST ); + maPreviewIdle.SetPriority( TaskPriority::LOWEST ); maPreviewIdle.SetIdleHdl( LINK( this, FileDialogHelper_Impl, TimeOutHdl_Impl ) ); break; @@ -1007,7 +1007,7 @@ FileDialogHelper_Impl::FileDialogHelper_Impl( nTemplateDescription = TemplateDescription::FILEOPEN_LINK_PREVIEW; mbHasPreview = true; // aPreviewTimer - maPreviewIdle.SetPriority( SchedulerPriority::LOWEST ); + maPreviewIdle.SetPriority( TaskPriority::LOWEST ); maPreviewIdle.SetIdleHdl( LINK( this, FileDialogHelper_Impl, TimeOutHdl_Impl ) ); break; @@ -1021,7 +1021,7 @@ FileDialogHelper_Impl::FileDialogHelper_Impl( nTemplateDescription = TemplateDescription::FILEOPEN_PREVIEW; mbHasPreview = true; // aPreviewTimer - maPreviewIdle.SetPriority( SchedulerPriority::LOWEST ); + maPreviewIdle.SetPriority( TaskPriority::LOWEST ); maPreviewIdle.SetIdleHdl( LINK( this, FileDialogHelper_Impl, TimeOutHdl_Impl ) ); break; diff --git a/sfx2/source/dialog/templdlg.cxx b/sfx2/source/dialog/templdlg.cxx index a8f6af1..8e56aee 100644 --- a/sfx2/source/dialog/templdlg.cxx +++ b/sfx2/source/dialog/templdlg.cxx @@ -1485,7 +1485,7 @@ void SfxCommonTemplateDialog_Impl::Notify(SfxBroadcaster& /*rBC*/, const SfxHint if(!pIdle) { pIdle=new Idle("SfxCommonTemplate"); - pIdle->SetPriority(SchedulerPriority::LOWEST); + pIdle->SetPriority(TaskPriority::LOWEST); pIdle->SetIdleHdl(LINK(this,SfxCommonTemplateDialog_Impl,TimeOut)); } pIdle->Start(); diff --git a/sfx2/source/doc/new.cxx b/sfx2/source/doc/new.cxx index 5d55b9c..9b78b0c 100644 --- a/sfx2/source/doc/new.cxx +++ b/sfx2/source/doc/new.cxx @@ -408,7 +408,7 @@ SfxNewFileDialog_Impl::SfxNewFileDialog_Impl( m_pRegionLb->SetSelectHdl(LINK(this, SfxNewFileDialog_Impl, RegionSelect)); } - aPrevIdle.SetPriority( SchedulerPriority::LOWEST ); + aPrevIdle.SetPriority( TaskPriority::LOWEST ); aPrevIdle.SetIdleHdl( LINK( this, SfxNewFileDialog_Impl, Update)); m_pRegionLb->SelectEntryPos(0); diff --git a/solenv/gdb/libreoffice/vcl.py b/solenv/gdb/libreoffice/vcl.py index 83f4057..28ba3eb 100644 --- a/solenv/gdb/libreoffice/vcl.py +++ b/solenv/gdb/libreoffice/vcl.py @@ -25,24 +25,24 @@ class ImplSchedulerDataPrinter(object): self.idle_type_ptr = gdb.lookup_type("Idle").pointer() def as_string(self, gdbobj): - if gdbobj['mpScheduler']: - sched = gdbobj['mpScheduler'].dereference() - if gdbobj['mpScheduler'].dynamic_cast( self.timer_type_ptr ): + if gdbobj['mpTask']: + sched = gdbobj['mpTask'].dereference() + if gdbobj['mpTask'].dynamic_cast( self.timer_type_ptr ): sched_type = "Timer" - elif gdbobj['mpScheduler'].dynamic_cast( self.idle_type_ptr ): + elif gdbobj['mpTask'].dynamic_cast( self.idle_type_ptr ): sched_type = "Idle" else: - assert sched_type, "Scheduler object neither Timer nor Idle" + assert sched_type, "Task object neither Timer nor Idle" res = "{:7s}{:10s} active: {:6s}".format( sched_type, str(sched['mePriority']), str(sched['mbActive']) ) name = sched['mpDebugName'] if not name: - res = res + " (scheduler debug name not set)" + res = res + " (task debug name not set)" else: res = "{} '{}' ({})".format(res, str(name.string()), str(sched.dynamic_type)) return res else: - assert gdbobj['mbDelete'], "No scheduler set and not marked for deletion!" - return "(no scheduler)" + assert gdbobj['mbDelete'], "No task set and not marked for deletion!" + return "(no task)" def to_string(self): return self.typename diff --git a/starmath/source/edit.cxx b/starmath/source/edit.cxx index 43fc755..af3e3e9 100644 --- a/starmath/source/edit.cxx +++ b/starmath/source/edit.cxx @@ -101,12 +101,12 @@ SmEditWindow::SmEditWindow( SmCmdBoxWindow &rMyCmdBoxWin ) : SetBackground( GetSettings().GetStyleSettings().GetWindowColor() ); aModifyIdle.SetIdleHdl(LINK(this, SmEditWindow, ModifyTimerHdl)); - aModifyIdle.SetPriority(SchedulerPriority::LOWEST); + aModifyIdle.SetPriority(TaskPriority::LOWEST); if (!IsInlineEditEnabled()) { aCursorMoveIdle.SetIdleHdl(LINK(this, SmEditWindow, CursorMoveTimerHdl)); - aCursorMoveIdle.SetPriority(SchedulerPriority::LOWEST); + aCursorMoveIdle.SetPriority(TaskPriority::LOWEST); } // if not called explicitly the this edit window within the diff --git a/svtools/source/contnr/imivctl1.cxx b/svtools/source/contnr/imivctl1.cxx index 2532c82..58cc3a6 100644 --- a/svtools/source/contnr/imivctl1.cxx +++ b/svtools/source/contnr/imivctl1.cxx @@ -139,23 +139,23 @@ SvxIconChoiceCtrl_Impl::SvxIconChoiceCtrl_Impl( nHorSBarHeight = aHorSBar->GetSizePixel().Height(); nVerSBarWidth = aVerSBar->GetSizePixel().Width(); - aEditIdle.SetPriority( SchedulerPriority::LOWEST ); + aEditIdle.SetPriority( TaskPriority::LOWEST ); aEditIdle.SetIdleHdl(LINK(this,SvxIconChoiceCtrl_Impl,EditTimeoutHdl)); aEditIdle.SetDebugName( "svtools::SvxIconChoiceCtrl_Impl aEditIdle" ); - aAutoArrangeIdle.SetPriority( SchedulerPriority::LOW ); + aAutoArrangeIdle.SetPriority( TaskPriority::LOW ); aAutoArrangeIdle.SetIdleHdl(LINK(this,SvxIconChoiceCtrl_Impl,AutoArrangeHdl)); aAutoArrangeIdle.SetDebugName( "svtools::SvxIconChoiceCtrl_Impl aAutoArrangeIdle" ); - aCallSelectHdlIdle.SetPriority( SchedulerPriority::LOWEST ); + aCallSelectHdlIdle.SetPriority( TaskPriority::LOWEST ); aCallSelectHdlIdle.SetIdleHdl( LINK(this,SvxIconChoiceCtrl_Impl,CallSelectHdlHdl)); aCallSelectHdlIdle.SetDebugName( "svtools::SvxIconChoiceCtrl_Impl aCallSelectHdlIdle" ); - aDocRectChangedIdle.SetPriority( SchedulerPriority::MEDIUM ); + aDocRectChangedIdle.SetPriority( TaskPriority::MEDIUM ); aDocRectChangedIdle.SetIdleHdl(LINK(this,SvxIconChoiceCtrl_Impl,DocRectChangedHdl)); aDocRectChangedIdle.SetDebugName( "svtools::SvxIconChoiceCtrl_Impl aDocRectChangedIdle" ); - aVisRectChangedIdle.SetPriority( SchedulerPriority::MEDIUM ); + aVisRectChangedIdle.SetPriority( TaskPriority::MEDIUM ); aVisRectChangedIdle.SetIdleHdl(LINK(this,SvxIconChoiceCtrl_Impl,VisRectChangedHdl)); aVisRectChangedIdle.SetDebugName( "svtools::SvxIconChoiceCtrl_Impl aVisRectChangedIdle" ); @@ -3032,7 +3032,7 @@ IcnViewEdit_Impl::IcnViewEdit_Impl( SvtIconChoiceCtrl* pParent, const Point& rPo bAlreadyInCallback( false ), bGrabFocus( false ) { - maLoseFocusIdle.SetPriority(SchedulerPriority::REPAINT); + maLoseFocusIdle.SetPriority(TaskPriority::REPAINT); maLoseFocusIdle.SetIdleHdl(LINK(this,IcnViewEdit_Impl,Timeout_Impl)); maLoseFocusIdle.SetDebugName( "svx::IcnViewEdit_Impl maLoseFocusIdle" ); diff --git a/svtools/source/contnr/svimpbox.cxx b/svtools/source/contnr/svimpbox.cxx index d3cbdee..b0e693c 100644 --- a/svtools/source/contnr/svimpbox.cxx +++ b/svtools/source/contnr/svimpbox.cxx @@ -89,7 +89,7 @@ SvImpLBox::SvImpLBox( SvTreeListBox* pLBView, SvTreeList* pLBTree, WinBits nWinS nNodeBmpWidth = 0; bAsyncBeginDrag = false; - aAsyncBeginDragIdle.SetPriority( SchedulerPriority::HIGHEST ); + aAsyncBeginDragIdle.SetPriority( TaskPriority::HIGHEST ); aAsyncBeginDragIdle.SetIdleHdl( LINK(this,SvImpLBox,BeginDragHdl)); // button animation in listbox pActiveButton = nullptr; @@ -99,7 +99,7 @@ SvImpLBox::SvImpLBox( SvTreeListBox* pLBView, SvTreeList* pLBTree, WinBits nWinS nFlags = LBoxFlags::NONE; nCurTabPos = FIRST_ENTRY_TAB; - aEditIdle.SetPriority( SchedulerPriority::LOWEST ); + aEditIdle.SetPriority( TaskPriority::LOWEST ); aEditIdle.SetIdleHdl( LINK(this,SvImpLBox,EditTimerCall) ); nMostRight = -1; diff --git a/svtools/source/contnr/treelistbox.cxx b/svtools/source/contnr/treelistbox.cxx index b9cdf53..649a7fb 100644 --- a/svtools/source/contnr/treelistbox.cxx +++ b/svtools/source/contnr/treelistbox.cxx @@ -199,7 +199,7 @@ void SvInplaceEdit2::LoseFocus() ) { bCanceled = false; - aIdle.SetPriority(SchedulerPriority::REPAINT); + aIdle.SetPriority(TaskPriority::REPAINT); aIdle.SetIdleHdl(LINK(this,SvInplaceEdit2,Timeout_Impl)); aIdle.SetDebugName( "svtools::SvInplaceEdit2 aIdle" ); aIdle.Start(); diff --git a/svtools/source/control/tabbar.cxx b/svtools/source/control/tabbar.cxx index 10e02ba..c88fdf0 100644 --- a/svtools/source/control/tabbar.cxx +++ b/svtools/source/control/tabbar.cxx @@ -399,7 +399,7 @@ TabBarEdit::TabBarEdit( TabBar* pParent, WinBits nWinStyle ) : Edit( pParent, nWinStyle ) { mbPostEvt = false; - maLoseFocusIdle.SetPriority( SchedulerPriority::REPAINT ); + maLoseFocusIdle.SetPriority( TaskPriority::REPAINT ); maLoseFocusIdle.SetIdleHdl( LINK( this, TabBarEdit, ImplEndTimerHdl ) ); maLoseFocusIdle.SetDebugName( "svtools::TabBarEdit maLoseFocusIdle" ); } diff --git a/svtools/source/dialogs/wizdlg.cxx b/svtools/source/dialogs/wizdlg.cxx index 7ff932e..1f28358 100644 --- a/svtools/source/dialogs/wizdlg.cxx +++ b/svtools/source/dialogs/wizdlg.cxx @@ -57,7 +57,7 @@ void WizardDialog::ImplInitData() mbEmptyViewMargin = false; mnLeftAlignCount = 0; - maWizardLayoutIdle.SetPriority(SchedulerPriority::RESIZE); + maWizardLayoutIdle.SetPriority(TaskPriority::RESIZE); maWizardLayoutIdle.SetIdleHdl( LINK( this, WizardDialog, ImplHandleWizardLayoutTimerHdl ) ); } diff --git a/svtools/source/misc/filechangedchecker.cxx b/svtools/source/misc/filechangedchecker.cxx index e0ebfd6..f696b86 100644 --- a/svtools/source/misc/filechangedchecker.cxx +++ b/svtools/source/misc/filechangedchecker.cxx @@ -35,7 +35,7 @@ void FileChangedChecker::resetTimer() mIdle.Start(); // Set lowest Priority - mIdle.SetPriority(SchedulerPriority::LOWEST); + mIdle.SetPriority(TaskPriority::LOWEST); } bool FileChangedChecker::getCurrentModTime(TimeValue& o_rValue) const diff --git a/svx/source/dialog/_contdlg.cxx b/svx/source/dialog/_contdlg.cxx index fe877794..7046976 100644 --- a/svx/source/dialog/_contdlg.cxx +++ b/svx/source/dialog/_contdlg.cxx @@ -286,10 +286,10 @@ SvxSuperContourDlg::SvxSuperContourDlg(SfxBindings *_pBindings, SfxChildWindow * Resize(); - aUpdateIdle.SetPriority( SchedulerPriority::LOW ); + aUpdateIdle.SetPriority( TaskPriority::LOW ); aUpdateIdle.SetIdleHdl( LINK( this, SvxSuperContourDlg, UpdateHdl ) ); - aCreateIdle.SetPriority( SchedulerPriority::RESIZE ); + aCreateIdle.SetPriority( TaskPriority::RESIZE ); aCreateIdle.SetIdleHdl( LINK( this, SvxSuperContourDlg, CreateHdl ) ); } diff --git a/svx/source/dialog/fontwork.cxx b/svx/source/dialog/fontwork.cxx index b86ce46..b668941 100644 --- a/svx/source/dialog/fontwork.cxx +++ b/svx/source/dialog/fontwork.cxx @@ -270,7 +270,7 @@ SvxFontWorkDialog::SvxFontWorkDialog(SfxBindings *pBindinx, m_pShadowColorLB->SetSelectHdl( LINK(this, SvxFontWorkDialog, ColorSelectHdl_Impl) ); - aInputIdle.SetPriority(SchedulerPriority::LOWEST); + aInputIdle.SetPriority(TaskPriority::LOWEST); aInputIdle.SetIdleHdl(LINK(this, SvxFontWorkDialog, InputTimoutHdl_Impl)); } diff --git a/svx/source/dialog/graphctl.cxx b/svx/source/dialog/graphctl.cxx index 0ae7f1c..afa5364 100644 --- a/svx/source/dialog/graphctl.cxx +++ b/svx/source/dialog/graphctl.cxx @@ -70,7 +70,7 @@ GraphCtrl::GraphCtrl( vcl::Window* pParent, WinBits nStyle ) : pView ( nullptr ) { pUserCall = new GraphCtrlUserCall( *this ); - aUpdateIdle.SetPriority( SchedulerPriority::LOWEST ); + aUpdateIdle.SetPriority( TaskPriority::LOWEST ); aUpdateIdle.SetIdleHdl( LINK( this, GraphCtrl, UpdateHdl ) ); aUpdateIdle.Start(); EnableRTL( false ); diff --git a/svx/source/dialog/imapdlg.cxx b/svx/source/dialog/imapdlg.cxx index 569210d..b208472 100644 --- a/svx/source/dialog/imapdlg.cxx +++ b/svx/source/dialog/imapdlg.cxx @@ -204,7 +204,7 @@ SvxIMapDlg::SvxIMapDlg(SfxBindings *_pBindings, SfxChildWindow *pCW, vcl::Window m_pCbbTarget->Disable(); pOwnData->bExecState = false; - pOwnData->aIdle.SetPriority( SchedulerPriority::LOW ); + pOwnData->aIdle.SetPriority( TaskPriority::LOW ); pOwnData->aIdle.SetIdleHdl( LINK( this, SvxIMapDlg, UpdateHdl ) ); m_pTbxIMapDlg1->EnableItem( mnActiveId, false ); diff --git a/svx/source/dialog/svxbmpnumvalueset.cxx b/svx/source/dialog/svxbmpnumvalueset.cxx index 3c696d7..5295025 100644 --- a/svx/source/dialog/svxbmpnumvalueset.cxx +++ b/svx/source/dialog/svxbmpnumvalueset.cxx @@ -466,7 +466,7 @@ void SvxBmpNumValueSet::init() GalleryExplorer::BeginLocking(GALLERY_THEME_BULLETS); SetStyle( GetStyle() | WB_VSCROLL ); SetLineCount( 3 ); - aFormatIdle.SetPriority(SchedulerPriority::LOWEST); + aFormatIdle.SetPriority(TaskPriority::LOWEST); aFormatIdle.SetIdleHdl(LINK(this, SvxBmpNumValueSet, FormatHdl_Impl)); } diff --git a/svx/source/form/datanavi.cxx b/svx/source/form/datanavi.cxx index b7298ef..bde4955 100644 --- a/svx/source/form/datanavi.cxx +++ b/svx/source/form/datanavi.cxx @@ -2748,7 +2748,7 @@ namespace svxform m_pConditionED->SetModifyHdl( LINK( this, AddConditionDialog, ModifyHdl ) ); m_pEditNamespacesBtn->SetClickHdl( LINK( this, AddConditionDialog, EditHdl ) ); m_pOKBtn->SetClickHdl( LINK( this, AddConditionDialog, OKHdl ) ); - m_aResultIdle.SetPriority( SchedulerPriority::LOWEST ); + m_aResultIdle.SetPriority( TaskPriority::LOWEST ); m_aResultIdle.SetIdleHdl( LINK( this, AddConditionDialog, ResultHdl ) ); if ( !m_sPropertyName.isEmpty() ) diff --git a/svx/source/form/formcontroller.cxx b/svx/source/form/formcontroller.cxx index 0a94692..74ea289 100644 --- a/svx/source/form/formcontroller.cxx +++ b/svx/source/form/formcontroller.cxx @@ -572,7 +572,7 @@ FormController::FormController(const Reference< css::uno::XComponentContext > & } osl_atomic_decrement(&m_refCount); - m_aTabActivationIdle.SetPriority( SchedulerPriority::LOWEST ); + m_aTabActivationIdle.SetPriority( TaskPriority::LOWEST ); m_aTabActivationIdle.SetIdleHdl( LINK( this, FormController, OnActivateTabOrder ) ); m_aFeatureInvalidationTimer.SetTimeout( 200 ); diff --git a/svx/source/sdr/contact/objectcontactofpageview.cxx b/svx/source/sdr/contact/objectcontactofpageview.cxx index efeaad6..0e81e85 100644 --- a/svx/source/sdr/contact/objectcontactofpageview.cxx +++ b/svx/source/sdr/contact/objectcontactofpageview.cxx @@ -61,7 +61,7 @@ namespace sdr setPreviewRenderer(((SdrPaintView&)rPageWindow.GetPageView().GetView()).IsPreviewRenderer()); // init timer - SetPriority(SchedulerPriority::HIGH); + SetPriority(TaskPriority::HIGH); Stop(); } diff --git a/svx/source/sdr/contact/viewobjectcontactofpageobj.cxx b/svx/source/sdr/contact/viewobjectcontactofpageobj.cxx index 4827c3d..dfe57ea 100644 --- a/svx/source/sdr/contact/viewobjectcontactofpageobj.cxx +++ b/svx/source/sdr/contact/viewobjectcontactofpageobj.cxx @@ -84,7 +84,7 @@ PagePrimitiveExtractor::PagePrimitiveExtractor( setPreviewRenderer(true); // init timer - SetPriority(SchedulerPriority::HIGH); + SetPriority(TaskPriority::HIGH); Stop(); } diff --git a/svx/source/sdr/event/eventhandler.cxx b/svx/source/sdr/event/eventhandler.cxx index 4f3c6ba..ae55c9e 100644 --- a/svx/source/sdr/event/eventhandler.cxx +++ b/svx/source/sdr/event/eventhandler.cxx @@ -83,7 +83,7 @@ namespace sdr TimerEventHandler::TimerEventHandler() { - SetPriority(SchedulerPriority::HIGH); + SetPriority(TaskPriority::HIGH); Stop(); } diff --git a/svx/source/sdr/overlay/overlaymanagerbuffered.cxx b/svx/source/sdr/overlay/overlaymanagerbuffered.cxx index 8ede68c..73a1051 100644 --- a/svx/source/sdr/overlay/overlaymanagerbuffered.cxx +++ b/svx/source/sdr/overlay/overlaymanagerbuffered.cxx @@ -383,7 +383,7 @@ namespace sdr mbRefreshWithPreRendering(bRefreshWithPreRendering) { // Init timer - maBufferIdle.SetPriority( SchedulerPriority::POST_PAINT ); + maBufferIdle.SetPriority( TaskPriority::POST_PAINT ); maBufferIdle.SetIdleHdl(LINK(this, OverlayManagerBuffered, ImpBufferTimerHandler)); maBufferIdle.SetDebugName( "sdr::overlay::OverlayManagerBuffered maBufferIdle" ); } diff --git a/svx/source/sidebar/PanelLayout.cxx b/svx/source/sidebar/PanelLayout.cxx index 097274a..eaa66be 100644 --- a/svx/source/sidebar/PanelLayout.cxx +++ b/svx/source/sidebar/PanelLayout.cxx @@ -25,7 +25,7 @@ PanelLayout::PanelLayout(vcl::Window* pParent, const OString& rID, const OUStrin { SetStyle(GetStyle() | WB_DIALOGCONTROL); m_pUIBuilder.reset(new VclBuilder(this, getUIRootDir(), rUIXMLDescription, rID, rFrame)); - m_aPanelLayoutIdle.SetPriority(SchedulerPriority::RESIZE); + m_aPanelLayoutIdle.SetPriority(TaskPriority::RESIZE); m_aPanelLayoutIdle.SetIdleHdl( LINK( this, PanelLayout, ImplHandlePanelLayoutTimerHdl ) ); m_aPanelLayoutIdle.SetDebugName( "svx::PanelLayout m_aPanelLayoutIdle" ); if (GetSettings().GetStyleSettings().GetAutoMnemonic()) diff --git a/svx/source/sidebar/media/MediaPlaybackPanel.cxx b/svx/source/sidebar/media/MediaPlaybackPanel.cxx index 46f7645..0b4773c 100644 --- a/svx/source/sidebar/media/MediaPlaybackPanel.cxx +++ b/svx/source/sidebar/media/MediaPlaybackPanel.cxx @@ -81,7 +81,7 @@ void MediaPlaybackPanel::Initialize() mpMuteToolBox->SetSelectHdl(LINK(this, MediaPlaybackPanel, PlayToolBoxSelectHdl)); mpTimeSlider->SetSlideHdl(LINK(this, MediaPlaybackPanel, SeekHdl)); - maIdle.SetPriority( SchedulerPriority::HIGHEST ); + maIdle.SetPriority( TaskPriority::HIGHEST ); maIdle.SetIdleHdl( LINK( this, MediaPlaybackPanel, TimeoutHdl ) ); maIdle.Start(); mpBindings->Invalidate(SID_AVMEDIA_TOOLBOX); diff --git a/svx/source/stbctrls/modctrl.cxx b/svx/source/stbctrls/modctrl.cxx index 8b476f5..50abd3d 100644 --- a/svx/source/stbctrls/modctrl.cxx +++ b/svx/source/stbctrls/modctrl.cxx @@ -58,7 +58,7 @@ struct SvxModifyControl::ImplData maImages[MODIFICATION_STATE_YES] = Image(SVX_RES(RID_SVXBMP_DOC_MODIFIED_YES)); maImages[MODIFICATION_STATE_FEEDBACK] = Image(SVX_RES(RID_SVXBMP_DOC_MODIFIED_FEEDBACK)); - maIdle.SetPriority(SchedulerPriority::LOWEST); + maIdle.SetPriority(TaskPriority::LOWEST); } }; diff --git a/svx/source/svdraw/svdibrow.cxx b/svx/source/svdraw/svdibrow.cxx index 44ab835..cb444c3 100644 --- a/svx/source/svdraw/svdibrow.cxx +++ b/svx/source/svdraw/svdibrow.cxx @@ -1101,7 +1101,7 @@ void SdrItemBrowser::SetDirty() { if (!bDirty) { bDirty = true; - aIdle.SetPriority(SchedulerPriority::HIGH); + aIdle.SetPriority(TaskPriority::HIGH); aIdle.Start(); } } diff --git a/svx/source/svdraw/svdpntv.cxx b/svx/source/svdraw/svdpntv.cxx index 33eef08..9e8a41a 100644 --- a/svx/source/svdraw/svdpntv.cxx +++ b/svx/source/svdraw/svdpntv.cxx @@ -173,7 +173,7 @@ void SdrPaintView::ImpClearVars() mpDefaultStyleSheet=nullptr; mbSomeObjChgdFlag=false; mnGraphicManagerDrawMode = GraphicManagerDrawFlags::STANDARD; - maComeBackIdle.SetPriority(SchedulerPriority::REPAINT); + maComeBackIdle.SetPriority(TaskPriority::REPAINT); maComeBackIdle.SetIdleHdl(LINK(this,SdrPaintView,ImpComeBackHdl)); maComeBackIdle.SetDebugName( "svx::SdrPaintView aComeBackIdle" ); diff --git a/svx/source/tbxctrls/grafctrl.cxx b/svx/source/tbxctrls/grafctrl.cxx index 11b27ac..3c53cd7 100644 --- a/svx/source/tbxctrls/grafctrl.cxx +++ b/svx/source/tbxctrls/grafctrl.cxx @@ -121,7 +121,7 @@ ImplGrafMetricField::ImplGrafMetricField( vcl::Window* pParent, const OUString& SetSpinSize( 1 ); } - maIdle.SetPriority( SchedulerPriority::LOW ); + maIdle.SetPriority( TaskPriority::LOW ); maIdle.SetIdleHdl( LINK( this, ImplGrafMetricField, ImplModifyHdl ) ); } diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx index 5b428f6..f984499 100644 --- a/sw/qa/extras/uiwriter/uiwriter.cxx +++ b/sw/qa/extras/uiwriter/uiwriter.cxx @@ -3262,7 +3262,7 @@ class IdleTask IdleTask::IdleTask() : flag( false ) { //setting the Priority of Idle task to LOW, LOWEST - maIdle.SetPriority( SchedulerPriority::LOWEST ); + maIdle.SetPriority( TaskPriority::LOWEST ); //set idle for callback maIdle.SetIdleHdl( LINK( this, IdleTask, FlipFlag) ); //starting the idle diff --git a/sw/source/core/doc/DocumentStatisticsManager.cxx b/sw/source/core/doc/DocumentStatisticsManager.cxx index d4741d3..e599555 100644 --- a/sw/source/core/doc/DocumentStatisticsManager.cxx +++ b/sw/source/core/doc/DocumentStatisticsManager.cxx @@ -74,7 +74,7 @@ DocumentStatisticsManager::DocumentStatisticsManager( SwDoc& i_rSwdoc ) : m_rDoc mbInitialized( false ) { maStatsUpdateTimer.SetTimeout( 1 ); - maStatsUpdateTimer.SetPriority( SchedulerPriority::LOWEST ); + maStatsUpdateTimer.SetPriority( TaskPriority::LOWEST ); maStatsUpdateTimer.SetTimeoutHdl( LINK( this, DocumentStatisticsManager, DoIdleStatsUpdate ) ); maStatsUpdateTimer.SetDebugName( "sw::DocumentStatisticsManager maStatsUpdateTimer" ); } diff --git a/sw/source/core/doc/DocumentTimerManager.cxx b/sw/source/core/doc/DocumentTimerManager.cxx index 4a0176b..6b5ce55 100644 --- a/sw/source/core/doc/DocumentTimerManager.cxx +++ b/sw/source/core/doc/DocumentTimerManager.cxx @@ -42,7 +42,7 @@ DocumentTimerManager::DocumentTimerManager( SwDoc& i_rSwdoc ) : m_rDoc( i_rSwdoc mIdleBlockCount( 0 ), maIdle("DocumentTimerManagerIdleTimer") { - maIdle.SetPriority( SchedulerPriority::LOWEST ); + maIdle.SetPriority( TaskPriority::LOWEST ); maIdle.SetIdleHdl( LINK( this, DocumentTimerManager, DoIdleJobs) ); maIdle.SetDebugName( "sw::DocumentTimerManager maIdle" ); } diff --git a/sw/source/core/doc/docnew.cxx b/sw/source/core/doc/docnew.cxx index 325f383..3190a2a 100644 --- a/sw/source/core/doc/docnew.cxx +++ b/sw/source/core/doc/docnew.cxx @@ -329,7 +329,7 @@ SwDoc::SwDoc() new SwTextNode( SwNodeIndex( GetNodes().GetEndOfContent() ), getIDocumentStylePoolAccess().GetTextCollFromPool( RES_POOLCOLL_STANDARD )); - maOLEModifiedIdle.SetPriority( SchedulerPriority::LOWEST ); + maOLEModifiedIdle.SetPriority( TaskPriority::LOWEST ); maOLEModifiedIdle.SetIdleHdl( LINK( this, SwDoc, DoUpdateModifiedOLE )); maOLEModifiedIdle.SetDebugName( "sw::SwDoc maOLEModifiedIdle" ); diff --git a/sw/source/core/docnode/threadmanager.cxx b/sw/source/core/docnode/threadmanager.cxx index 89f97e57..db6efb5 100644 --- a/sw/source/core/docnode/threadmanager.cxx +++ b/sw/source/core/docnode/threadmanager.cxx @@ -46,7 +46,7 @@ void ThreadManager::Init() { mpThreadListener.reset( new ThreadListener( *this ) ); - maStartNewThreadIdle.SetPriority( SchedulerPriority::LOWEST ); + maStartNewThreadIdle.SetPriority( TaskPriority::LOWEST ); maStartNewThreadIdle.SetIdleHdl( LINK( this, ThreadManager, TryToStartNewThread ) ); } diff --git a/sw/source/ui/dbui/mmoutputtypepage.cxx b/sw/source/ui/dbui/mmoutputtypepage.cxx index e0f9337..24d8cd4 100644 --- a/sw/source/ui/dbui/mmoutputtypepage.cxx +++ b/sw/source/ui/dbui/mmoutputtypepage.cxx @@ -105,7 +105,7 @@ struct SwSendMailDialog_Impl nCurrentDescriptor(0), nDocumentCount(0) { - aRemoveIdle.SetPriority(SchedulerPriority::LOWEST); + aRemoveIdle.SetPriority(TaskPriority::LOWEST); } ~SwSendMailDialog_Impl() diff --git a/sw/source/ui/envelp/labfmt.cxx b/sw/source/ui/envelp/labfmt.cxx index 75ee218..f57c4bd 100644 --- a/sw/source/ui/envelp/labfmt.cxx +++ b/sw/source/ui/envelp/labfmt.cxx @@ -353,7 +353,7 @@ SwLabFormatPage::SwLabFormatPage(vcl::Window* pParent, const SfxItemSet& rSet) m_pSavePB->SetClickHdl( LINK (this, SwLabFormatPage, SaveHdl)); // Set timer - aPreviewIdle.SetPriority(SchedulerPriority::LOWEST); + aPreviewIdle.SetPriority(TaskPriority::LOWEST); aPreviewIdle.SetIdleHdl(LINK(this, SwLabFormatPage, PreviewHdl)); } diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxx index 4e415ec..c61e8d5 100644 --- a/sw/source/uibase/docvw/edtwin.cxx +++ b/sw/source/uibase/docvw/edtwin.cxx @@ -5098,7 +5098,7 @@ SwEditWin::SwEditWin(vcl::Window *pParent, SwView &rMyView): // TemplatePointer for colors should be resetted without // selection after single click - m_aTemplateIdle.SetPriority(SchedulerPriority::LOWEST); + m_aTemplateIdle.SetPriority(TaskPriority::LOWEST); m_aTemplateIdle.SetIdleHdl(LINK(this, SwEditWin, TemplateTimerHdl)); // temporary solution!!! Should set the font of the current diff --git a/sw/source/uibase/docvw/srcedtw.cxx b/sw/source/uibase/docvw/srcedtw.cxx index 51fa941..c9e0387 100644 --- a/sw/source/uibase/docvw/srcedtw.cxx +++ b/sw/source/uibase/docvw/srcedtw.cxx @@ -535,7 +535,7 @@ void SwSrcEditWindow::CreateTextEngine() m_pOutWin->SetFont( aFont ); m_pTextEngine->SetFont( aFont ); - m_aSyntaxIdle.SetPriority( SchedulerPriority::LOWER ); + m_aSyntaxIdle.SetPriority( TaskPriority::LOWER ); m_aSyntaxIdle.SetIdleHdl( LINK( this, SwSrcEditWindow, SyntaxTimerHdl ) ); m_pTextEngine->EnableUndo( true ); diff --git a/sw/source/uibase/utlui/navipi.cxx b/sw/source/uibase/utlui/navipi.cxx index e1e9adc..99e144d 100644 --- a/sw/source/uibase/utlui/navipi.cxx +++ b/sw/source/uibase/utlui/navipi.cxx @@ -724,7 +724,7 @@ SwNavigationPI::SwNavigationPI(SfxBindings* _pBindings, m_aContentTree->GrabFocus(); UsePage(); m_aPageChgIdle.SetIdleHdl(LINK(this, SwNavigationPI, ChangePageHdl)); - m_aPageChgIdle.SetPriority(SchedulerPriority::LOWEST); + m_aPageChgIdle.SetPriority(TaskPriority::LOWEST); m_aContentTree->SetAccessibleName(SW_RESSTR(STR_ACCESS_TL_CONTENT)); m_aGlobalTree->SetAccessibleName(SW_RESSTR(STR_ACCESS_TL_GLOBAL)); diff --git a/sw/source/uibase/utlui/unotools.cxx b/sw/source/uibase/utlui/unotools.cxx index 636039a..59d3afb 100644 --- a/sw/source/uibase/utlui/unotools.cxx +++ b/sw/source/uibase/utlui/unotools.cxx @@ -83,7 +83,7 @@ SwOneExampleFrame::SwOneExampleFrame( vcl::Window& rWin, // the controller is asynchronously set aLoadedIdle.SetIdleHdl(LINK(this, SwOneExampleFrame, TimeoutHdl)); - aLoadedIdle.SetPriority(SchedulerPriority::HIGH); + aLoadedIdle.SetPriority(TaskPriority::HIGH); CreateControl(); diff --git a/toolkit/source/awt/vclxtoolkit.cxx b/toolkit/source/awt/vclxtoolkit.cxx index 51e3321..02eddc8 100644 --- a/toolkit/source/awt/vclxtoolkit.cxx +++ b/toolkit/source/awt/vclxtoolkit.cxx @@ -150,7 +150,7 @@ public: Idle("pause"), m_nPauseMilliseconds(nPauseMilliseconds) { - SetPriority(SchedulerPriority::HIGHEST); + SetPriority(TaskPriority::HIGHEST); Start(); } diff --git a/vcl/backendtest/VisualBackendTest.cxx b/vcl/backendtest/VisualBackendTest.cxx index fd6f27b..b2e620a 100644 --- a/vcl/backendtest/VisualBackendTest.cxx +++ b/vcl/backendtest/VisualBackendTest.cxx @@ -118,7 +118,7 @@ public: , mpVDev(VclPtr<VirtualDevice>::Create()) { maUpdateTimer.SetTimeoutHdl(LINK(this, VisualBackendTestWindow, updateHdl)); - maUpdateTimer.SetPriority(SchedulerPriority::REPAINT); + maUpdateTimer.SetPriority(TaskPriority::REPAINT); if (mbAnimate) { maUpdateTimer.SetTimeout(1000.0); diff --git a/vcl/inc/saltimer.hxx b/vcl/inc/saltimer.hxx index c2e2c23..4d85418 100644 --- a/vcl/inc/saltimer.hxx +++ b/vcl/inc/saltimer.hxx @@ -56,21 +56,20 @@ public: } }; -class Scheduler; +class Task; // Internal scheduler record holding intrusive linked list pieces struct ImplSchedulerData { - ImplSchedulerData* mpNext; // Pointer to the next element in list - Scheduler* mpScheduler; // Pointer to VCL Scheduler instance - bool mbDelete; // Destroy this scheduler? - bool mbInScheduler; // Scheduler currently processed? + ImplSchedulerData *mpNext; // Pointer to the next element in list + Task *mpTask; // Pointer to VCL Task instance + bool mbDelete; // Destroy this task? + bool mbInScheduler; // Task currently processed? sal_uInt64 mnUpdateTime; // Last Update Time void Invoke(); const char *GetDebugName() const; - static ImplSchedulerData *GetMostImportantTask( bool bIdle, sal_uInt64 nTimeNow ); }; #endif // INCLUDED_VCL_INC_SALTIMER_HXX diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx index 824daa8..e3afd5b 100644 --- a/vcl/inc/svdata.hxx +++ b/vcl/inc/svdata.hxx @@ -24,7 +24,6 @@ #include <tools/fldunit.hxx> #include <unotools/options.hxx> -#include <vcl/idle.hxx> #include <vcl/svapp.hxx> #include <com/sun/star/lang/XComponent.hpp> @@ -46,6 +45,7 @@ struct ImplConfigData; class ImplDirectFontSubstitution; struct ImplHotKey; struct ImplEventHook; +struct ImplSchedulerData; class Point; class ResMgr; class ImplAccelManager; diff --git a/vcl/opengl/gdiimpl.cxx b/vcl/opengl/gdiimpl.cxx index 61fb63d..9043926 100644 --- a/vcl/opengl/gdiimpl.cxx +++ b/vcl/opengl/gdiimpl.cxx @@ -20,6 +20,7 @@ #include "openglgdiimpl.hxx" #include <vcl/gradient.hxx> +#include <vcl/idle.hxx> #include <salframe.hxx> #include "salvd.hxx" #include <basegfx/matrix/b2dhommatrixtools.hxx> @@ -54,13 +55,13 @@ public: , m_pImpl( pImpl ) { // We don't want to be swapping before we've painted. - SetPriority( SchedulerPriority::POST_PAINT ); + SetPriority( TaskPriority::POST_PAINT ); } virtual void Invoke() override { m_pImpl->doFlush(); - SetPriority( SchedulerPriority::HIGHEST ); + SetPriority( TaskPriority::HIGHEST ); Stop(); } }; @@ -150,7 +151,7 @@ void OpenGLSalGraphicsImpl::Init() maOffscreenTex.GetHeight() != GetHeight() ) { // We don't want to be swapping before we've painted. - mpFlush->SetPriority( SchedulerPriority::POST_PAINT ); + mpFlush->SetPriority( TaskPriority::POST_PAINT ); if( maOffscreenTex && // don't work to release empty textures mpContext.is() ) // valid context @@ -520,7 +521,7 @@ bool OpenGLSalGraphicsImpl::CheckOffscreenTexture() maOffscreenTex.GetHeight() != GetHeight() ) { VCL_GL_INFO( "re-size offscreen texture " << maOffscreenTex.Id() ); - mpFlush->SetPriority( SchedulerPriority::POST_PAINT ); + mpFlush->SetPriority( TaskPriority::POST_PAINT ); mpContext->ReleaseFramebuffer( maOffscreenTex ); maOffscreenTex = OpenGLTexture(); } diff --git a/vcl/osx/salinst.cxx b/vcl/osx/salinst.cxx index 4cd82d6..0bac909 100644 --- a/vcl/osx/salinst.cxx +++ b/vcl/osx/salinst.cxx @@ -109,7 +109,7 @@ void AquaSalInstance::delayedSettingsChanged( bool bInvalidate ) { osl::Guard< comphelper::SolarMutex > aGuard( *mpSalYieldMutex ); AquaDelayedSettingsChanged* pIdle = new AquaDelayedSettingsChanged( bInvalidate ); - pIdle->SetPriority( SchedulerPriority::MEDIUM ); + pIdle->SetPriority( TaskPriority::MEDIUM ); pIdle->Start(); } diff --git a/vcl/qa/cppunit/timer.cxx b/vcl/qa/cppunit/timer.cxx index 3bf387d..47439ad 100644 --- a/vcl/qa/cppunit/timer.cxx +++ b/vcl/qa/cppunit/timer.cxx @@ -102,7 +102,7 @@ public: explicit IdleBool( bool &rBool ) : Idle(), mrBool( rBool ) { - SetPriority( SchedulerPriority::LOWEST ); + SetPriority( TaskPriority::LOWEST ); Start(); mrBool = false; } diff --git a/vcl/source/app/idle.cxx b/vcl/source/app/idle.cxx index dea322f..52b8d98 100644 --- a/vcl/source/app/idle.cxx +++ b/vcl/source/app/idle.cxx @@ -27,32 +27,32 @@ void Idle::Invoke() Idle& Idle::operator=( const Idle& rIdle ) { - Scheduler::operator=(rIdle); + Task::operator=(rIdle); maIdleHdl = rIdle.maIdleHdl; return *this; } -Idle::Idle( const sal_Char *pDebugName ) : Scheduler( pDebugName ) +Idle::Idle( const sal_Char *pDebugName ) : Task( pDebugName ) { } -Idle::Idle( const Idle& rIdle ) : Scheduler(rIdle) +Idle::Idle( const Idle& rIdle ) : Task(rIdle) { maIdleHdl = rIdle.maIdleHdl; } void Idle::Start() { - Scheduler::Start(); + Task::Start(); sal_uInt64 nPeriod = Scheduler::ImmediateTimeoutMs; if (Scheduler::GetDeterministicMode()) { switch (mePriority) { - case SchedulerPriority::LOW: - case SchedulerPriority::LOWER: - case SchedulerPriority::LOWEST: + case TaskPriority::LOW: + case TaskPriority::LOWER: + case TaskPriority::LOWEST: nPeriod = Scheduler::InfiniteTimeoutMs; break; default: @@ -60,7 +60,7 @@ void Idle::Start() } } - Scheduler::ImplStartTimer(nPeriod); + Task::StartTimer(nPeriod); } bool Idle::ReadyForSchedule( bool bIdle, sal_uInt64 /* nTimeNow */ ) const @@ -77,7 +77,7 @@ bool Idle::IsIdle() const sal_uInt64 Idle::UpdateMinPeriod( sal_uInt64 /* nMinPeriod */, sal_uInt64 /* nTimeNow */ ) const { assert(false); // idles currently don't hit this. - return ImmediateTimeoutMs; + return Scheduler::ImmediateTimeoutMs; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/app/scheduler.cxx b/vcl/source/app/scheduler.cxx index 63c0c5f..3a62f3d 100644 --- a/vcl/source/app/scheduler.cxx +++ b/vcl/source/app/scheduler.cxx @@ -26,7 +26,6 @@ namespace { const sal_uInt64 MaximumTimeoutMs = 1000 * 60; // 1 minute -void InitSystemTimer(ImplSVData* pSVData); } void ImplSchedulerData::Invoke() @@ -38,49 +37,17 @@ void ImplSchedulerData::Invoke() return; // prepare Scheduler Object for deletion after handling - mpScheduler->SetDeletionFlags(); + mpTask->SetDeletionFlags(); // tdf#92036 Reset the period to avoid re-firing immediately. - mpScheduler->mpSchedulerData->mnUpdateTime = tools::Time::GetSystemTicks(); + mpTask->mpSchedulerData->mnUpdateTime = tools::Time::GetSystemTicks(); // invoke it mbInScheduler = true; - mpScheduler->Invoke(); + mpTask->Invoke(); mbInScheduler = false; } -ImplSchedulerData *ImplSchedulerData::GetMostImportantTask( bool bIdle, sal_uInt64 nTimeNow ) -{ - ImplSVData* pSVData = ImplGetSVData(); - ImplSchedulerData *pMostUrgent = nullptr; - - for ( ImplSchedulerData *pSchedulerData = pSVData->mpFirstSchedulerData; pSchedulerData; pSchedulerData = pSchedulerData->mpNext ) - { - if ( !pSchedulerData->mpScheduler || pSchedulerData->mbDelete || pSchedulerData->mbInScheduler || - !pSchedulerData->mpScheduler->ReadyForSchedule( bIdle, nTimeNow ) || - !pSchedulerData->mpScheduler->IsActive()) - continue; - if (!pMostUrgent) - pMostUrgent = pSchedulerData; - else - { - // Find the highest priority. - // If the priority of the current task is higher (numerical value is lower) than - // the priority of the most urgent, the current task gets the new most urgent. - if ( pSchedulerData->mpScheduler->GetPriority() < pMostUrgent->mpScheduler->GetPriority() ) - pMostUrgent = pSchedulerData; - } - } - - return pMostUrgent; -} - -void Scheduler::SetDeletionFlags() -{ - mpSchedulerData->mbDelete = true; - mbActive = false; -} - void Scheduler::ImplDeInitScheduler() { ImplSVData* pSVData = ImplGetSVData(); @@ -95,10 +62,10 @@ void Scheduler::ImplDeInitScheduler() do { ImplSchedulerData* pTempSchedulerData = pSchedulerData; - if ( pSchedulerData->mpScheduler ) + if ( pSchedulerData->mpTask ) { - pSchedulerData->mpScheduler->mbActive = false; - pSchedulerData->mpScheduler->mpSchedulerData = nullptr; + pSchedulerData->mpTask->mbActive = false; + pSchedulerData->mpTask->mpSchedulerData = nullptr; } pSchedulerData = pSchedulerData->mpNext; delete pTempSchedulerData; @@ -132,7 +99,12 @@ void Scheduler::ImplStartTimer(sal_uInt64 nMS, bool bForce) DBG_TESTSOLARMUTEX(); - InitSystemTimer(pSVData); + if (!pSVData->mpSalTimer) + { + pSVData->mnTimerPeriod = MaximumTimeoutMs; + pSVData->mpSalTimer = pSVData->mpDefInst->CreateSalTimer(); + pSVData->mpSalTimer->SetCallback(Scheduler::CallbackTaskScheduling); + } if ( !nMS ) nMS = 1; @@ -145,25 +117,6 @@ void Scheduler::ImplStartTimer(sal_uInt64 nMS, bool bForce) } } -namespace { - -/** -* Initialize the platform specific timer on which all the -* platform independent timers are built -*/ -void InitSystemTimer(ImplSVData* pSVData) -{ - assert(pSVData != nullptr); - if (!pSVData->mpSalTimer) - { - pSVData->mnTimerPeriod = MaximumTimeoutMs; - pSVData->mpSalTimer = pSVData->mpDefInst->CreateSalTimer(); - pSVData->mpSalTimer->SetCallback(Scheduler::CallbackTaskScheduling); - } -} - -} - void Scheduler::CallbackTaskScheduling( bool bIdle ) { // this function is for the saltimer callback @@ -172,17 +125,39 @@ void Scheduler::CallbackTaskScheduling( bool bIdle ) bool Scheduler::ProcessTaskScheduling( bool bIdle ) { - ImplSchedulerData* pSchedulerData; + ImplSVData *pSVData = ImplGetSVData(); + if ( pSVData->mbDeInit ) + return false; + ImplSchedulerData *pMostUrgent = nullptr; sal_uInt64 nTime = tools::Time::GetSystemTicks(); DBG_TESTSOLARMUTEX(); - if ((pSchedulerData = ImplSchedulerData::GetMostImportantTask(bIdle, nTime))) + for ( ImplSchedulerData *pSchedulerData = pSVData->mpFirstSchedulerData; + pSchedulerData; pSchedulerData = pSchedulerData->mpNext ) + { + if ( !pSchedulerData->mpTask || pSchedulerData->mbDelete || pSchedulerData->mbInScheduler || + !pSchedulerData->mpTask->ReadyForSchedule( bIdle, nTime ) || + !pSchedulerData->mpTask->IsActive()) + continue; + if (!pMostUrgent) + pMostUrgent = pSchedulerData; + else + { + // Find the highest priority. + // If the priority of the current task is higher (numerical value is lower) than + // the priority of the most urgent, the current task gets the new most urgent. ... etc. - the rest is truncated _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits