ordersupplier fix
This commit is contained in:
@@ -13,5 +13,5 @@ interface IOrderSupplier {
|
|||||||
public var orders(default, null):Map<String, Order<Dynamic>>;
|
public var orders(default, null):Map<String, Order<Dynamic>>;
|
||||||
|
|
||||||
public function request<T>(url:String, clazz:Class<T>):Deferred<T>;
|
public function request<T>(url:String, clazz:Class<T>):Deferred<T>;
|
||||||
public function release(url:String, ?force:Bool = false):Void;
|
public function release(url:String, force:Bool = false):Void;
|
||||||
}
|
}
|
||||||
@@ -16,7 +16,10 @@ class OrderSupplier implements IOrderSupplier {
|
|||||||
|
|
||||||
public function request<T>(url:String, clazz:Class<T>):Deferred<T> {
|
public function request<T>(url:String, clazz:Class<T>):Deferred<T> {
|
||||||
if (orders.exists(url)) {
|
if (orders.exists(url)) {
|
||||||
return cast orders.get(url).deferred;
|
var order:Order<T> = orders.get(url);
|
||||||
|
order.clients++;
|
||||||
|
//L.d(TAG, "Request(" + order.clients + "): " + url);
|
||||||
|
return order.deferred;
|
||||||
} else {
|
} else {
|
||||||
var deferred = new Deferred<T>();
|
var deferred = new Deferred<T>();
|
||||||
var order:Order<T> = {
|
var order:Order<T> = {
|
||||||
@@ -44,17 +47,17 @@ class OrderSupplier implements IOrderSupplier {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function release(url:String, ?force:Bool = false):Void {
|
public function release(url:String, force:Bool = false):Void {
|
||||||
if (orders.exists(url)) {
|
if (orders.exists(url)) {
|
||||||
var order:Order<Dynamic> = orders.get(url);
|
var order:Order<Dynamic> = orders.get(url);
|
||||||
if (--order.clients <= 0 || force) {
|
if (--order.clients <= 0 || force) {
|
||||||
var data:Dynamic = order.data;
|
var data:Dynamic = order.data;
|
||||||
if (Std.is(data, BitmapData)) {
|
if (data != null && Std.is(data, BitmapData)) {
|
||||||
cast(data, BitmapData).dispose();
|
cast(data, BitmapData).dispose();
|
||||||
}
|
}
|
||||||
orders.remove(url);
|
orders.remove(url);
|
||||||
}
|
}
|
||||||
//L.d(TAG, "Release(" + order.clients + "): " + url);
|
L.d(TAG, "Release(" + order.clients + "): " + url);
|
||||||
//log();
|
//log();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user