Provide way to prevent fast screen redraw while some plug-ins run in order to prevent seizure-inducing flashing
GIMP version: 2.10.14 (latest macOS version)
Note: bug reporters are expected to have verified the bug still exists either in the last stable version of GIMP or on updated development code (master branch).
Operating System: macOS
Package: Installer from GIMP download page (download GIMP 2.10.14 directly)
Description of the bug
There doesn't appear to be any way to suppress screen redraw while a Script-Fu script is running. In some cases, Script-Fu scripts may cause flashing on the screen in excess of three times per second. This is a potential seizure trigger for some people. That said, I don't have specific knowledge of someone having this reaction.
WCAG 2.0 level A prohibits this behavior on web pages. While GIMP is an application and not a web page, we probably don't want to risk people having seizures from using this software.
Two videos attached.
Reproduction
Is the bug reproducible? Always
Reproduction steps:
On a late 2018 Mac Mini with solid-state drive and 16GB RAM running Catalina 10.15.4:
- File > New > 1920 x 1080
- Filter > Artistic > Clothify...
- Click OK.
- Filter > Render > Line Nova...
- Set lines to 400
- Click OK.
…
Expected result:
- Filter executes without the dialog box content flashing
- Filter executes without visible flashing of selection outlines
Actual result:
- Dialog box content flashes rapidly during script-fu execution (see the last few seconds of <WARNING - rapidly-flashing script-fu dialog.mov>)
- Selection outlines flash rapidly during script-fu execution (see the last few seconds of <WARNING - rapidly flashing selection.mov>)
Additional information
If you have a backtrace for a crash or a warning, paste it here. N/A
Warning Warning Warning Warning Warning Warning Warning
After about 10-15 seconds in each of the following videos, there is rapid flashing for about 3-4 seconds. This flashing violates WCAG 2.0 level A for 2.3.1 Three Flashes or Below Threshold. The flashing is necessary to demonstrate the issue. I have attempted to make it as brief as reasonable to demonstrate the issue.
If you are bothered by rapid flashing, please do not watch the attached videos.