Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1069)

Unified Diff: runtime/observatory/lib/src/elements/helpers/rendering_scheduler.dart

Issue 2968283002: Fixed synchronization problem in FF and Safari for virtual-tree test (Closed)
Patch Set: Clear the RenderScheduler wait list after notification Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/observatory/lib/src/elements/helpers/rendering_scheduler.dart
diff --git a/runtime/observatory/lib/src/elements/helpers/rendering_scheduler.dart b/runtime/observatory/lib/src/elements/helpers/rendering_scheduler.dart
index b0f280a12b7b066c5de8e60cd543d69337f37514..e3e81e07c22b06d3b4f8ff2af07fc9624ffbd9fd 100644
--- a/runtime/observatory/lib/src/elements/helpers/rendering_scheduler.dart
+++ b/runtime/observatory/lib/src/elements/helpers/rendering_scheduler.dart
@@ -39,6 +39,8 @@ class RenderingScheduler<T extends Renderable> implements RenderingTask {
/// Queue used for rendering operations.
final RenderingQueue queue;
+ final List<Future> _wait = <Future>[];
+
/// Does the element need a new rendering cycle.
bool get isDirty => _dirty;
@@ -110,6 +112,7 @@ class RenderingScheduler<T extends Renderable> implements RenderingTask {
void render() {
if (!_enabled) return;
_dirty = false;
+ _wait.clear();
element.render();
_renderingScheduled = false;
scheduleNotification();
@@ -123,7 +126,13 @@ class RenderingScheduler<T extends Renderable> implements RenderingTask {
_notificationScheduled = true;
}
+ void waitFor(Iterable<Future> it) {
+ _wait.addAll(it);
+ }
+
Future _notify() async {
+ await Future.wait(_wait);
+ _wait.clear();
_onRendered.add(new RenderedEvent<T>(element, _dirty));
_notificationScheduled = false;
}

Powered by Google App Engine
This is Rietveld 408576698