From 667669ca3ef450ab2da6c91340778718d1913769 Mon Sep 17 00:00:00 2001 From: Robin Date: Tue, 18 Oct 2016 20:18:36 +0200 Subject: [PATCH] Small fixes before removing the Win10 plugins for the RC1 --- .../GreenshotWin10Plugin.csproj | 1 + .../Native/DataTransferManagerHelper.cs | 21 +++++++++++++++++-- GreenshotWin10Plugin/Win10ShareDestination.cs | 17 ++++++++------- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/GreenshotWin10Plugin/GreenshotWin10Plugin.csproj b/GreenshotWin10Plugin/GreenshotWin10Plugin.csproj index 3830b6f20..c2af2069e 100644 --- a/GreenshotWin10Plugin/GreenshotWin10Plugin.csproj +++ b/GreenshotWin10Plugin/GreenshotWin10Plugin.csproj @@ -13,6 +13,7 @@ v4.5 512 + 8.1 true diff --git a/GreenshotWin10Plugin/Native/DataTransferManagerHelper.cs b/GreenshotWin10Plugin/Native/DataTransferManagerHelper.cs index cca7d08c3..fec499b6c 100644 --- a/GreenshotWin10Plugin/Native/DataTransferManagerHelper.cs +++ b/GreenshotWin10Plugin/Native/DataTransferManagerHelper.cs @@ -25,8 +25,13 @@ using Windows.ApplicationModel.DataTransfer; namespace GreenshotWin10Plugin.Native { + /// + /// Wraps the interop for calling the ShareUI + /// public class DataTransferManagerHelper { + private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(DataTransferManagerHelper)); + private const string DataTransferManagerId = "a5caee9b-8708-49d1-8d36-67d25a8da00c"; private readonly IDataTransferManagerInterOp _dataTransferManagerInterOp; private readonly IntPtr _windowHandle; @@ -48,7 +53,11 @@ namespace GreenshotWin10Plugin.Native _windowHandle = handle; var riid = new Guid(DataTransferManagerId); DataTransferManager dataTransferManager; - _dataTransferManagerInterOp.GetForWindow(_windowHandle, riid, out dataTransferManager); + var hresult = _dataTransferManagerInterOp.GetForWindow(_windowHandle, riid, out dataTransferManager); + if (hresult != 0) + { + Log.WarnFormat("HResult for GetForWindow: {0}", hresult); + } DataTransferManager = dataTransferManager; } @@ -57,7 +66,15 @@ namespace GreenshotWin10Plugin.Native /// public void ShowShareUi() { - _dataTransferManagerInterOp.ShowShareUIForWindow(_windowHandle); + var hresult = _dataTransferManagerInterOp.ShowShareUIForWindow(_windowHandle); + if (hresult != 0) + { + Log.WarnFormat("HResult for ShowShareUIForWindow: {0}", hresult); + } + else + { + Log.Debug("ShowShareUIForWindow called"); + } } } diff --git a/GreenshotWin10Plugin/Win10ShareDestination.cs b/GreenshotWin10Plugin/Win10ShareDestination.cs index c96ca7394..780f568cd 100644 --- a/GreenshotWin10Plugin/Win10ShareDestination.cs +++ b/GreenshotWin10Plugin/Win10ShareDestination.cs @@ -73,6 +73,7 @@ namespace GreenshotWin10Plugin // Create capture for export ImageOutput.SaveToStream(surface, imageStream, new SurfaceOutputSettings()); imageStream.Position = 0; + Log.Info("Created RandomAccessStreamReference for the image"); var imageRandomAccessStreamReference = RandomAccessStreamReference.CreateFromStream(imageStream); RandomAccessStreamReference thumbnailRandomAccessStreamReference; RandomAccessStreamReference logoRandomAccessStreamReference; @@ -85,6 +86,7 @@ namespace GreenshotWin10Plugin ImageOutput.SaveToStream(thumbnail, null, thumbnailStream, new SurfaceOutputSettings()); thumbnailStream.Position = 0; thumbnailRandomAccessStreamReference = RandomAccessStreamReference.CreateFromStream(thumbnailStream); + Log.Info("Created RandomAccessStreamReference for the thumbnail"); } } // Create logo @@ -95,13 +97,14 @@ namespace GreenshotWin10Plugin ImageOutput.SaveToStream(logoThumbnail, null, logoStream, new SurfaceOutputSettings()); logoStream.Position = 0; logoRandomAccessStreamReference = RandomAccessStreamReference.CreateFromStream(logoStream); + Log.Info("Created RandomAccessStreamReference for the logo"); } } string applicationName = null; var dataTransferManagerHelper = new DataTransferManagerHelper(handle); dataTransferManagerHelper.DataTransferManager.TargetApplicationChosen += (dtm, args) => { - Log.DebugFormat("Trying to share with {0}", args.ApplicationName); + Log.InfoFormat("Trying to share with {0}", args.ApplicationName); applicationName = args.ApplicationName; }; var filename = FilenameHelper.GetFilename(OutputFormat.png, captureDetails); @@ -113,8 +116,8 @@ namespace GreenshotWin10Plugin { using (var deferredStream = streamedFileDataRequest.AsStreamForWrite()) { - await imageStream.CopyToAsync(deferredStream); - await imageStream.FlushAsync(); + await imageStream.CopyToAsync(deferredStream).ConfigureAwait(false); + await imageStream.FlushAsync().ConfigureAwait(false); } // Signal that the stream is ready streamedFileDataRequest.Dispose(); @@ -125,8 +128,8 @@ namespace GreenshotWin10Plugin } // Signal transfer ready to the await down below taskCompletionSource.TrySetResult(applicationName); - }, imageRandomAccessStreamReference); - + }, imageRandomAccessStreamReference).AsTask().ConfigureAwait(false); + dataTransferManagerHelper.DataTransferManager.DataRequested += (sender, args) => { var deferral = args.Request.GetDeferral(); @@ -143,7 +146,7 @@ namespace GreenshotWin10Plugin dataPackage.Properties.Square30x30Logo = logoRandomAccessStreamReference; dataPackage.Properties.LogoBackgroundColor = Color.FromArgb(0xff, 0x3d, 0x3d, 0x3d); dataPackage.SetStorageItems(new List { storageFile }); - //dataPackage.SetBitmap(imageRandomAccessStreamReference); + dataPackage.SetBitmap(imageRandomAccessStreamReference); dataPackage.Destroyed += (dp, o) => { Log.Debug("Destroyed."); @@ -151,7 +154,7 @@ namespace GreenshotWin10Plugin deferral.Complete(); }; dataTransferManagerHelper.ShowShareUi(); - return await taskCompletionSource.Task; + return await taskCompletionSource.Task.ConfigureAwait(false); } }).Result; if (string.IsNullOrWhiteSpace(exportTarget))