Changes between Initial Version and Version 1 of Ticket #14892, comment 3


Ignore:
Timestamp:
Jan 26, 2024, 12:46:12 PM (4 months ago)
Author:
eriktorbjorn

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #14892, comment 3

    initial v1  
    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...
     1Edit: Oops, that comment was meant for another bug report.