diff --git a/src/Gtk/Avalonia.Cairo/CairoPlatform.cs b/src/Gtk/Avalonia.Cairo/CairoPlatform.cs index 1590f2021b..b28535f02c 100644 --- a/src/Gtk/Avalonia.Cairo/CairoPlatform.cs +++ b/src/Gtk/Avalonia.Cairo/CairoPlatform.cs @@ -28,19 +28,16 @@ namespace Avalonia.Cairo using global::Cairo; using Rendering; - public class CairoPlatform : IPlatformRenderInterface, IRendererFactory + public class CairoPlatform : IPlatformRenderInterface { private static readonly CairoPlatform s_instance = new CairoPlatform(); private static readonly Pango.Context s_pangoContext = CreatePangoContext(); - public static bool UseImmediateRenderer { get; set; } - public static void Initialize() { AvaloniaLocator.CurrentMutable - .Bind().ToConstant(s_instance) - .Bind().ToConstant(s_instance); + .Bind().ToConstant(s_instance); } public IBitmapImpl CreateBitmap(int width, int height) @@ -61,18 +58,6 @@ namespace Avalonia.Cairo return new FormattedTextImpl(s_pangoContext, text, fontFamily, fontSize, fontStyle, textAlignment, fontWeight, constraint); } - public IRenderer CreateRenderer(IRenderRoot root, IRenderLoop renderLoop) - { - if (UseImmediateRenderer) - { - return new ImmediateRenderer(root, renderLoop); - } - else - { - return new DeferredRenderer(root, renderLoop); - } - } - public IRenderTarget CreateRenderTarget(IEnumerable surfaces) { var accessor = surfaces?.OfType>().FirstOrDefault(); diff --git a/src/Gtk/Avalonia.Gtk/GtkPlatform.cs b/src/Gtk/Avalonia.Gtk/GtkPlatform.cs index adf70f5696..d387ed0320 100644 --- a/src/Gtk/Avalonia.Gtk/GtkPlatform.cs +++ b/src/Gtk/Avalonia.Gtk/GtkPlatform.cs @@ -115,7 +115,7 @@ namespace Avalonia.Gtk public IRenderer CreateRenderer(IRenderRoot root, IRenderLoop renderLoop) { - return new DeferredRenderer(root, renderLoop); + return new ImmediateRenderer(root); } public IWindowIconImpl LoadIcon(string fileName) diff --git a/src/Gtk/Avalonia.Gtk3/Gtk3Platform.cs b/src/Gtk/Avalonia.Gtk3/Gtk3Platform.cs index 11209825dc..d63717d225 100644 --- a/src/Gtk/Avalonia.Gtk3/Gtk3Platform.cs +++ b/src/Gtk/Avalonia.Gtk3/Gtk3Platform.cs @@ -15,7 +15,7 @@ using Avalonia.Gtk3; namespace Avalonia.Gtk3 { - public class Gtk3Platform : IWindowingPlatform, IPlatformSettings, IPlatformThreadingInterface + public class Gtk3Platform : IWindowingPlatform, IPlatformSettings, IPlatformThreadingInterface, IRendererFactory { internal static readonly Gtk3Platform Instance = new Gtk3Platform(); internal static readonly MouseDevice Mouse = new MouseDevice(); @@ -38,6 +38,7 @@ namespace Avalonia.Gtk3 .Bind().ToConstant(Instance) .Bind().ToConstant(Instance) .Bind().ToSingleton() + .Bind().ToConstant(Instance) .Bind().ToConstant(new DefaultRenderLoop(60)) .Bind().ToConstant(new PlatformIconLoader()); @@ -52,7 +53,10 @@ namespace Avalonia.Gtk3 public IPopupImpl CreatePopup() => new PopupImpl(); - + public IRenderer CreateRenderer(IRenderRoot root, IRenderLoop renderLoop) + { + return new ImmediateRenderer(root); + } public Size DoubleClickSize => new Size(4, 4); diff --git a/src/Skia/Avalonia.Skia/PlatformRenderInterface.cs b/src/Skia/Avalonia.Skia/PlatformRenderInterface.cs index fd47635835..33fd2adb51 100644 --- a/src/Skia/Avalonia.Skia/PlatformRenderInterface.cs +++ b/src/Skia/Avalonia.Skia/PlatformRenderInterface.cs @@ -5,12 +5,11 @@ using System.Linq; using Avalonia.Controls.Platform.Surfaces; using Avalonia.Media; using Avalonia.Platform; -using Avalonia.Rendering; using SkiaSharp; namespace Avalonia.Skia { - public partial class PlatformRenderInterface : IPlatformRenderInterface, IRendererFactory + public partial class PlatformRenderInterface : IPlatformRenderInterface { public IBitmapImpl CreateBitmap(int width, int height) { @@ -62,11 +61,6 @@ namespace Avalonia.Skia } } - public IRenderer CreateRenderer(IRenderRoot root, IRenderLoop renderLoop) - { - return new DeferredRenderer(root, renderLoop); - } - public IRenderTargetBitmapImpl CreateRenderTargetBitmap( int width, int height, diff --git a/src/Skia/Avalonia.Skia/SkiaPlatform.cs b/src/Skia/Avalonia.Skia/SkiaPlatform.cs index 0751d86bf3..d3083d3d33 100644 --- a/src/Skia/Avalonia.Skia/SkiaPlatform.cs +++ b/src/Skia/Avalonia.Skia/SkiaPlatform.cs @@ -27,8 +27,7 @@ namespace Avalonia.Skia { var renderInterface = new PlatformRenderInterface(); AvaloniaLocator.CurrentMutable - .Bind().ToConstant(renderInterface) - .Bind().ToConstant(renderInterface); + .Bind().ToConstant(renderInterface); } public static bool ForceSoftwareRendering diff --git a/src/Windows/Avalonia.Direct2D1/Direct2D1Platform.cs b/src/Windows/Avalonia.Direct2D1/Direct2D1Platform.cs index f3b38eec87..68d69c9ffc 100644 --- a/src/Windows/Avalonia.Direct2D1/Direct2D1Platform.cs +++ b/src/Windows/Avalonia.Direct2D1/Direct2D1Platform.cs @@ -9,9 +9,7 @@ using Avalonia.Direct2D1.Media; using Avalonia.Media; using Avalonia.Platform; using Avalonia.Controls; -using Avalonia.Controls.Platform.Surfaces; using Avalonia.Direct2D1.Media.Imaging; -using Avalonia.Rendering; namespace Avalonia { @@ -27,7 +25,7 @@ namespace Avalonia namespace Avalonia.Direct2D1 { - public class Direct2D1Platform : IPlatformRenderInterface, IRendererFactory + public class Direct2D1Platform : IPlatformRenderInterface { private static readonly Direct2D1Platform s_instance = new Direct2D1Platform(); @@ -41,13 +39,10 @@ namespace Avalonia.Direct2D1 private static readonly SharpDX.WIC.ImagingFactory s_imagingFactory = new SharpDX.WIC.ImagingFactory(); - public static bool UseImmediateRenderer { get; set; } - public static void Initialize() { AvaloniaLocator.CurrentMutable .Bind().ToConstant(s_instance) - .Bind().ToConstant(s_instance) .Bind().ToConstant(s_d2D1Factory) .Bind().ToConstant(s_d2D1Factory) .BindToSelf(s_dwfactory) @@ -114,18 +109,6 @@ namespace Avalonia.Direct2D1 constraint); } - public IRenderer CreateRenderer(IRenderRoot root, IRenderLoop renderLoop) - { - if (UseImmediateRenderer) - { - return new ImmediateRenderer(root); - } - else - { - return new DeferredRenderer(root, renderLoop); - } - } - public IRenderTarget CreateRenderTarget(IEnumerable surfaces) { var nativeWindow = surfaces?.OfType().FirstOrDefault(); diff --git a/src/Windows/Avalonia.Win32/Win32Platform.cs b/src/Windows/Avalonia.Win32/Win32Platform.cs index e668fd964a..7e2c1ab5f4 100644 --- a/src/Windows/Avalonia.Win32/Win32Platform.cs +++ b/src/Windows/Avalonia.Win32/Win32Platform.cs @@ -35,7 +35,7 @@ namespace Avalonia namespace Avalonia.Win32 { - partial class Win32Platform : IPlatformThreadingInterface, IPlatformSettings, IWindowingPlatform, IPlatformIconLoader + partial class Win32Platform : IPlatformThreadingInterface, IPlatformSettings, IWindowingPlatform, IPlatformIconLoader, IRendererFactory { private static readonly Win32Platform s_instance = new Win32Platform(); private static uint _uiThread; @@ -70,6 +70,7 @@ namespace Avalonia.Win32 .Bind().ToConstant(s_instance) .Bind().ToConstant(s_instance) .Bind().ToConstant(new RenderLoop(60)) + .Bind().ToConstant(s_instance) .Bind().ToSingleton() .Bind().ToConstant(s_instance) .Bind().ToConstant(s_instance); @@ -197,5 +198,10 @@ namespace Avalonia.Win32 { return new PopupImpl(); } + + public IRenderer CreateRenderer(IRenderRoot root, IRenderLoop renderLoop) + { + return new DeferredRenderer(root, renderLoop); + } } }