Opened 3 years ago

Last modified 2 years ago

#9839 new enhancement

GUI: Improve handling of 'Filter Graphics' option activation/deactivation.

Reported by: macca8 Owned by:
Priority: normal Component: GUI
Keywords: Cc:


The 'Graphics Filter' option is exclusively for use with the OpenGL graphics mode, and currently relies on a simple Hide/Reveal strategy to control its availability.

While this method continues to work, changes to the GUI's dynamics (since the filter was added with have rendered it inefficient, buggy and generally non intuitive to the user.

Rather than post a bug report, I believe the best course of action is to tweak the design to a more efficient and intuitive method.

I recommend the following changes to control the Filter's availability:

  • set the Filter's default state as visible and inactive (greyed out).
  • add a reference to OpenGL to the Filter's tooltip (to confirm its use with OpenGL only).
  • activate/deactivate the Filter when the user selects/deselects OpenGL mode, without needing to apply the change (basically the same type of effect as selecting/deselecting a Global Override option in a Game Options tab).

These changes address these anomalies within the current method:

  • the user is now instantly aware of the Filter's existence and its trigger (currently the user must exit to the Launcher after enabling OpenGL to reveal the Filter).
  • avoids an issue where the Apply button doesn't reveal the Filter.
  • avoids an issue where the Filter remains visible after disabling OpenGL.
  • avoids an issue where the user can continue to interact with the Filter after disabling OpenGL (though the effect is limited to changing values in the Config File).
  • avoids an issue where a tooltip displays while the Filter is hidden.

I don't know if there are any technical limitations here, but I hope someone considers this a worthwhile fix, and is willing to take it on.

Change History (5)

comment:1 by bgK, 3 years ago

The 'Filter Graphics' option allows to select what kind of scaling is performed on top of the selected 'Graphics mode':

  • Unselected means nearest neighbours
  • Selected means bilinear

It is used both for OpenGL and the regular scalers in the following cases:

  • In fullscren mode, when the screen resolution is different from the scaled game resolution.
  • In windowed mode with OpenGL when the user manually resizes the window.

comment:2 by macca8, 3 years ago

Summary: GUI: Improve handling of 'Graphics Filter' activation/deactivation.GUI: Improve handling of 'Filter Graphics' option activation/deactivation.

comment:3 by criezy, 3 years ago

To clarify, all the issues reported here are specific to platforms using SDL1 and with both the OpenGL and SurfaceSDL backends. With those, the filtering is indeed only available for the OpenGL graphics mode.

The comment from bgK on the other is correct when using SDL2, or at least was correct at the time of writing. Since then we have added the possibility to resize non-OpenGL windows as well, which means the filtering is now used in fullscreen mode, and in windowed mode (when manually resizing the window) for both OpenGL and non-OpenGL graphics mode. And that means the filtering option is always visible and always enabled.

Fixing the described issues is not easy to do. If somebody can come up with an implementation that works while not breaking other use case, then this might be accepted. But since SDL1.2 is now obsolete and SDL2 is the default when building ScummVM (and for releases), the issue should disappear by itself anyway as we phase out SDL 1.2.

comment:4 by macca8, 3 years ago

Just confirming that all the issues described in this request have been fixed in the latest stable release (v 2.0.0) 64-bit Intel Mac build, as predicted by criezy, but surprisingly, not the 32-bit Intel Mac build.

The current Daily Build (2.1.0git134, 18 Dec 2017) is also still affected.

comment:5 by macca8, 2 years ago

Just an update regarding the behaviour of the current SDL1.2-based daily builds.

Changing to a compatible Graphics Mode (in this case, OpenGL) by clicking the Apply button will now reveal the Filter Graphics option immediately.

Note: See TracTickets for help on using tickets.