diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2016-12-09 12:12:29 +0200 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2016-12-09 18:52:08 +0100 |
commit | e2e1aa6b08a914c6268bfe9c8b0a4bf1c1d0f45b (patch) | |
tree | 2c489a2f0dfed49c3aa2ec86ce4801c4b992064d /vcl/source | |
parent | 35848aea31519c2ec5631200dc627e05e71befba (diff) |
tdf#100337 Message boxes showup empty with white background
the bug here was that we had, on the stack, going into the scheduler
THREE times. Two of those were idles.
The original code would end up always picking the first idle from inside
ImplSchedulerData::GetMostImportantTask
and then
ImplSchedulerData::Invoke
would just return because we were still inside that Idle, and the second
Idle would never get executed
Since the second Idle was responsible for painting the dialog in the
bug, sometimes the dialog would never get painted.
Reviewed-on: https://gerrit.libreoffice.org/31785
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Tested-by: Jenkins <ci@libreoffice.org>
(cherry picked from commit 19a4eaab9a55a2ecb33b727bad6307c5a2badc23)
Reviewed-on: https://gerrit.libreoffice.org/31798
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
(cherry picked from commit 3be163c72925824eeadf5e75f6e0cf6229d8ceab)
Change-Id: Ia15b98a06e231c8e1c29450e05a76ad427e41e36
Diffstat (limited to 'vcl/source')
-rw-r--r-- | vcl/source/app/scheduler.cxx | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/vcl/source/app/scheduler.cxx b/vcl/source/app/scheduler.cxx index efb65ca110d2..1310c239e0e0 100644 --- a/vcl/source/app/scheduler.cxx +++ b/vcl/source/app/scheduler.cxx @@ -26,6 +26,7 @@ void ImplSchedulerData::Invoke() { + assert(!mbInScheduler); if (mbDelete || mbInScheduler ) return; @@ -49,7 +50,7 @@ ImplSchedulerData *ImplSchedulerData::GetMostImportantTask( bool bTimerOnly ) sal_uInt64 nTimeNow = tools::Time::GetSystemTicks(); for ( ImplSchedulerData *pSchedulerData = pSVData->mpFirstSchedulerData; pSchedulerData; pSchedulerData = pSchedulerData->mpNext ) { - if ( !pSchedulerData->mpScheduler || pSchedulerData->mbDelete || + if ( !pSchedulerData->mpScheduler || pSchedulerData->mbDelete || pSchedulerData->mbInScheduler || !pSchedulerData->mpScheduler->ReadyForSchedule( bTimerOnly, nTimeNow ) || !pSchedulerData->mpScheduler->IsActive()) continue; |