https://bugs.documentfoundation.org/show_bug.cgi?id=148435
--- Comment #28 from Peter Hagen <[email protected]> --- I don't know if anyone is trying to get it solved, but I would like to help get this resolved. I'm not a C++ + LibreOffice developer, so my help might be limited. We already identified at what commit this effect started to occur. This change below seems to be the reason it occurs: ``` diff --git a/vcl/source/app/scheduler.cxx b/vcl/source/app/scheduler.cxx index b325f9238a7d..57b8176521f7 100644 --- a/vcl/source/app/scheduler.cxx +++ b/vcl/source/app/scheduler.cxx @@ -430,6 +430,17 @@ bool Scheduler::ProcessTaskScheduling() << " of " << nTasks << " tasks" ); UpdateSystemTimer( rSchedCtx, nMinPeriod, true, nTime ); + // Delay invoking tasks with idle priorities as long as there are user input or repaint events + // in the OS event queue. This will often effectively compress such events and repaint only + // once at the end, improving performance in cases such as repeated zooming with a complex document. + if ( pMostUrgent && pMostUrgent->mePriority >= TaskPriority::HIGH_IDLE + && Application::AnyInput( VclInputFlags::MOUSE | VclInputFlags::KEYBOARD | VclInputFlags::PAINT )) + { + SAL_INFO( "vcl.schedule", tools::Time::GetSystemTicks() + << " idle priority task " << pMostUrgent << " delayed, system events pending" ); + pMostUrgent = nullptr; + } ``` If I check out the latest code, there are some changes in this part: ``` // Delay invoking tasks with idle priorities as long as there are user input or repaint events // in the OS event queue. This will often effectively compress such events and repaint only // once at the end, improving performance in cases such as repeated zooming with a complex document. if ( pMostUrgent && pMostUrgent->mePriority >= TaskPriority::HIGH_IDLE && Application::AnyInput( VclInputFlags::MOUSE | VclInputFlags::KEYBOARD | VclInputFlags::PAINT )) { SAL_INFO( "vcl.schedule", tools::Time::GetSystemTicks() << " idle priority task " << pMostUrgent << " delayed, system events pending" ); pMostUrgent = nullptr; nMinPeriod = 0; } if (InfiniteTimeoutMs != nMinPeriod) SAL_INFO("vcl.schedule", "Calculated minimum timeout as " << nMinPeriod << " of " << nTasks << " tasks"); UpdateSystemTimer(rSchedCtx, nMinPeriod, true, nTime); if ( !pMostUrgent ) return; ``` Further in the code, there is an unlock call. Could it be that exiting this code, could result in calling the unlock? I have no idea what this code does, just trying to think "out loud", -- You are receiving this mail because: You are the assignee for the bug.
