using System; namespace ScreenConnect; public class BitmapSection : BitmapData { private bool ownsRootObject; public object RootObject { get; } public int X { get; } public int Y { get; } public BitmapSection(PixelModel pixelModel, int width, int height, int stride, IntPtr scan0, object rootObject = null, int x = 0, int y = 0, bool ownsRootObject = false) : base(pixelModel, width, height, stride, scan0) { X = x; Y = y; RootObject = rootObject; this.ownsRootObject = ownsRootObject; } protected override void Dispose(bool disposing) { if (disposing && ownsRootObject) { RootObject?.As()?.Dispose(); } } }