From 23e9843d07fb318628e6ede96725f46d354a851f Mon Sep 17 00:00:00 2001 From: RKrom Date: Tue, 31 Jan 2012 17:03:24 +0000 Subject: [PATCH] Fixed NullReferenzException git-svn-id: http://svn.code.sf.net/p/greenshot/code/trunk@1615 7dccd23d-a4a3-4e1f-8c07-b4c1b4018ab4 --- Greenshot/Helpers/CaptureHelper.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Greenshot/Helpers/CaptureHelper.cs b/Greenshot/Helpers/CaptureHelper.cs index 768e7329c..1d09b2b65 100644 --- a/Greenshot/Helpers/CaptureHelper.cs +++ b/Greenshot/Helpers/CaptureHelper.cs @@ -145,7 +145,7 @@ namespace Greenshot.Helpers { capture.CaptureDetails.CaptureMode = captureMode; // Get the windows details in a seperate thread - PrepareForCaptureWithFeedback(); + Thread getWindowDetailsThread = PrepareForCaptureWithFeedback(); // Add destinations if no-one passed a handler if (capture.CaptureDetails.CaptureDestinations == null || capture.CaptureDetails.CaptureDestinations.Count == 0) { @@ -297,7 +297,7 @@ namespace Greenshot.Helpers { LOG.Warn("Unknown capture mode: " + captureMode); break; } - + getWindowDetailsThread.Join(); if (capture != null) { LOG.Debug("Disposing capture"); capture.Dispose(); @@ -307,10 +307,10 @@ namespace Greenshot.Helpers { /// /// Pre-Initialization for CaptureWithFeedback, this will get all the windows before we change anything /// - private void PrepareForCaptureWithFeedback() { + private Thread PrepareForCaptureWithFeedback() { windows = new List(); - Thread getWindowDetailsThread= new Thread (delegate() { + Thread getWindowDetailsThread = new Thread (delegate() { // Start Enumeration of "active" windows foreach (WindowDetails window in WindowDetails.GetAllWindows()) { // Window should be visible and not ourselves @@ -340,6 +340,9 @@ namespace Greenshot.Helpers { // Get window rectangle as capture Element CaptureElement windowCaptureElement = new CaptureElement(windowRectangle); + if (capture == null) { + break; + } capture.Elements.Add(windowCaptureElement); if (!window.HasParent) { @@ -359,6 +362,7 @@ namespace Greenshot.Helpers { getWindowDetailsThread.Name = "Retrieve window details"; getWindowDetailsThread.IsBackground = true; getWindowDetailsThread.Start(); + return getWindowDetailsThread; } private void AddCaptureElementsForWindow(ICaptureElement parentElement, WindowDetails parentWindow, int level) {