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))