summaryrefslogtreecommitdiff
path: root/vcl/README.scheduler
diff options
context:
space:
mode:
authorJan-Marek Glogowski <glogow@fbihome.de>2017-08-15 08:23:31 +0200
committerJan-Marek Glogowski <glogow@fbihome.de>2017-08-22 15:01:41 +0200
commit33b094a8949c34756c593bfad52450ec2b7daa54 (patch)
tree1d3928d6c0227527e8269d8d19605c825f4b5eef /vcl/README.scheduler
parente4000dbe27ba65146854f02c9affb45e22f6639f (diff)
OSX fix updates during resize
While resizing MacOS suspends the NSDefaultRunLoopMode. So in this caae we can't post to the system event loop, but must use timers to restart ourself. Since the timer itself is scheduled on the NSEventTrackingRunLoopMode it' also triggers on resize events. There is still some minor glitch: when resizing too fast some part of LibreOffice isn't painted, while the left mouse button is down. Since there isn't any layouting triggered by the mouse up, there has to be an other inconsistency. Change-Id: I3ccba78bd23ec8526f21e7b93b027f3d3279f901
Diffstat (limited to 'vcl/README.scheduler')
-rw-r--r--vcl/README.scheduler11
1 files changed, 8 insertions, 3 deletions
diff --git a/vcl/README.scheduler b/vcl/README.scheduler
index 4c0f4c57981a..0251ab88fcab 100644
--- a/vcl/README.scheduler
+++ b/vcl/README.scheduler
@@ -91,9 +91,14 @@ can be added to the scheduler reasonably.
== MacOS implementation details ==
-Generally the Scheduler is handled as expected. There is a workaround for a
-problem for pushing tasks to an empty queue, as [NSApp postEvent: ...
-atStart: NO] doesn't append the event, if the message queue is empty.
+Generally the Scheduler is handled as expected, except on resize, which is
+handled with different runloop-modes in MacOS. In case of a resize, the normal
+runloop is suspended in sendEvent, so we can't call the scheduler via posted
+main loop-events. Instead the schedule the timer again.
+
+There is also a workaround for a problem for pushing tasks to an empty queue,
+as [NSApp postEvent: ... atStart: NO] doesn't append the event, if the
+message queue is empty.
Probably that's the reason, why some code comments spoke of lost events and
there was some distinct additional event processing implemented.