diff --git a/src/Controls/tests/DeviceTests/Controls.DeviceTests.csproj b/src/Controls/tests/DeviceTests/Controls.DeviceTests.csproj index ae03466f1b4b..e01ecb1e7d09 100644 --- a/src/Controls/tests/DeviceTests/Controls.DeviceTests.csproj +++ b/src/Controls/tests/DeviceTests/Controls.DeviceTests.csproj @@ -19,6 +19,9 @@ + + + diff --git a/src/Controls/tests/DeviceTests/Elements/Image/ImageTests.Android.cs b/src/Controls/tests/DeviceTests/Elements/Image/ImageTests.Android.cs index f18eb2fd64e4..9c3c7f98e77f 100644 --- a/src/Controls/tests/DeviceTests/Elements/Image/ImageTests.Android.cs +++ b/src/Controls/tests/DeviceTests/Elements/Image/ImageTests.Android.cs @@ -6,6 +6,8 @@ using System.Threading.Tasks; using Android.Graphics.Drawables; using Microsoft.Maui.Controls; +using Microsoft.Maui.Graphics; +using Microsoft.Maui.Handlers; using Xunit; namespace Microsoft.Maui.DeviceTests @@ -37,6 +39,45 @@ await InvokeOnMainThreadAsync(async () => await bitmapDrawable1.Bitmap.AssertNotEqualAsync(bitmapDrawable2.Bitmap); }); } + + [Fact] + public async Task ImageSetFromStreamRenders() + { + SetupBuilder(); + var layout = new VerticalStackLayout() + { + HeightRequest = 100, + WidthRequest = 100 + }; + + using var stream = GetType().Assembly.GetManifestResourceStream("red-embedded.png"); + + var image = new Image + { + Source = ImageSource.FromStream(() => stream) + }; + + layout.Add(image); + + await InvokeOnMainThreadAsync(async () => + { + var handler = CreateHandler(layout); + + await handler.ToPlatform().AttachAndRun(async () => + { + await image.Wait(); + await handler.ToPlatform().AssertContainsColor(Colors.Red +#if WINDOWS + , handler.MauiContext +#endif + ); + } +#if WINDOWS + , handler.MauiContext +#endif + ); + }); + } } // This subclass of memory stream is deliberately set up to trick Glide into using the cached image diff --git a/src/Controls/tests/DeviceTests/Elements/Image/ImageTests.cs b/src/Controls/tests/DeviceTests/Elements/Image/ImageTests.cs index a7e8b846f238..8a8684d616e9 100644 --- a/src/Controls/tests/DeviceTests/Elements/Image/ImageTests.cs +++ b/src/Controls/tests/DeviceTests/Elements/Image/ImageTests.cs @@ -1,4 +1,5 @@ using System; +using System.IO; using System.Linq; using System.Threading.Tasks; using Microsoft.Maui.Controls; diff --git a/src/Controls/tests/DeviceTests/Resources/Images/red-embedded.png b/src/Controls/tests/DeviceTests/Resources/Images/red-embedded.png new file mode 100644 index 000000000000..3587e2727c39 Binary files /dev/null and b/src/Controls/tests/DeviceTests/Resources/Images/red-embedded.png differ diff --git a/src/Core/AndroidNative/maui/src/main/java/com/microsoft/maui/glide/MauiCustomViewTarget.java b/src/Core/AndroidNative/maui/src/main/java/com/microsoft/maui/glide/MauiCustomViewTarget.java index 765afdb5060b..1a1f8427f241 100644 --- a/src/Core/AndroidNative/maui/src/main/java/com/microsoft/maui/glide/MauiCustomViewTarget.java +++ b/src/Core/AndroidNative/maui/src/main/java/com/microsoft/maui/glide/MauiCustomViewTarget.java @@ -46,11 +46,13 @@ public void onResourceReady(@NonNull Drawable resource, @Nullable Transition { + // set the image + this.view.setImageDrawable(resource); - // trigger the callback out of this target - post(() -> callback.onComplete(true, resource, this::clear)); + // trigger the callback out of this target + callback.onComplete(true, resource, this::clear); + }); } private void post(Runnable runnable) { diff --git a/src/Core/src/ImageSources/StreamImageSourceService/StreamImageSourceService.Android.cs b/src/Core/src/ImageSources/StreamImageSourceService/StreamImageSourceService.Android.cs index d31045b4fd73..c42c1be75922 100644 --- a/src/Core/src/ImageSources/StreamImageSourceService/StreamImageSourceService.Android.cs +++ b/src/Core/src/ImageSources/StreamImageSourceService/StreamImageSourceService.Android.cs @@ -21,7 +21,7 @@ public partial class StreamImageSourceService Stream? stream = null; try { - stream = await streamImageSource.GetStreamAsync(cancellationToken).ConfigureAwait(false); + stream = await streamImageSource.GetStreamAsync(cancellationToken); var callback = new ImageLoaderCallback(); diff --git a/src/Core/src/maui.aar b/src/Core/src/maui.aar index 42aa7bc115f5..3c78fc52469e 100644 Binary files a/src/Core/src/maui.aar and b/src/Core/src/maui.aar differ