PintaProject / Pinta

Simple GTK# Paint Program
http://www.pinta-project.com/
MIT License
1.86k stars 277 forks source link

Crash when zooming in max (3,600%) #1020

Open lunatic-gh opened 1 month ago

lunatic-gh commented 1 month ago

Description The Program crashes when the canvas is zoomed in the maximum level (3,600%)

To Reproduce

Additional Info When ran via commandline, the following error occurs with the crash:

Unhandled exception. System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
   at Cairo.ImageSurface.GetData()
   at Pinta.Core.CairoExtensions.GetPixelData(ImageSurface surface) in /home/luna/Pinta/Pinta.Core/Extensions/CairoExtensions.cs:line 1733
   at Pinta.Gui.Widgets.CanvasRenderer.RenderPixelGrid(ImageSurface dst, PointI offset) in /home/luna/Pinta/Pinta.Gui.Widgets/Widgets/Canvas/CanvasRenderer.cs:line 121
   at Pinta.Gui.Widgets.CanvasRenderer.Render(IReadOnlyList`1 layers, ImageSurface dst, PointI offset) in /home/luna/Pinta/Pinta.Gui.Widgets/Widgets/Canvas/CanvasRenderer.cs:line 106
   at Pinta.Gui.Widgets.PintaCanvas.Draw(Context context, Int32 width, Int32 height) in /home/luna/Pinta/Pinta.Gui.Widgets/Widgets/Canvas/PintaCanvas.cs:line 192
   at Pinta.Gui.Widgets.PintaCanvas.<>c__DisplayClass6_0.<.ctor>b__5(DrawingArea area, Context context, Int32 width, Int32 height) in /home/luna/Pinta/Pinta.Gui.Widgets/Widgets/Canvas/PintaCanvas.cs:line 145
   at Gtk.Internal.DrawingAreaDrawFuncNotifiedHandler.<.ctor>b__4_0(IntPtr drawingArea, IntPtr cr, Int32 width, Int32 height, IntPtr userData)

Version

cameronwhite commented 1 month ago

I think this is an issue with the GTK4 port - the GTK DrawingArea widget seems to now request drawing the entire zoomed-in image, not just the visible area inside the scroll window, so at 3600% zoom that's a very large image depending on your original image size ...