1 | | It looks like when SurfaceSdlGraphicsManager creates a new _scalerPlugin and _scaler, it does not create a new _mouseScaler. So while the scaler changes from HQ3x (not allowed to scale the cursor) to Normal2x (allowed to scale the cursor), _mouseScaler will still be a HQ scaler. |
2 | | |
3 | | So it ought to be possible to reproduce this with other games, except perhaps it also requires the cursor to be a particular size? |
4 | | |
5 | | I'm not really familiar with the graphical backend, but something like this seems to fix it for me: |
6 | | |
7 | | {{{ |
8 | | diff --git a/backends/graphics/surfacesdl/surfacesdl-graphics.cpp b/backends/graphics/surfacesdl/surfacesdl-graphics.cpp |
9 | | index 6990aa19c73..0eb3ee43d18 100644 |
10 | | --- a/backends/graphics/surfacesdl/surfacesdl-graphics.cpp |
11 | | +++ b/backends/graphics/surfacesdl/surfacesdl-graphics.cpp |
12 | | @@ -683,6 +683,11 @@ void SurfaceSdlGraphicsManager::setGraphicsModeIntern() { |
13 | | |
14 | | _scalerPlugin = &_scalerPlugins[_videoMode.scalerIndex]->get<ScalerPluginObject>(); |
15 | | _scaler = _scalerPlugin->createInstance(format); |
16 | | + |
17 | | + if (_mouseScaler != nullptr) { |
18 | | + delete _mouseScaler; |
19 | | + _mouseScaler = _scalerPlugin->createInstance(_cursorFormat); |
20 | | + } |
21 | | } |
22 | | |
23 | | _scaler->setFactor(_videoMode.scaleFactor); |
24 | | }}} |
25 | | |
26 | | Maybe it should also call _mouseScaler->setFactor(_videoMode.scaleFactor), but that's also done before the mouse is scaled in SurfaceSdlGraphicsManager::blitCursor(). As I said, I don't know... |
| 1 | Edit: Oops, that comment was meant for another bug report. |