protected override void Dispose(bool disposing) { if (disposing) { while (this.documents.Count > 0) { RemoveDocumentWorkspace(this.documents[this.documents.Count - 1]); } if (this.thumbnailManager != null) { this.thumbnailManager.Dispose(); this.thumbnailManager = null; } foreach (DocumentWorkspace dw in this.thumbs.Keys) { RenderArgs ra = this.thumbs[dw]; ra.Dispose(); } this.thumbs.Clear(); this.thumbs = null; } base.Dispose(disposing); }
private void OnThumbnailRendered(object sender, EventArgs <Pair <IThumbnailProvider, Surface> > e) { RenderArgs ra = null; DocumentWorkspace dw = (DocumentWorkspace)e.Data.First; Size desiredSize = new Size(e.Data.Second.Width + 2, e.Data.Second.Height + 2); if (this.thumbs.ContainsKey(dw)) { ra = this.thumbs[dw]; if (ra.Size != desiredSize) { ra.Dispose(); ra = null; this.thumbs.Remove(dw); } } if (ra == null) { Surface surface = new Surface(desiredSize); ra = new RenderArgs(surface); this.thumbs.Add(dw, ra); } ra.Surface.Clear(ColorBgra.Black); ra.Surface.CopySurface(e.Data.Second, new Point(1, 1)); e.Data.Second.Dispose(); OnThumbnailUpdated(dw); }
public void RemoveDocumentWorkspace(DocumentWorkspace removeMe) { removeMe.CompositionUpdated -= Workspace_CompositionUpdated; if (this.selectedDocument == removeMe) { this.selectedDocument = null; } this.documents.Remove(removeMe); this.thumbnailManager.RemoveFromQueue(removeMe); ImageStrip.Item docButton = this.dw2button[removeMe]; this.RemoveItem(docButton); this.dw2button.Remove(removeMe); this.documentButtons.Remove(docButton); if (this.thumbs.ContainsKey(removeMe)) { RenderArgs thumbRA = this.thumbs[removeMe]; Surface surface = thumbRA.Surface; thumbRA.Dispose(); this.thumbs.Remove(removeMe); surface.Dispose(); } OnDocumentListChanged(); }