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

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

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

Powered by Google App Engine
This is Rietveld 408576698