12 Commits

Author SHA1 Message Date
Chris Bracken
08dabe9601
Clean up C++ includes (#21127)
Cleans up header order/grouping for consistency: associated header, C/C++ system/standard library headers, library headers, platform-specific #includes.

Adds <cstring> where strlen, memcpy are being used: there are a bunch of places we use them transitively.

Applies linter-required cleanups. Disables linter on one file due to included RapidJson header. See https://github.com/flutter/flutter/issues/65676

This patch does not cover flutter/shell/platform/darwin. There's a separate, slightly more intensive cleanup for those in progress.
2020-09-11 21:18:35 -07:00
Chris Yang
2d3e1c58c5
|MessageLoopImpl::FlushTasks| runs one task at a time (#20771) 2020-08-27 14:18:02 -07:00
Emmanuel Garcia
8107b36c7b
Ensure loop is woken up at the right time (#20721) 2020-08-24 13:09:44 -07:00
Chris Yang
e7136c3f59
Ensure threads are merged when tearing down the Rasterizer (#19919) 2020-08-19 08:31:01 -07:00
Greg Spencer
e23e4775ae
Lint fixes for fml, tools subdirs (#19990)
This does lint fixes for the fml and tools subdirs.
2020-07-30 12:40:31 -07:00
gaaclarke
21efd7325e
Made the linter print out more information in its output and fixed bugs (#19895) 2020-07-22 15:38:09 -07:00
chunhtai
d33b91837e
Reland "fix fml_unittes is not run during presubmit (#13395)" (#13426) 2019-10-31 13:50:19 -07:00
chunhtai
e569294902
Revert "fix fml_unittes is not run during presubmit (#13395)" (#13425)
This reverts commit 4d553cfe1cd7ec235af4f9d3952a974757cda49b.
2019-10-29 16:36:43 -07:00
chunhtai
4d553cfe1c
fix fml_unittes is not run during presubmit (#13395) 2019-10-29 15:31:25 -07:00
Kaushik Iska
632a37b5d5
Make message loop task entry containers thread safe (#11367)
The core underlying issue is that vector push_back could re-allocate and cause us to segfault. I have switched the backing queues to a map per @jason-simmons suggestion in flutter/flutter#38778.

I've also added a test to capture the aforementioned bug. I've run internal tests several times to validate that this is fixed.

General threading note for this class is that only the following operations take a write lock on the meta mutex:

1. Create
2. Dispose

The rest of the operations take read lock on the meta mutex and acquire finer grained locks for the duration of the operation. We can not grab read lock for the entire duration of NotifyObservers for example because observer can in-turn create other queues -- Which we should not block.

Additional changes:

1. Make as many methods as possible const. Unlocked methods are all const.
2. Migrate all the queue members to a struct, and have a map.
3. Get rid of the un-used Swap functionality.
2019-08-22 23:27:25 -07:00
Kaushik Iska
379028ab66
Add the functionality to merge and unmerge MessageLoopTaskQueues (#9436)
- Add the functionality to merge and unmerge MessageLoopTaskQueues

This introduces a notion of a "owning" and "subsumed" queue ids.
Owning queue will take care of the tasks submitted to both that and it's
subsumed queue.

- The tasks submitted still maintain the queue affinity
- Same for the task observers

- Also adds MergedQueuesRunner which grabs both the locks owner
  and subsumed queues in RAII fashion.

- Also use task queue id to verify if we are running
  in the same thread.

- This is to enable merging the backed message loop task
  queues to enable dynamic thread merging in IOS.
2019-07-12 16:55:33 -07:00
Kaushik Iska
a632b781e0
Message loop task heaps are shared (#9335) 2019-06-19 14:03:14 -07:00