From b48cf37bfe9b25d82bcc18ad58b2ed5c2f087548 Mon Sep 17 00:00:00 2001 From: Lehonti Ramos <17771375+Lehonti@users.noreply.github.com> Date: Tue, 26 Sep 2023 01:18:57 +0200 Subject: [PATCH] In `Avalonia.Base`, private fields that are never modified were made `readonly` (#13020) Co-authored-by: Lehonti Ramos --- .../Animation/AnimationInstance`1.cs | 10 +++++----- .../Animation/Animators/BoxShadowAnimator.cs | 6 +++--- .../Animation/DisposeAnimationInstanceSubject.cs | 10 +++++----- src/Avalonia.Base/AvaloniaObjectExtensions.cs | 2 +- .../NotifyCollectionChangedExtensions.cs | 2 +- src/Avalonia.Base/Data/BindingChainException.cs | 2 +- .../Data/Core/ExpressionObserver.cs | 4 ++-- .../Core/Parsers/ExpressionVisitorNodeBuilder.cs | 4 ++-- .../Data/Core/Plugins/PropertyError.cs | 2 +- .../Data/Core/PropertyAccessorNode.cs | 2 +- src/Avalonia.Base/Data/Core/StreamNode.cs | 2 +- src/Avalonia.Base/Input/Cursor.cs | 2 +- src/Avalonia.Base/Layout/LayoutManager.cs | 2 +- src/Avalonia.Base/Media/BoxShadow.cs | 2 +- src/Avalonia.Base/Media/BoxShadows.cs | 2 +- src/Avalonia.Base/Media/FormattedText.cs | 4 ++-- src/Avalonia.Base/Media/Geometry.cs | 2 +- src/Avalonia.Base/Media/Imaging/Bitmap.cs | 2 +- .../Media/Imaging/PixelFormatReaders.cs | 2 +- .../Media/Imaging/WriteableBitmap.cs | 2 +- src/Avalonia.Base/Media/MediaContext.Clock.cs | 4 ++-- src/Avalonia.Base/Media/MediaContext.cs | 4 ++-- src/Avalonia.Base/Media/UnicodeRange.cs | 2 +- .../PropertyStore/EffectiveValue`1.cs | 2 +- src/Avalonia.Base/Reactive/Operators/Sink.cs | 2 +- .../Animations/ImplicitAnimationCollection.cs | 4 ++-- .../Rendering/Composition/Compositor.cs | 16 ++++++++-------- .../CompositionRenderDataSceneBrushContent.cs | 2 +- .../Expressions/ExpressionTrackedValues.cs | 6 +++--- .../Composition/Server/DrawingContextProxy.cs | 2 +- .../Server/ServerCompositionTarget.cs | 6 +++--- .../Server/ServerCompositor.RenderResources.cs | 4 ++-- .../Composition/Server/ServerCompositor.cs | 12 ++++++------ .../Rendering/Composition/Transport/Batch.cs | 2 +- .../Transport/BatchStreamArrayPool.cs | 2 +- .../Rendering/Composition/VisualCollection.cs | 2 +- src/Avalonia.Base/Rendering/RenderLoop.cs | 6 +++--- src/Avalonia.Base/Rendering/SwapchainBase.cs | 2 +- .../Threading/Dispatcher.MainLoop.cs | 2 +- src/Avalonia.Base/Threading/Dispatcher.Queue.cs | 2 +- src/Avalonia.Base/Threading/Dispatcher.Timers.cs | 2 +- src/Avalonia.Base/Threading/DispatcherFrame.cs | 2 +- .../Threading/DispatcherOperation.cs | 4 ++-- src/Avalonia.Base/Threading/DispatcherTimer.cs | 6 +++--- src/Avalonia.Base/Threading/IDispatcherImpl.cs | 2 +- .../Threading/ThreadSafeObjectPool.cs | 2 +- src/Avalonia.Base/Utilities/PooledInlineList.cs | 4 ++-- src/Avalonia.Base/Utilities/Ref.cs | 4 ++-- .../Utilities/SingleOrDictionary.cs | 2 +- src/Avalonia.Base/Utilities/SmallDictionary.cs | 2 +- src/Avalonia.Base/Utilities/SpringSolver.cs | 10 +++++----- 51 files changed, 95 insertions(+), 95 deletions(-) diff --git a/src/Avalonia.Base/Animation/AnimationInstance`1.cs b/src/Avalonia.Base/Animation/AnimationInstance`1.cs index 7b11f319de..ec27978939 100644 --- a/src/Avalonia.Base/Animation/AnimationInstance`1.cs +++ b/src/Avalonia.Base/Animation/AnimationInstance`1.cs @@ -20,17 +20,17 @@ namespace Avalonia.Animation private bool _playbackReversed; private FillMode _fillMode; private PlaybackDirection _playbackDirection; - private Animator _animator; - private Animation _animation; - private Animatable _targetControl; + private readonly Animator _animator; + private readonly Animation _animation; + private readonly Animatable _targetControl; private T _neutralValue; private double _speedRatioConv; private TimeSpan _initialDelay; private TimeSpan _iterationDelay; private TimeSpan _duration; private Easings.Easing? _easeFunc; - private Action? _onCompleteAction; - private Func _interpolator; + private readonly Action? _onCompleteAction; + private readonly Func _interpolator; private IDisposable? _timerSub; private readonly IClock _baseClock; private IClock? _clock; diff --git a/src/Avalonia.Base/Animation/Animators/BoxShadowAnimator.cs b/src/Avalonia.Base/Animation/Animators/BoxShadowAnimator.cs index 08ed3cef4a..66c457d653 100644 --- a/src/Avalonia.Base/Animation/Animators/BoxShadowAnimator.cs +++ b/src/Avalonia.Base/Animation/Animators/BoxShadowAnimator.cs @@ -4,9 +4,9 @@ namespace Avalonia.Animation.Animators { internal class BoxShadowAnimator : Animator { - static ColorAnimator s_colorAnimator = new ColorAnimator(); - static DoubleAnimator s_doubleAnimator = new DoubleAnimator(); - static BoolAnimator s_boolAnimator = new BoolAnimator(); + static readonly ColorAnimator s_colorAnimator = new ColorAnimator(); + static readonly DoubleAnimator s_doubleAnimator = new DoubleAnimator(); + static readonly BoolAnimator s_boolAnimator = new BoolAnimator(); public override BoxShadow Interpolate(double progress, BoxShadow oldValue, BoxShadow newValue) { return new BoxShadow diff --git a/src/Avalonia.Base/Animation/DisposeAnimationInstanceSubject.cs b/src/Avalonia.Base/Animation/DisposeAnimationInstanceSubject.cs index 7283eaeedf..af25766289 100644 --- a/src/Avalonia.Base/Animation/DisposeAnimationInstanceSubject.cs +++ b/src/Avalonia.Base/Animation/DisposeAnimationInstanceSubject.cs @@ -10,11 +10,11 @@ namespace Avalonia.Animation { private IDisposable? _lastInstance; private bool _lastMatch; - private Animator _animator; - private Animation _animation; - private Animatable _control; - private Action? _onComplete; - private IClock? _clock; + private readonly Animator _animator; + private readonly Animation _animation; + private readonly Animatable _control; + private readonly Action? _onComplete; + private readonly IClock? _clock; public DisposeAnimationInstanceSubject(Animator animator, Animation animation, Animatable control, IClock? clock, Action? onComplete) { diff --git a/src/Avalonia.Base/AvaloniaObjectExtensions.cs b/src/Avalonia.Base/AvaloniaObjectExtensions.cs index 833cd4b034..7becd1c990 100644 --- a/src/Avalonia.Base/AvaloniaObjectExtensions.cs +++ b/src/Avalonia.Base/AvaloniaObjectExtensions.cs @@ -369,7 +369,7 @@ namespace Avalonia private class BindingAdaptor : IBinding { - private IObservable _source; + private readonly IObservable _source; public BindingAdaptor(IObservable source) { diff --git a/src/Avalonia.Base/Collections/NotifyCollectionChangedExtensions.cs b/src/Avalonia.Base/Collections/NotifyCollectionChangedExtensions.cs index 68863ea257..edae60ace5 100644 --- a/src/Avalonia.Base/Collections/NotifyCollectionChangedExtensions.cs +++ b/src/Avalonia.Base/Collections/NotifyCollectionChangedExtensions.cs @@ -60,7 +60,7 @@ namespace Avalonia.Collections private class WeakCollectionChangedObservable : LightweightObservableBase, IWeakEventSubscriber { - private WeakReference _sourceReference; + private readonly WeakReference _sourceReference; public WeakCollectionChangedObservable(WeakReference source) { diff --git a/src/Avalonia.Base/Data/BindingChainException.cs b/src/Avalonia.Base/Data/BindingChainException.cs index 2890680f9a..189decf9db 100644 --- a/src/Avalonia.Base/Data/BindingChainException.cs +++ b/src/Avalonia.Base/Data/BindingChainException.cs @@ -9,7 +9,7 @@ namespace Avalonia.Data /// public class BindingChainException : Exception { - private string _message; + private readonly string _message; /// /// Initializes a new instance of the class. diff --git a/src/Avalonia.Base/Data/Core/ExpressionObserver.cs b/src/Avalonia.Base/Data/Core/ExpressionObserver.cs index ce3549c4ad..a4658e643c 100644 --- a/src/Avalonia.Base/Data/Core/ExpressionObserver.cs +++ b/src/Avalonia.Base/Data/Core/ExpressionObserver.cs @@ -48,8 +48,8 @@ namespace Avalonia.Data.Core new ObservableStreamPlugin(), }; private readonly ExpressionNode _node; - private object? _root; - private Func? _rootGetter; + private readonly object? _root; + private readonly Func? _rootGetter; private IDisposable? _rootSubscription; private WeakReference? _value; private IReadOnlyList? _transformNodes; diff --git a/src/Avalonia.Base/Data/Core/Parsers/ExpressionVisitorNodeBuilder.cs b/src/Avalonia.Base/Data/Core/Parsers/ExpressionVisitorNodeBuilder.cs index e1e5a705f0..7498da3ccd 100644 --- a/src/Avalonia.Base/Data/Core/Parsers/ExpressionVisitorNodeBuilder.cs +++ b/src/Avalonia.Base/Data/Core/Parsers/ExpressionVisitorNodeBuilder.cs @@ -11,8 +11,8 @@ namespace Avalonia.Data.Core.Parsers class ExpressionVisitorNodeBuilder : ExpressionVisitor { private const string MultiDimensionalArrayGetterMethodName = "Get"; - private static PropertyInfo AvaloniaObjectIndexer; - private static MethodInfo CreateDelegateMethod; + private static readonly PropertyInfo AvaloniaObjectIndexer; + private static readonly MethodInfo CreateDelegateMethod; private readonly bool _enableDataValidation; diff --git a/src/Avalonia.Base/Data/Core/Plugins/PropertyError.cs b/src/Avalonia.Base/Data/Core/Plugins/PropertyError.cs index 62629e13bd..7143a4269a 100644 --- a/src/Avalonia.Base/Data/Core/Plugins/PropertyError.cs +++ b/src/Avalonia.Base/Data/Core/Plugins/PropertyError.cs @@ -7,7 +7,7 @@ namespace Avalonia.Data.Core.Plugins /// public class PropertyError : IPropertyAccessor { - private BindingNotification _error; + private readonly BindingNotification _error; /// /// Initializes a new instance of the class. diff --git a/src/Avalonia.Base/Data/Core/PropertyAccessorNode.cs b/src/Avalonia.Base/Data/Core/PropertyAccessorNode.cs index 3898d232ec..ff20f241ad 100644 --- a/src/Avalonia.Base/Data/Core/PropertyAccessorNode.cs +++ b/src/Avalonia.Base/Data/Core/PropertyAccessorNode.cs @@ -8,7 +8,7 @@ namespace Avalonia.Data.Core internal class PropertyAccessorNode : SettableNode { private readonly bool _enableValidation; - private IPropertyAccessorPlugin? _customPlugin; + private readonly IPropertyAccessorPlugin? _customPlugin; private IPropertyAccessor? _accessor; public PropertyAccessorNode(string propertyName, bool enableValidation) diff --git a/src/Avalonia.Base/Data/Core/StreamNode.cs b/src/Avalonia.Base/Data/Core/StreamNode.cs index d3da6414ac..3db5da2c7a 100644 --- a/src/Avalonia.Base/Data/Core/StreamNode.cs +++ b/src/Avalonia.Base/Data/Core/StreamNode.cs @@ -8,7 +8,7 @@ namespace Avalonia.Data.Core [RequiresUnreferencedCode(TrimmingMessages.ExpressionNodeRequiresUnreferencedCodeMessage)] internal class StreamNode : ExpressionNode { - private IStreamPlugin? _customPlugin = null; + private readonly IStreamPlugin? _customPlugin = null; private IDisposable? _subscription; public override string Description => "^"; diff --git a/src/Avalonia.Base/Input/Cursor.cs b/src/Avalonia.Base/Input/Cursor.cs index 719b64baba..2de2f12aff 100644 --- a/src/Avalonia.Base/Input/Cursor.cs +++ b/src/Avalonia.Base/Input/Cursor.cs @@ -42,7 +42,7 @@ namespace Avalonia.Input public class Cursor : IDisposable { public static readonly Cursor Default = new Cursor(StandardCursorType.Arrow); - private string _name; + private readonly string _name; private Cursor(ICursorImpl platformImpl, string name) { diff --git a/src/Avalonia.Base/Layout/LayoutManager.cs b/src/Avalonia.Base/Layout/LayoutManager.cs index c64c2714c3..dee16191d6 100644 --- a/src/Avalonia.Base/Layout/LayoutManager.cs +++ b/src/Avalonia.Base/Layout/LayoutManager.cs @@ -29,7 +29,7 @@ namespace Avalonia.Layout private bool _queued; private bool _running; private int _totalPassCount; - private Action _invokeOnRender; + private readonly Action _invokeOnRender; public LayoutManager(ILayoutRoot owner) { diff --git a/src/Avalonia.Base/Media/BoxShadow.cs b/src/Avalonia.Base/Media/BoxShadow.cs index a0e1873d30..71a7c672f2 100644 --- a/src/Avalonia.Base/Media/BoxShadow.cs +++ b/src/Avalonia.Base/Media/BoxShadow.cs @@ -44,7 +44,7 @@ namespace Avalonia.Media struct ArrayReader { private int _index; - private string[] _arr; + private readonly string[] _arr; public ArrayReader(string[] arr) { diff --git a/src/Avalonia.Base/Media/BoxShadows.cs b/src/Avalonia.Base/Media/BoxShadows.cs index 3ddd8e0a95..400aafa0df 100644 --- a/src/Avalonia.Base/Media/BoxShadows.cs +++ b/src/Avalonia.Base/Media/BoxShadows.cs @@ -61,7 +61,7 @@ namespace Avalonia.Media #pragma warning restore CA1815 // Override equals and operator equals on value types { private int _index; - private BoxShadows _shadows; + private readonly BoxShadows _shadows; public BoxShadowsEnumerator(BoxShadows shadows) { diff --git a/src/Avalonia.Base/Media/FormattedText.cs b/src/Avalonia.Base/Media/FormattedText.cs index 7d204ca8cd..8ad2c0d9e9 100644 --- a/src/Avalonia.Base/Media/FormattedText.cs +++ b/src/Avalonia.Base/Media/FormattedText.cs @@ -23,11 +23,11 @@ namespace Avalonia.Media private const double MaxFontEmSize = RealInfiniteWidth / GreatestMultiplierOfEm; // properties and format runs - private string _text; + private readonly string _text; private readonly SpanVector _formatRuns = new SpanVector(null); private SpanPosition _latestPosition; - private GenericTextParagraphProperties _defaultParaProps; + private readonly GenericTextParagraphProperties _defaultParaProps; private double _maxTextWidth = double.PositiveInfinity; private double[]? _maxTextWidths; diff --git a/src/Avalonia.Base/Media/Geometry.cs b/src/Avalonia.Base/Media/Geometry.cs index d8fa3bb07f..87b7c147d7 100644 --- a/src/Avalonia.Base/Media/Geometry.cs +++ b/src/Avalonia.Base/Media/Geometry.cs @@ -21,7 +21,7 @@ namespace Avalonia.Media AvaloniaProperty.Register(nameof(Transform)); private bool _isDirty = true; - private bool _canInvaldate = true; + private readonly bool _canInvaldate = true; private IGeometryImpl? _platformImpl; static Geometry() diff --git a/src/Avalonia.Base/Media/Imaging/Bitmap.cs b/src/Avalonia.Base/Media/Imaging/Bitmap.cs index abf12ad686..4ddf0eb322 100644 --- a/src/Avalonia.Base/Media/Imaging/Bitmap.cs +++ b/src/Avalonia.Base/Media/Imaging/Bitmap.cs @@ -12,7 +12,7 @@ namespace Avalonia.Media.Imaging /// public class Bitmap : IBitmap, IImageBrushSource { - private bool _isTranscoded; + private readonly bool _isTranscoded; /// /// Loads a Bitmap from a stream and decodes at the desired width. Aspect ratio is maintained. /// This is more efficient than loading and then resizing. diff --git a/src/Avalonia.Base/Media/Imaging/PixelFormatReaders.cs b/src/Avalonia.Base/Media/Imaging/PixelFormatReaders.cs index df2614d8ff..97c51c910a 100644 --- a/src/Avalonia.Base/Media/Imaging/PixelFormatReaders.cs +++ b/src/Avalonia.Base/Media/Imaging/PixelFormatReaders.cs @@ -94,7 +94,7 @@ internal static unsafe class PixelFormatReader _bit = 0; } - private static Rgba8888Pixel[] Palette = new[] + private static readonly Rgba8888Pixel[] Palette = new[] { s_black, new Rgba8888Pixel diff --git a/src/Avalonia.Base/Media/Imaging/WriteableBitmap.cs b/src/Avalonia.Base/Media/Imaging/WriteableBitmap.cs index 5ec00f9c7e..73dcf6365b 100644 --- a/src/Avalonia.Base/Media/Imaging/WriteableBitmap.cs +++ b/src/Avalonia.Base/Media/Imaging/WriteableBitmap.cs @@ -11,7 +11,7 @@ namespace Avalonia.Media.Imaging public class WriteableBitmap : Bitmap { // Holds a buffer with pixel format that requires transcoding - private BitmapMemory? _pixelFormatMemory = null; + private readonly BitmapMemory? _pixelFormatMemory = null; /// /// Initializes a new instance of the class. diff --git a/src/Avalonia.Base/Media/MediaContext.Clock.cs b/src/Avalonia.Base/Media/MediaContext.Clock.cs index c4293d0eaa..fc7bd6ba3f 100644 --- a/src/Avalonia.Base/Media/MediaContext.Clock.cs +++ b/src/Avalonia.Base/Media/MediaContext.Clock.cs @@ -15,8 +15,8 @@ internal partial class MediaContext class MediaContextClock : IGlobalClock { private readonly MediaContext _parent; - private List> _observers = new(); - private List> _newObservers = new(); + private readonly List> _observers = new(); + private readonly List> _newObservers = new(); private Queue> _queuedAnimationFrames = new(); private Queue> _queuedAnimationFramesNext = new(); private TimeSpan _currentAnimationTimestamp; diff --git a/src/Avalonia.Base/Media/MediaContext.cs b/src/Avalonia.Base/Media/MediaContext.cs index 997b9cfa5a..2e9a2ead18 100644 --- a/src/Avalonia.Base/Media/MediaContext.cs +++ b/src/Avalonia.Base/Media/MediaContext.cs @@ -26,7 +26,7 @@ internal partial class MediaContext : ICompositorScheduler private List? _invokeOnRenderCallbacks; private readonly Stack> _invokeOnRenderCallbackListPool = new(); - private DispatcherTimer _animationsTimer = new(DispatcherPriority.Render) + private readonly DispatcherTimer _animationsTimer = new(DispatcherPriority.Render) { // Since this timer is used to drive animations that didn't contribute to the previous frame at all // We can safely use 16ms interval until we fix our animation system to actually report the next expected @@ -34,7 +34,7 @@ internal partial class MediaContext : ICompositorScheduler Interval = TimeSpan.FromMilliseconds(16) }; - private Dictionary _topLevels = new(); + private readonly Dictionary _topLevels = new(); private MediaContext(Dispatcher dispatcher) { diff --git a/src/Avalonia.Base/Media/UnicodeRange.cs b/src/Avalonia.Base/Media/UnicodeRange.cs index 4cab7b4a14..59325afef7 100644 --- a/src/Avalonia.Base/Media/UnicodeRange.cs +++ b/src/Avalonia.Base/Media/UnicodeRange.cs @@ -104,7 +104,7 @@ namespace Avalonia.Media public readonly record struct UnicodeRangeSegment { - private static Regex s_regex = new Regex(@"^(?:[uU]\+)?(?:([0-9a-fA-F](?:[0-9a-fA-F?]{1,5})?))$", RegexOptions.Compiled); + private static readonly Regex s_regex = new Regex(@"^(?:[uU]\+)?(?:([0-9a-fA-F](?:[0-9a-fA-F?]{1,5})?))$", RegexOptions.Compiled); public UnicodeRangeSegment(int start, int end) { diff --git a/src/Avalonia.Base/PropertyStore/EffectiveValue`1.cs b/src/Avalonia.Base/PropertyStore/EffectiveValue`1.cs index a69d7b7094..832a56ad13 100644 --- a/src/Avalonia.Base/PropertyStore/EffectiveValue`1.cs +++ b/src/Avalonia.Base/PropertyStore/EffectiveValue`1.cs @@ -17,7 +17,7 @@ namespace Avalonia.PropertyStore { private readonly StyledPropertyMetadata _metadata; private T? _baseValue; - private UncommonFields? _uncommon; + private readonly UncommonFields? _uncommon; public EffectiveValue( AvaloniaObject owner, diff --git a/src/Avalonia.Base/Reactive/Operators/Sink.cs b/src/Avalonia.Base/Reactive/Operators/Sink.cs index 0fef350acc..7acb5833d6 100644 --- a/src/Avalonia.Base/Reactive/Operators/Sink.cs +++ b/src/Avalonia.Base/Reactive/Operators/Sink.cs @@ -8,7 +8,7 @@ namespace Avalonia.Reactive.Operators; internal abstract class Sink : IDisposable { private IDisposable? _upstream; - private volatile IObserver _observer; + private readonly IObserver _observer; protected Sink(IObserver observer) { diff --git a/src/Avalonia.Base/Rendering/Composition/Animations/ImplicitAnimationCollection.cs b/src/Avalonia.Base/Rendering/Composition/Animations/ImplicitAnimationCollection.cs index ca8566f804..7082781376 100644 --- a/src/Avalonia.Base/Rendering/Composition/Animations/ImplicitAnimationCollection.cs +++ b/src/Avalonia.Base/Rendering/Composition/Animations/ImplicitAnimationCollection.cs @@ -19,8 +19,8 @@ namespace Avalonia.Rendering.Composition.Animations /// public class ImplicitAnimationCollection : CompositionObject, IDictionary { - private Dictionary _inner = new Dictionary(); - private IDictionary _innerface; + private readonly Dictionary _inner = new Dictionary(); + private readonly IDictionary _innerface; internal ImplicitAnimationCollection(Compositor compositor) : base(compositor, null) { _innerface = _inner; diff --git a/src/Avalonia.Base/Rendering/Composition/Compositor.cs b/src/Avalonia.Base/Rendering/Composition/Compositor.cs index e4b1fc3224..bf48f18db4 100644 --- a/src/Avalonia.Base/Rendering/Composition/Compositor.cs +++ b/src/Avalonia.Base/Rendering/Composition/Compositor.cs @@ -20,20 +20,20 @@ namespace Avalonia.Rendering.Composition { internal IRenderLoop Loop { get; } internal bool UseUiThreadForSynchronousCommits { get; } - private ServerCompositor _server; + private readonly ServerCompositor _server; private CompositionBatch? _nextCommit; - private BatchStreamObjectPool _batchObjectPool; - private BatchStreamMemoryPool _batchMemoryPool; - private Queue _objectSerializationQueue = new(); - private HashSet _objectSerializationHashSet = new(); + private readonly BatchStreamObjectPool _batchObjectPool; + private readonly BatchStreamMemoryPool _batchMemoryPool; + private readonly Queue _objectSerializationQueue = new(); + private readonly HashSet _objectSerializationHashSet = new(); private Queue _invokeBeforeCommitWrite = new(), _invokeBeforeCommitRead = new(); - private HashSet _disposeOnNextBatch = new(); + private readonly HashSet _disposeOnNextBatch = new(); internal ServerCompositor Server => _server; private CompositionBatch? _pendingBatch; private readonly object _pendingBatchLock = new(); - private List _pendingServerCompositorJobs = new(); + private readonly List _pendingServerCompositorJobs = new(); private DiagnosticTextRenderer? _diagnosticTextRenderer; - private Action _triggerCommitRequested; + private readonly Action _triggerCommitRequested; internal IEasing DefaultEasing { get; } diff --git a/src/Avalonia.Base/Rendering/Composition/Drawing/CompositionRenderDataSceneBrushContent.cs b/src/Avalonia.Base/Rendering/Composition/Drawing/CompositionRenderDataSceneBrushContent.cs index bdeba1ab48..22a871a98b 100644 --- a/src/Avalonia.Base/Rendering/Composition/Drawing/CompositionRenderDataSceneBrushContent.cs +++ b/src/Avalonia.Base/Rendering/Composition/Drawing/CompositionRenderDataSceneBrushContent.cs @@ -7,7 +7,7 @@ namespace Avalonia.Rendering.Composition.Drawing; internal class CompositionRenderDataSceneBrushContent : ISceneBrushContent { public CompositionRenderData RenderData { get; } - private Rect? _rect; + private readonly Rect? _rect; public CompositionRenderDataSceneBrushContent(ITileBrush brush, CompositionRenderData renderData, Rect? rect, bool useScalableRasterization) diff --git a/src/Avalonia.Base/Rendering/Composition/Expressions/ExpressionTrackedValues.cs b/src/Avalonia.Base/Rendering/Composition/Expressions/ExpressionTrackedValues.cs index 727a555ea9..095bf31585 100644 --- a/src/Avalonia.Base/Rendering/Composition/Expressions/ExpressionTrackedValues.cs +++ b/src/Avalonia.Base/Rendering/Composition/Expressions/ExpressionTrackedValues.cs @@ -6,8 +6,8 @@ namespace Avalonia.Rendering.Composition.Expressions; internal class ExpressionTrackedObjects : IEnumerable { - private List _list = new(); - private HashSet _hashSet = new(); + private readonly List _list = new(); + private readonly HashSet _hashSet = new(); public void Add(IExpressionObject obj, string member) { @@ -35,7 +35,7 @@ internal class ExpressionTrackedObjects : IEnumerable public struct Pool { - private Stack _stack = new(); + private readonly Stack _stack = new(); public Pool() { diff --git a/src/Avalonia.Base/Rendering/Composition/Server/DrawingContextProxy.cs b/src/Avalonia.Base/Rendering/Composition/Server/DrawingContextProxy.cs index 56a572b343..59ee8f6556 100644 --- a/src/Avalonia.Base/Rendering/Composition/Server/DrawingContextProxy.cs +++ b/src/Avalonia.Base/Rendering/Composition/Server/DrawingContextProxy.cs @@ -20,7 +20,7 @@ namespace Avalonia.Rendering.Composition.Server; internal class CompositorDrawingContextProxy : IDrawingContextImpl, IDrawingContextWithAcrylicLikeSupport, IDrawingContextImplWithEffects { - private IDrawingContextImpl _impl; + private readonly IDrawingContextImpl _impl; public CompositorDrawingContextProxy(IDrawingContextImpl impl) { diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.cs index 9dc5c27d79..d9c0e78169 100644 --- a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.cs +++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionTarget.cs @@ -26,13 +26,13 @@ namespace Avalonia.Rendering.Composition.Server private FrameTimeGraph? _renderTimeGraph; private FrameTimeGraph? _layoutTimeGraph; private Rect _dirtyRect; - private Random _random = new(); + private readonly Random _random = new(); private Size _layerSize; private IDrawingContextLayerImpl? _layer; private bool _redrawRequested; private bool _disposed; - private HashSet _attachedVisuals = new(); - private Queue _adornerUpdateQueue = new(); + private readonly HashSet _attachedVisuals = new(); + private readonly Queue _adornerUpdateQueue = new(); public long Id { get; } public ulong Revision { get; private set; } diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositor.RenderResources.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositor.RenderResources.cs index bc8f03f365..85bed78db8 100644 --- a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositor.RenderResources.cs +++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositor.RenderResources.cs @@ -4,8 +4,8 @@ namespace Avalonia.Rendering.Composition.Server; partial class ServerCompositor { - private Queue _renderResourcesInvalidationQueue = new(); - private HashSet _renderResourcesInvalidationSet = new(); + private readonly Queue _renderResourcesInvalidationQueue = new(); + private readonly HashSet _renderResourcesInvalidationSet = new(); public void ApplyEnqueuedRenderResourceChanges() { diff --git a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositor.cs b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositor.cs index cc6683e7fa..f1bc865475 100644 --- a/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositor.cs +++ b/src/Avalonia.Base/Rendering/Composition/Server/ServerCompositor.cs @@ -26,12 +26,12 @@ namespace Avalonia.Rendering.Composition.Server public long LastBatchId { get; private set; } public Stopwatch Clock { get; } = Stopwatch.StartNew(); public TimeSpan ServerNow { get; private set; } - private List _activeTargets = new(); - private HashSet _clockItems = new(); - private List _clockItemsToUpdate = new(); + private readonly List _activeTargets = new(); + private readonly HashSet _clockItems = new(); + private readonly List _clockItemsToUpdate = new(); internal BatchStreamObjectPool BatchObjectPool; internal BatchStreamMemoryPool BatchMemoryPool; - private object _lock = new object(); + private readonly object _lock = new object(); private Thread? _safeThread; private bool _uiThreadIsInsideRender; public PlatformRenderInterfaceContextManager RenderInterface { get; } @@ -57,8 +57,8 @@ namespace Avalonia.Rendering.Composition.Server internal void UpdateServerTime() => ServerNow = Clock.Elapsed; - List _reusableToNotifyProcessedList = new(); - List _reusableToNotifyRenderedList = new(); + readonly List _reusableToNotifyProcessedList = new(); + readonly List _reusableToNotifyRenderedList = new(); void ApplyPendingBatches() { while (true) diff --git a/src/Avalonia.Base/Rendering/Composition/Transport/Batch.cs b/src/Avalonia.Base/Rendering/Composition/Transport/Batch.cs index 480ed39363..8d90fe8ee6 100644 --- a/src/Avalonia.Base/Rendering/Composition/Transport/Batch.cs +++ b/src/Avalonia.Base/Rendering/Composition/Transport/Batch.cs @@ -12,7 +12,7 @@ namespace Avalonia.Rendering.Composition.Transport public class CompositionBatch { private static long _nextSequenceId = 1; - private static ConcurrentBag _pool = new(); + private static readonly ConcurrentBag _pool = new(); private readonly TaskCompletionSource _acceptedTcs = new(); private readonly TaskCompletionSource _renderedTcs = new(); diff --git a/src/Avalonia.Base/Rendering/Composition/Transport/BatchStreamArrayPool.cs b/src/Avalonia.Base/Rendering/Composition/Transport/BatchStreamArrayPool.cs index 4cb5ec25e0..6aabb4d168 100644 --- a/src/Avalonia.Base/Rendering/Composition/Transport/BatchStreamArrayPool.cs +++ b/src/Avalonia.Base/Rendering/Composition/Transport/BatchStreamArrayPool.cs @@ -17,7 +17,7 @@ internal abstract class BatchStreamPoolBase : IDisposable int _usage; readonly int[] _usageStatistics = new int[10]; int _usageStatisticsSlot; - bool _reclaimImmediately; + readonly bool _reclaimImmediately; public int CurrentUsage => _usage; public int CurrentPool => _pool.Count; diff --git a/src/Avalonia.Base/Rendering/Composition/VisualCollection.cs b/src/Avalonia.Base/Rendering/Composition/VisualCollection.cs index ebc84a2de7..5663b86af3 100644 --- a/src/Avalonia.Base/Rendering/Composition/VisualCollection.cs +++ b/src/Avalonia.Base/Rendering/Composition/VisualCollection.cs @@ -8,7 +8,7 @@ namespace Avalonia.Rendering.Composition /// public partial class CompositionVisualCollection : CompositionObject { - private CompositionVisual _owner; + private readonly CompositionVisual _owner; internal CompositionVisualCollection(CompositionVisual parent, ServerCompositionVisualCollection server) : base(parent.Compositor, server) { _owner = parent; diff --git a/src/Avalonia.Base/Rendering/RenderLoop.cs b/src/Avalonia.Base/Rendering/RenderLoop.cs index 80410ba181..03fbf809e8 100644 --- a/src/Avalonia.Base/Rendering/RenderLoop.cs +++ b/src/Avalonia.Base/Rendering/RenderLoop.cs @@ -16,11 +16,11 @@ namespace Avalonia.Rendering /// internal class RenderLoop : IRenderLoop { - private List _items = new List(); - private List _itemsCopy = new List(); + private readonly List _items = new List(); + private readonly List _itemsCopy = new List(); private IRenderTimer? _timer; private int _inTick; - private int _inUpdate; + private readonly int _inUpdate; public static IRenderLoop LocatorAutoInstance { diff --git a/src/Avalonia.Base/Rendering/SwapchainBase.cs b/src/Avalonia.Base/Rendering/SwapchainBase.cs index 5d0bba2341..d6fa65cb93 100644 --- a/src/Avalonia.Base/Rendering/SwapchainBase.cs +++ b/src/Avalonia.Base/Rendering/SwapchainBase.cs @@ -13,7 +13,7 @@ abstract class SwapchainBase : IAsyncDisposable where TImage : class, IS { protected ICompositionGpuInterop Interop { get; } protected CompositionDrawingSurface Target { get; } - private List _pendingImages = new(); + private readonly List _pendingImages = new(); public SwapchainBase(ICompositionGpuInterop interop, CompositionDrawingSurface target) { diff --git a/src/Avalonia.Base/Threading/Dispatcher.MainLoop.cs b/src/Avalonia.Base/Threading/Dispatcher.MainLoop.cs index 4b60ee7479..cc7cf09baa 100644 --- a/src/Avalonia.Base/Threading/Dispatcher.MainLoop.cs +++ b/src/Avalonia.Base/Threading/Dispatcher.MainLoop.cs @@ -13,7 +13,7 @@ public partial class Dispatcher private bool _hasShutdownFinished; private bool _startingShutdown; - private Stack _frames = new(); + private readonly Stack _frames = new(); /// diff --git a/src/Avalonia.Base/Threading/Dispatcher.Queue.cs b/src/Avalonia.Base/Threading/Dispatcher.Queue.cs index 75ce313bcb..f279353b36 100644 --- a/src/Avalonia.Base/Threading/Dispatcher.Queue.cs +++ b/src/Avalonia.Base/Threading/Dispatcher.Queue.cs @@ -11,7 +11,7 @@ public partial class Dispatcher private bool _explicitBackgroundProcessingRequested; private const int MaximumInputStarvationTimeInFallbackMode = 50; private const int MaximumInputStarvationTimeInExplicitProcessingExplicitMode = 50; - private int _maximumInputStarvationTime; + private readonly int _maximumInputStarvationTime; void RequestBackgroundProcessing() { diff --git a/src/Avalonia.Base/Threading/Dispatcher.Timers.cs b/src/Avalonia.Base/Threading/Dispatcher.Timers.cs index 51408daad1..ce16820286 100644 --- a/src/Avalonia.Base/Threading/Dispatcher.Timers.cs +++ b/src/Avalonia.Base/Threading/Dispatcher.Timers.cs @@ -6,7 +6,7 @@ namespace Avalonia.Threading; public partial class Dispatcher { - private List _timers = new(); + private readonly List _timers = new(); private long _timersVersion; private bool _dueTimeFound; private long _dueTimeInMs; diff --git a/src/Avalonia.Base/Threading/DispatcherFrame.cs b/src/Avalonia.Base/Threading/DispatcherFrame.cs index 1a80740420..f4a91ab800 100644 --- a/src/Avalonia.Base/Threading/DispatcherFrame.cs +++ b/src/Avalonia.Base/Threading/DispatcherFrame.cs @@ -8,7 +8,7 @@ namespace Avalonia.Threading; /// public class DispatcherFrame { - private bool _exitWhenRequested; + private readonly bool _exitWhenRequested; private bool _continue; private bool _isRunning; private CancellationTokenSource? _cancellationTokenSource; diff --git a/src/Avalonia.Base/Threading/DispatcherOperation.cs b/src/Avalonia.Base/Threading/DispatcherOperation.cs index 0008d771c6..38204dfef8 100644 --- a/src/Avalonia.Base/Threading/DispatcherOperation.cs +++ b/src/Avalonia.Base/Threading/DispatcherOperation.cs @@ -224,8 +224,8 @@ public class DispatcherOperation private void OnCompletedOrAborted(object? sender, EventArgs e) => Exit(); - private DispatcherOperation _operation; - private Timer? _waitTimer; + private readonly DispatcherOperation _operation; + private readonly Timer? _waitTimer; } public Task GetTask() => GetTaskCore(); diff --git a/src/Avalonia.Base/Threading/DispatcherTimer.cs b/src/Avalonia.Base/Threading/DispatcherTimer.cs index fbdeed4edc..fd008186fa 100644 --- a/src/Avalonia.Base/Threading/DispatcherTimer.cs +++ b/src/Avalonia.Base/Threading/DispatcherTimer.cs @@ -334,15 +334,15 @@ public partial class DispatcherTimer } // This is the object we use to synchronize access. - private object _instanceLock = new object(); + private readonly object _instanceLock = new object(); // Note: We cannot BE a dispatcher-affinity object because we can be // created by a worker thread. We are still associated with a // dispatcher (where we post the item) but we can be accessed // by any thread. - private Dispatcher _dispatcher; + private readonly Dispatcher _dispatcher; - private DispatcherPriority _priority; // NOTE: should be Priority + private readonly DispatcherPriority _priority; // NOTE: should be Priority private TimeSpan _interval; private DispatcherOperation? _operation; private bool _isEnabled; diff --git a/src/Avalonia.Base/Threading/IDispatcherImpl.cs b/src/Avalonia.Base/Threading/IDispatcherImpl.cs index ccbe3baf9a..e1ae8f34e2 100644 --- a/src/Avalonia.Base/Threading/IDispatcherImpl.cs +++ b/src/Avalonia.Base/Threading/IDispatcherImpl.cs @@ -46,7 +46,7 @@ internal class LegacyDispatcherImpl : IDispatcherImpl { private readonly IPlatformThreadingInterface _platformThreading; private IDisposable? _timer; - private Stopwatch _clock = Stopwatch.StartNew(); + private readonly Stopwatch _clock = Stopwatch.StartNew(); public LegacyDispatcherImpl(IPlatformThreadingInterface platformThreading) { diff --git a/src/Avalonia.Base/Threading/ThreadSafeObjectPool.cs b/src/Avalonia.Base/Threading/ThreadSafeObjectPool.cs index 30b7738409..322ec8f5a0 100644 --- a/src/Avalonia.Base/Threading/ThreadSafeObjectPool.cs +++ b/src/Avalonia.Base/Threading/ThreadSafeObjectPool.cs @@ -4,7 +4,7 @@ namespace Avalonia.Threading { internal class ThreadSafeObjectPool where T : class, new() { - private Stack _stack = new Stack(); + private readonly Stack _stack = new Stack(); public static ThreadSafeObjectPool Default { get; } = new ThreadSafeObjectPool(); public T Get() diff --git a/src/Avalonia.Base/Utilities/PooledInlineList.cs b/src/Avalonia.Base/Utilities/PooledInlineList.cs index f7801525fe..15ef9f32d4 100644 --- a/src/Avalonia.Base/Utilities/PooledInlineList.cs +++ b/src/Avalonia.Base/Utilities/PooledInlineList.cs @@ -150,9 +150,9 @@ internal struct PooledInlineList : IDisposable, IEnumerable where T : clas public struct Enumerator : IEnumerator { - private T? _singleItem; + private readonly T? _singleItem; private int _index; - private SimplePooledList? _list; + private readonly SimplePooledList? _list; public Enumerator(object? item) { diff --git a/src/Avalonia.Base/Utilities/Ref.cs b/src/Avalonia.Base/Utilities/Ref.cs index 2d67bfbea6..eff26c602d 100644 --- a/src/Avalonia.Base/Utilities/Ref.cs +++ b/src/Avalonia.Base/Utilities/Ref.cs @@ -105,8 +105,8 @@ namespace Avalonia.Utilities class Ref : CriticalFinalizerObject, IRef where T : class { private T? _item; - private RefCounter _counter; - private object _lock = new object(); + private readonly RefCounter _counter; + private readonly object _lock = new object(); public Ref(T item, RefCounter counter) { diff --git a/src/Avalonia.Base/Utilities/SingleOrDictionary.cs b/src/Avalonia.Base/Utilities/SingleOrDictionary.cs index 5edddc1a6d..068c73ba33 100644 --- a/src/Avalonia.Base/Utilities/SingleOrDictionary.cs +++ b/src/Avalonia.Base/Utilities/SingleOrDictionary.cs @@ -99,7 +99,7 @@ namespace Avalonia.Utilities private class SingleEnumerator : IEnumerator { - private T value; + private readonly T value; private int index = -1; public SingleEnumerator(T value) diff --git a/src/Avalonia.Base/Utilities/SmallDictionary.cs b/src/Avalonia.Base/Utilities/SmallDictionary.cs index 1e63d554b4..a78c7988f7 100644 --- a/src/Avalonia.Base/Utilities/SmallDictionary.cs +++ b/src/Avalonia.Base/Utilities/SmallDictionary.cs @@ -294,7 +294,7 @@ internal struct InlineDictionary : IEnumerable _first; private int _index; - private Type _type; + private readonly Type _type; enum Type { Empty, Single, Array, Dictionary diff --git a/src/Avalonia.Base/Utilities/SpringSolver.cs b/src/Avalonia.Base/Utilities/SpringSolver.cs index ead73e9b1b..b77b97fce9 100644 --- a/src/Avalonia.Base/Utilities/SpringSolver.cs +++ b/src/Avalonia.Base/Utilities/SpringSolver.cs @@ -31,11 +31,11 @@ namespace Avalonia.Utilities; internal struct SpringSolver { - private double m_w0; - private double m_zeta; - private double m_wd; - private double m_A; - private double m_B; + private readonly double m_w0; + private readonly double m_zeta; + private readonly double m_wd; + private readonly double m_A; + private readonly double m_B; /// ///