Small fixes before removing the Win10 plugins for the RC1

This commit is contained in:
Robin 2016-10-18 20:18:36 +02:00
commit 667669ca3e
3 changed files with 30 additions and 9 deletions

View file

@ -13,6 +13,7 @@
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
<TargetPlatformVersion>8.1</TargetPlatformVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>

View file

@ -25,8 +25,13 @@ using Windows.ApplicationModel.DataTransfer;
namespace GreenshotWin10Plugin.Native
{
/// <summary>
/// Wraps the interop for calling the ShareUI
/// </summary>
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
/// </summary>
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");
}
}
}

View file

@ -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<IStorageItem> { 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))