 		 * signal is called only if the bounds of the stream actually changed.
 		 * 
 		 */
-		public function unlock() : void
+		public function unlock(hasChanged : Boolean = true) : void
 		{
 			if (!_locked)
 				throw new Error('Cannot unlock a stream that is not locked.');

			_locked = false;
			_invalidMinMax = true;
			
			if (_dataHasChanged)
			{
				_dataHasChanged = false;
				_changed.execute(this);

			if (_localDispose)
				throw new Error('Cannot lock stream data which is already disposed.');
			
			checkReadUsage(this);
			checkWriteUsage(this);
			
			_locked = true;
