 			_locked = false;
 			_invalidMinMax = true;
 			
-			if (_dataHasChanged)
+			if (_dataHasChanged && hasChanged)
 			{
 				_dataHasChanged = false;
 				_changed.execute(this);

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

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