diff --git a/sdk/example/game/lib/image_map.dart b/sdk/example/game/lib/image_map.dart index 577df2a4e0b..7f0185c8fb0 100644 --- a/sdk/example/game/lib/image_map.dart +++ b/sdk/example/game/lib/image_map.dart @@ -18,7 +18,7 @@ class ImageMap { } void _addURL(String url) { - image_cache.load(url, (Image image) { + image_cache.load(url).then((Image image) { // Store reference to image _images[url] = image; @@ -34,4 +34,4 @@ class ImageMap { Image getImage(String url) => _images[url]; Image operator [](String url) => _images[url]; -} \ No newline at end of file +} diff --git a/sdk/example/raw/spinning_image.dart b/sdk/example/raw/spinning_image.dart index 9fa1b013aea..eca7059f549 100644 --- a/sdk/example/raw/spinning_image.dart +++ b/sdk/example/raw/spinning_image.dart @@ -59,7 +59,7 @@ bool handleEvent(Event event) { } if (event.type == "pointerup") { - image_cache.load(url2, handleImageLoad); + image_cache.load(url2).then(handleImageLoad); return true; } @@ -67,8 +67,7 @@ bool handleEvent(Event event) { } void main() { - image_cache.load(url1, handleImageLoad); - image_cache.load(url1, handleImageLoad); + image_cache.load(url1).then(handleImageLoad); view.setEventCallback(handleEvent); view.setBeginFrameCallback(beginFrame); } diff --git a/sdk/lib/mojo/asset_bundle.dart b/sdk/lib/mojo/asset_bundle.dart index 58a76501c71..b90c06afbd0 100644 --- a/sdk/lib/mojo/asset_bundle.dart +++ b/sdk/lib/mojo/asset_bundle.dart @@ -12,7 +12,7 @@ import 'shell.dart' as shell; import 'net/fetch.dart'; Future _decodeImage(core.MojoDataPipeConsumer assetData) { - Completer completer = new Completer(); + Completer completer = new Completer(); new sky.ImageDecoder(assetData.handle.h, completer.complete); return completer.future; } diff --git a/sdk/lib/mojo/net/image_cache.dart b/sdk/lib/mojo/net/image_cache.dart index fca61fd7017..5b0061ed16d 100644 --- a/sdk/lib/mojo/net/image_cache.dart +++ b/sdk/lib/mojo/net/image_cache.dart @@ -2,27 +2,28 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'dart:sky'; +import 'dart:async'; +import 'dart:sky' as sky; import 'dart:collection'; import 'package:mojom/mojo/url_response.mojom.dart'; import 'fetch.dart'; -final HashMap> _pendingRequests = - new HashMap>(); +final HashMap> _pendingRequests = + new HashMap>(); -final HashMap _completedRequests = - new HashMap(); +final HashMap _completedRequests = + new HashMap(); -void _loadComplete(url, image) { +void _loadComplete(String url, sky.Image image) { _completedRequests[url] = image; _pendingRequests[url].forEach((c) => c(image)); _pendingRequests.remove(url); } -void load(String url, ImageDecoderCallback callback) { - Image result = _completedRequests[url]; +void _load(String url, sky.ImageDecoderCallback callback) { + sky.Image result = _completedRequests[url]; if (result != null) { callback(_completedRequests[url]); return; @@ -31,7 +32,7 @@ void load(String url, ImageDecoderCallback callback) { bool newRequest = false; _pendingRequests.putIfAbsent(url, () { newRequest = true; - return new List(); + return new List(); }).add(callback); if (newRequest) { fetchUrl(url).then((UrlResponse response) { @@ -39,8 +40,15 @@ void load(String url, ImageDecoderCallback callback) { _loadComplete(url, null); return; } - new ImageDecoder(response.body.handle.h, - (image) => _loadComplete(url, image)); + new sky.ImageDecoder(response.body.handle.h, (image) { + _loadComplete(url, image); + }); }); } } + +Future load(String url) { + Completer completer = new Completer(); + _load(url, completer.complete); + return completer.future; +} diff --git a/sdk/lib/painting/box_painter.dart b/sdk/lib/painting/box_painter.dart index 6f3a9d6e499..6044b644844 100644 --- a/sdk/lib/painting/box_painter.dart +++ b/sdk/lib/painting/box_painter.dart @@ -140,7 +140,7 @@ class BackgroundImage { this.fit: BackgroundFit.scaleDown, this.repeat: BackgroundRepeat.noRepeat }) { - image_cache.load(src, (image) { + image_cache.load(src).then((image) { if (image == null) return; _image = image; diff --git a/sdk/lib/rendering/box.dart b/sdk/lib/rendering/box.dart index 515f58c9f43..c92f822810c 100644 --- a/sdk/lib/rendering/box.dart +++ b/sdk/lib/rendering/box.dart @@ -904,7 +904,7 @@ class RenderImage extends RenderBox { if (value == _src) return; _src = value; - image_cache.load(_src, (result) { + image_cache.load(_src).then((result) { _image = result; if (requestedSize.width == null || requestedSize.height == null) markNeedsLayout();