From 7e7b974090e5bacbf952fa63e34705d8addf3b97 Mon Sep 17 00:00:00 2001 From: shmyga Date: Fri, 8 Nov 2013 15:23:51 +0400 Subject: [PATCH] added disposable interface --- haxework/core/IDisposable.hx | 5 +++++ haxework/net/BaseLoader.hx | 2 ++ haxework/net/BaseMediaLoader.hx | 2 ++ haxework/net/callback/Callback.hx | 5 +++++ haxework/net/callback/ICallback.hx | 4 +++- 5 files changed, 17 insertions(+), 1 deletion(-) create mode 100755 haxework/core/IDisposable.hx diff --git a/haxework/core/IDisposable.hx b/haxework/core/IDisposable.hx new file mode 100755 index 0000000..a227526 --- /dev/null +++ b/haxework/core/IDisposable.hx @@ -0,0 +1,5 @@ +package haxework.core; + +interface IDisposable { + public function dispose():Void; +} \ No newline at end of file diff --git a/haxework/net/BaseLoader.hx b/haxework/net/BaseLoader.hx index 915326d..166cceb 100755 --- a/haxework/net/BaseLoader.hx +++ b/haxework/net/BaseLoader.hx @@ -56,6 +56,8 @@ class BaseLoader implements ILoader { throw "Abstract"; } + private function onInit(e:Event):Void {} + private function onComplete(e:Event):Void { var data:T = extrudeResult(e); var c:ICallback = callback; diff --git a/haxework/net/BaseMediaLoader.hx b/haxework/net/BaseMediaLoader.hx index 45fc6d6..5dec799 100755 --- a/haxework/net/BaseMediaLoader.hx +++ b/haxework/net/BaseMediaLoader.hx @@ -24,6 +24,7 @@ class BaseMediaLoader extends BaseLoader { private function buildLoader():Loader { var loader:Loader = new Loader(); + loader.contentLoaderInfo.addEventListener(Event.INIT, onInit); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError); loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError); @@ -33,6 +34,7 @@ class BaseMediaLoader extends BaseLoader { override private function dispose():Void { super.dispose(); if (loader != null) { + loader.contentLoaderInfo.removeEventListener(Event.INIT, onInit); loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onComplete); loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onError); loader.contentLoaderInfo.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, onError); diff --git a/haxework/net/callback/Callback.hx b/haxework/net/callback/Callback.hx index 92d8a03..b53ac4f 100755 --- a/haxework/net/callback/Callback.hx +++ b/haxework/net/callback/Callback.hx @@ -52,4 +52,9 @@ class Callback implements ICallback { this._fail = callback.callFail; return this; } + + public function dispose():Void { + _success = null; + _fail = null; + } } diff --git a/haxework/net/callback/ICallback.hx b/haxework/net/callback/ICallback.hx index f6d03c3..2637692 100755 --- a/haxework/net/callback/ICallback.hx +++ b/haxework/net/callback/ICallback.hx @@ -1,6 +1,8 @@ package haxework.net.callback; -interface ICallback { +import haxework.core.IDisposable; + +interface ICallback extends IDisposable { public function success(f:T -> Void):ICallback; public function fail(f:Dynamic -> Void):ICallback; public function callSuccess(data:T):Void;