mirror of
https://github.com/ShareX/ShareX.git
synced 2024-09-29 17:02:05 +13:00
Reinstate Dispose before file delete, remove useless image clone
This commit is contained in:
parent
9a20831dfa
commit
12d5010769
2 changed files with 80 additions and 81 deletions
|
@ -423,7 +423,7 @@ private static void task_TaskCompleted(WorkerTask task)
|
|||
};
|
||||
if (info.DataType == EDataType.Image)
|
||||
{
|
||||
toastConfig.Image = task.GetImage();
|
||||
toastConfig.Image = task.Image;
|
||||
}
|
||||
NotificationForm.Show((int)(info.TaskSettings.AdvancedSettings.ToastWindowDuration * 1000),
|
||||
(int)(info.TaskSettings.AdvancedSettings.ToastWindowFadeDuration * 1000),
|
||||
|
|
|
@ -55,8 +55,8 @@ public class WorkerTask : IDisposable
|
|||
public bool StopRequested { get; private set; }
|
||||
public bool RequestSettingUpdate { get; private set; }
|
||||
public Stream Data { get; private set; }
|
||||
public Image Image { get; private set; }
|
||||
|
||||
private Image tempImage;
|
||||
private string tempText;
|
||||
private ThreadWorker threadWorker;
|
||||
private GenericUploader uploader;
|
||||
|
@ -112,7 +112,7 @@ public static WorkerTask CreateFileUploaderTask(string filePath, TaskSettings ta
|
|||
if (task.Info.TaskSettings.AdvancedSettings.ProcessImagesDuringFileUpload && task.Info.DataType == EDataType.Image)
|
||||
{
|
||||
task.Info.Job = TaskJob.Job;
|
||||
task.tempImage = ImageHelpers.LoadImage(task.Info.FilePath);
|
||||
task.Image = ImageHelpers.LoadImage(task.Info.FilePath);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -142,7 +142,7 @@ public static WorkerTask CreateImageUploaderTask(ImageInfo imageInfo, TaskSettin
|
|||
task.Info.FileName = TaskHelpers.GetFilename(taskSettings, "bmp", imageInfo);
|
||||
}
|
||||
|
||||
task.tempImage = imageInfo.Image;
|
||||
task.Image = imageInfo.Image;
|
||||
return task;
|
||||
}
|
||||
|
||||
|
@ -304,7 +304,14 @@ private void ThreadDoWork()
|
|||
}
|
||||
finally
|
||||
{
|
||||
if (Info.Job == TaskJob.Job && Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.DeleteFile) && !string.IsNullOrEmpty(Info.FilePath) && File.Exists(Info.FilePath))
|
||||
bool hasFile = !string.IsNullOrEmpty(Info.FilePath) && File.Exists(Info.FilePath);
|
||||
|
||||
if (hasFile || Info.DataType != EDataType.Image)
|
||||
{
|
||||
Dispose();
|
||||
}
|
||||
|
||||
if (Info.Job == TaskJob.Job && Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.DeleteFile) && hasFile)
|
||||
{
|
||||
File.Delete(Info.FilePath);
|
||||
}
|
||||
|
@ -554,16 +561,16 @@ private bool DoThreadJob()
|
|||
|
||||
private bool DoAfterCaptureJobs()
|
||||
{
|
||||
if (tempImage == null)
|
||||
if (Image == null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.AddImageEffects))
|
||||
{
|
||||
tempImage = TaskHelpers.AddImageEffects(tempImage, Info.TaskSettings.ImageSettingsReference);
|
||||
Image = TaskHelpers.AddImageEffects(Image, Info.TaskSettings.ImageSettingsReference);
|
||||
|
||||
if (tempImage == null)
|
||||
if (Image == null)
|
||||
{
|
||||
DebugHelper.WriteLine("Error: Applying image effects resulted empty image.");
|
||||
return false;
|
||||
|
@ -572,9 +579,9 @@ private bool DoAfterCaptureJobs()
|
|||
|
||||
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.AnnotateImage))
|
||||
{
|
||||
tempImage = TaskHelpers.AnnotateImage(tempImage, null, Info.TaskSettings, true);
|
||||
Image = TaskHelpers.AnnotateImage(Image, null, Info.TaskSettings, true);
|
||||
|
||||
if (tempImage == null)
|
||||
if (Image == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -582,95 +589,92 @@ private bool DoAfterCaptureJobs()
|
|||
|
||||
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.CopyImageToClipboard))
|
||||
{
|
||||
ClipboardHelpers.CopyImage(tempImage);
|
||||
ClipboardHelpers.CopyImage(Image);
|
||||
DebugHelper.WriteLine("Image copied to clipboard.");
|
||||
}
|
||||
|
||||
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SendImageToPrinter))
|
||||
{
|
||||
TaskHelpers.PrintImage(tempImage);
|
||||
TaskHelpers.PrintImage(Image);
|
||||
}
|
||||
|
||||
if (Info.TaskSettings.AfterCaptureJob.HasFlagAny(AfterCaptureTasks.SaveImageToFile, AfterCaptureTasks.SaveImageToFileWithDialog, AfterCaptureTasks.DoOCR,
|
||||
AfterCaptureTasks.UploadImageToHost))
|
||||
{
|
||||
using (var image = (Image)tempImage.Clone())
|
||||
ImageData imageData = TaskHelpers.PrepareImage(Image, Info.TaskSettings);
|
||||
Data = imageData.ImageStream;
|
||||
Info.FileName = Path.ChangeExtension(Info.FileName, imageData.ImageFormat.GetDescription());
|
||||
|
||||
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SaveImageToFile))
|
||||
{
|
||||
ImageData imageData = TaskHelpers.PrepareImage(image, Info.TaskSettings);
|
||||
Data = imageData.ImageStream;
|
||||
Info.FileName = Path.ChangeExtension(Info.FileName, imageData.ImageFormat.GetDescription());
|
||||
string filePath = TaskHelpers.HandleExistsFile(Info.TaskSettings.CaptureFolder, Info.FileName, Info.TaskSettings);
|
||||
|
||||
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SaveImageToFile))
|
||||
if (!string.IsNullOrEmpty(filePath))
|
||||
{
|
||||
string filePath = TaskHelpers.HandleExistsFile(Info.TaskSettings.CaptureFolder, Info.FileName, Info.TaskSettings);
|
||||
|
||||
if (!string.IsNullOrEmpty(filePath))
|
||||
{
|
||||
Info.FilePath = filePath;
|
||||
imageData.Write(Info.FilePath);
|
||||
DebugHelper.WriteLine("Image saved to file: " + Info.FilePath);
|
||||
}
|
||||
Info.FilePath = filePath;
|
||||
imageData.Write(Info.FilePath);
|
||||
DebugHelper.WriteLine("Image saved to file: " + Info.FilePath);
|
||||
}
|
||||
}
|
||||
|
||||
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SaveImageToFileWithDialog))
|
||||
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SaveImageToFileWithDialog))
|
||||
{
|
||||
using (SaveFileDialog sfd = new SaveFileDialog())
|
||||
{
|
||||
using (SaveFileDialog sfd = new SaveFileDialog())
|
||||
{
|
||||
bool imageSaved;
|
||||
bool imageSaved;
|
||||
|
||||
do
|
||||
do
|
||||
{
|
||||
if (string.IsNullOrEmpty(lastSaveAsFolder) || !Directory.Exists(lastSaveAsFolder))
|
||||
{
|
||||
if (string.IsNullOrEmpty(lastSaveAsFolder) || !Directory.Exists(lastSaveAsFolder))
|
||||
{
|
||||
lastSaveAsFolder = Info.TaskSettings.CaptureFolder;
|
||||
}
|
||||
lastSaveAsFolder = Info.TaskSettings.CaptureFolder;
|
||||
}
|
||||
|
||||
sfd.InitialDirectory = lastSaveAsFolder;
|
||||
sfd.FileName = Info.FileName;
|
||||
sfd.DefaultExt = Path.GetExtension(Info.FileName).Substring(1);
|
||||
sfd.Filter = string.Format("*{0}|*{0}|All files (*.*)|*.*", Path.GetExtension(Info.FileName));
|
||||
sfd.Title = Resources.UploadTask_DoAfterCaptureJobs_Choose_a_folder_to_save + " " + Path.GetFileName(Info.FileName);
|
||||
sfd.InitialDirectory = lastSaveAsFolder;
|
||||
sfd.FileName = Info.FileName;
|
||||
sfd.DefaultExt = Path.GetExtension(Info.FileName).Substring(1);
|
||||
sfd.Filter = string.Format("*{0}|*{0}|All files (*.*)|*.*", Path.GetExtension(Info.FileName));
|
||||
sfd.Title = Resources.UploadTask_DoAfterCaptureJobs_Choose_a_folder_to_save + " " + Path.GetFileName(Info.FileName);
|
||||
|
||||
if (sfd.ShowDialog() == DialogResult.OK && !string.IsNullOrEmpty(sfd.FileName))
|
||||
{
|
||||
Info.FilePath = sfd.FileName;
|
||||
lastSaveAsFolder = Path.GetDirectoryName(Info.FilePath);
|
||||
imageSaved = imageData.Write(Info.FilePath);
|
||||
if (sfd.ShowDialog() == DialogResult.OK && !string.IsNullOrEmpty(sfd.FileName))
|
||||
{
|
||||
Info.FilePath = sfd.FileName;
|
||||
lastSaveAsFolder = Path.GetDirectoryName(Info.FilePath);
|
||||
imageSaved = imageData.Write(Info.FilePath);
|
||||
|
||||
if (imageSaved)
|
||||
{
|
||||
DebugHelper.WriteLine("Image saved to file with dialog: " + Info.FilePath);
|
||||
}
|
||||
}
|
||||
else
|
||||
if (imageSaved)
|
||||
{
|
||||
break;
|
||||
DebugHelper.WriteLine("Image saved to file with dialog: " + Info.FilePath);
|
||||
}
|
||||
} while (!imageSaved);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
} while (!imageSaved);
|
||||
}
|
||||
}
|
||||
|
||||
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SaveThumbnailImageToFile))
|
||||
{
|
||||
string thumbnailFilename, thumbnailFolder;
|
||||
|
||||
if (!string.IsNullOrEmpty(Info.FilePath))
|
||||
{
|
||||
thumbnailFilename = Path.GetFileName(Info.FilePath);
|
||||
thumbnailFolder = Path.GetDirectoryName(Info.FilePath);
|
||||
}
|
||||
else
|
||||
{
|
||||
thumbnailFilename = Info.FileName;
|
||||
thumbnailFolder = Info.TaskSettings.CaptureFolder;
|
||||
}
|
||||
|
||||
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SaveThumbnailImageToFile))
|
||||
Info.ThumbnailFilePath = TaskHelpers.CreateThumbnail(Image, thumbnailFolder, thumbnailFilename, Info.TaskSettings);
|
||||
|
||||
if (!string.IsNullOrEmpty(Info.ThumbnailFilePath))
|
||||
{
|
||||
string thumbnailFilename, thumbnailFolder;
|
||||
|
||||
if (!string.IsNullOrEmpty(Info.FilePath))
|
||||
{
|
||||
thumbnailFilename = Path.GetFileName(Info.FilePath);
|
||||
thumbnailFolder = Path.GetDirectoryName(Info.FilePath);
|
||||
}
|
||||
else
|
||||
{
|
||||
thumbnailFilename = Info.FileName;
|
||||
thumbnailFolder = Info.TaskSettings.CaptureFolder;
|
||||
}
|
||||
|
||||
Info.ThumbnailFilePath = TaskHelpers.CreateThumbnail(tempImage, thumbnailFolder, thumbnailFilename, Info.TaskSettings);
|
||||
|
||||
if (!string.IsNullOrEmpty(Info.ThumbnailFilePath))
|
||||
{
|
||||
DebugHelper.WriteLine("Thumbnail saved to file: " + Info.ThumbnailFilePath);
|
||||
}
|
||||
DebugHelper.WriteLine("Thumbnail saved to file: " + Info.ThumbnailFilePath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -954,11 +958,6 @@ public UploadResult ShareURL(string url)
|
|||
return null;
|
||||
}
|
||||
|
||||
public Image GetImage()
|
||||
{
|
||||
return tempImage;
|
||||
}
|
||||
|
||||
private UploadResult GetInvalidConfigResult(IUploaderService uploaderService)
|
||||
{
|
||||
UploadResult ur = new UploadResult();
|
||||
|
@ -1126,10 +1125,10 @@ public void Dispose()
|
|||
Data = null;
|
||||
}
|
||||
|
||||
if (tempImage != null)
|
||||
if (Image != null)
|
||||
{
|
||||
tempImage.Dispose();
|
||||
tempImage = null;
|
||||
Image.Dispose();
|
||||
Image = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue