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

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

Issue 2203433002: Added new implementations for virtual containers (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 4 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'dart:async'; 5 import 'dart:async';
6 6
7 import 'package:observatory/src/elements/helpers/rendering_queue.dart'; 7 import 'package:observatory/src/elements/helpers/rendering_queue.dart';
8 export 'package:observatory/src/elements/helpers/rendering_queue.dart'; 8 export 'package:observatory/src/elements/helpers/rendering_queue.dart';
9 9
10 /// A generic renderable object. 10 /// A generic renderable object.
(...skipping 17 matching lines...) Expand all
28 /// Scheduler for rendering operations. 28 /// Scheduler for rendering operations.
29 class RenderingScheduler<T extends Renderable> implements RenderingTask { 29 class RenderingScheduler<T extends Renderable> implements RenderingTask {
30 bool _enabled = false; 30 bool _enabled = false;
31 bool _dirty = false; 31 bool _dirty = false;
32 bool _renderingScheduled = false; 32 bool _renderingScheduled = false;
33 bool _notificationScheduled = false; 33 bool _notificationScheduled = false;
34 /// Element managed by this scheduler. 34 /// Element managed by this scheduler.
35 final T element; 35 final T element;
36 /// Queue used for rendering operations. 36 /// Queue used for rendering operations.
37 final RenderingQueue queue; 37 final RenderingQueue queue;
38 /// Does the element need a new rendering cycle.
39 bool get isDirty => _dirty;
40 /// Is the scheduler enabled.
41 bool get isEnabled => _enabled;
38 42
39 final StreamController<RenderedEvent<T>> _onRendered = 43 final StreamController<RenderedEvent<T>> _onRendered =
40 new StreamController<RenderedEvent<T>>.broadcast(); 44 new StreamController<RenderedEvent<T>>.broadcast();
41 Stream<RenderedEvent<T>> get onRendered => _onRendered.stream; 45 Stream<RenderedEvent<T>> get onRendered => _onRendered.stream;
42 46
43 /// Creates a new scheduler for an element. 47 /// Creates a new scheduler for an element.
44 /// If no queue is provided it will create a new default configured queue. 48 /// If no queue is provided it will create a new default configured queue.
45 factory RenderingScheduler(T element, {RenderingQueue queue}) { 49 factory RenderingScheduler(T element, {RenderingQueue queue}) {
46 assert(element != null); 50 assert(element != null);
47 if (queue == null) { queue = new RenderingQueue(); } 51 if (queue == null) { queue = new RenderingQueue(); }
48 return new RenderingScheduler<T>._(element, queue); 52 return new RenderingScheduler<T>._(element, queue);
49 } 53 }
50 54
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 if (_notificationScheduled) return; 112 if (_notificationScheduled) return;
109 _notify(); 113 _notify();
110 _notificationScheduled = true; 114 _notificationScheduled = true;
111 } 115 }
112 116
113 Future _notify() async { 117 Future _notify() async {
114 _onRendered.add(new RenderedEvent<T>(element, _dirty)); 118 _onRendered.add(new RenderedEvent<T>(element, _dirty));
115 _notificationScheduled = false; 119 _notificationScheduled = false;
116 } 120 }
117 } 121 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698