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

Side by Side Diff: sky/sdk/lib/framework/scheduler.dart

Issue 1177383006: Rename all the things (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: fix imports Created 5 years, 6 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
« no previous file with comments | « sky/sdk/lib/framework/rendering/stack.dart ('k') | sky/sdk/lib/framework/theme2/colors.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 import 'dart:sky' as sky;
6
7 typedef void Callback(double timeStamp);
8
9 bool _haveScheduledVisualUpdate = false;
10 int _nextCallbackId = 1;
11
12 final List<Callback> _persistentCallbacks = new List<Callback>();
13 Map<int, Callback> _transientCallbacks = new Map<int, Callback>();
14
15 void _beginFrame(double timeStamp) {
16 _haveScheduledVisualUpdate = false;
17
18 Map<int, Callback> callbacks = _transientCallbacks;
19 _transientCallbacks = new Map<int, Callback>();
20
21 callbacks.forEach((id, callback) {
22 callback(timeStamp);
23 });
24
25 for (Callback callback in _persistentCallbacks)
26 callback(timeStamp);
27 }
28
29 void init() {
30 assert(sky.window == null);
31 sky.view.setBeginFrameCallback(_beginFrame);
32 }
33
34 void addPersistentFrameCallback(Callback callback) {
35 assert(sky.window == null);
36 _persistentCallbacks.add(callback);
37 }
38
39 int requestAnimationFrame(Callback callback) {
40 if (sky.window != null)
41 return sky.window.requestAnimationFrame(callback);
42 int id = _nextCallbackId++;
43 _transientCallbacks[id] = callback;
44 ensureVisualUpdate();
45 return id;
46 }
47
48 void cancelAnimationFrame(int id) {
49 if (sky.window != null)
50 return sky.window.cancelAnimationFrame(id);
51 _transientCallbacks.remove(id);
52 }
53
54 void ensureVisualUpdate() {
55 assert(sky.window == null);
56 if (_haveScheduledVisualUpdate)
57 return;
58 sky.view.scheduleFrame();
59 _haveScheduledVisualUpdate = true;
60 }
OLDNEW
« no previous file with comments | « sky/sdk/lib/framework/rendering/stack.dart ('k') | sky/sdk/lib/framework/theme2/colors.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698