// Clean up resources when live preview is disabled. void CleanUp() { Debug.WriteLine(DateTime.Now.ToString("HH:mm:ss:ffff") + " LivePreviewManager.CleanUp()"); live_preview_enabled = false; if (effect != null) { if (effect.EffectData != null) { effect.EffectData.PropertyChanged -= EffectData_PropertyChanged; } effect = null !; } live_preview_surface?.Dispose(); live_preview_surface = null !; if (renderer != null) { renderer.Dispose(); renderer = null !; } if (history_item != null) { history_item.Dispose(); history_item = null !; } // Hide progress dialog and clean up events. var dialog = PintaCore.Chrome.ProgressDialog; dialog.Hide(); dialog.Canceled -= HandleProgressDialogCancel; PintaCore.Chrome.MainWindowBusy = false; }