[Scummvm-cvs-logs] scummvm master -> 64f9c902ddf0c8294fd9e5f66cf96661eb12040b

lordhoto lordhoto at gmail.com
Mon Dec 14 20:27:30 CET 2015


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
64f9c902dd OPENGL: Smooth mouse experience when black bars are visible.


Commit: 64f9c902ddf0c8294fd9e5f66cf96661eb12040b
    https://github.com/scummvm/scummvm/commit/64f9c902ddf0c8294fd9e5f66cf96661eb12040b
Author: Johannes Schickel (lordhoto at scummvm.org)
Date: 2015-12-14T20:26:05+01:00

Commit Message:
OPENGL: Smooth mouse experience when black bars are visible.

This gets rid of the feeling of the mouse sticking to black borders by using
the full output resolution as area for tracking game mouse movement. The same
behavior is present in plain SDL output with SDL2.

Changed paths:
    backends/graphics/opengl/opengl-graphics.cpp



diff --git a/backends/graphics/opengl/opengl-graphics.cpp b/backends/graphics/opengl/opengl-graphics.cpp
index c80f57a..ac6d41d 100644
--- a/backends/graphics/opengl/opengl-graphics.cpp
+++ b/backends/graphics/opengl/opengl-graphics.cpp
@@ -551,11 +551,8 @@ void OpenGLGraphicsManager::warpMouse(int x, int y) {
 			return;
 		}
 
-		x = (x * _displayWidth)  / _gameScreen->getWidth();
-		y = (y * _displayHeight) / _gameScreen->getHeight();
-
-		x += _displayX;
-		y += _displayY;
+		x = (x * _outputScreenWidth)  / _gameScreen->getWidth();
+		y = (y * _outputScreenHeight) / _gameScreen->getHeight();
 	}
 
 	setMousePosition(x, y);
@@ -946,18 +943,11 @@ void OpenGLGraphicsManager::adjustMousePosition(int16 &x, int16 &y) {
 			y = (y * _overlay->getHeight()) / _outputScreenHeight;
 		}
 	} else if (_gameScreen) {
-		x -= _displayX;
-		y -= _displayY;
-
 		const int16 width  = _gameScreen->getWidth();
 		const int16 height = _gameScreen->getHeight();
 
-		x = (x * width)  / (int)_displayWidth;
-		y = (y * height) / (int)_displayHeight;
-
-		// Make sure we only supply valid coordinates.
-		x = CLIP<int16>(x, 0, width - 1);
-		y = CLIP<int16>(y, 0, height - 1);
+		x = (x * width)  / (int)_outputScreenWidth;
+		y = (y * height) / (int)_outputScreenHeight;
 	}
 }
 
@@ -975,8 +965,8 @@ void OpenGLGraphicsManager::setMousePosition(int x, int y) {
 		_cursorDisplayX = x;
 		_cursorDisplayY = y;
 	} else {
-		_cursorDisplayX = CLIP<int>(x, _displayX, _displayX + _displayWidth  - 1);
-		_cursorDisplayY = CLIP<int>(y, _displayY, _displayY + _displayHeight - 1);
+		_cursorDisplayX = _displayX + (x * _displayWidth)  / _outputScreenWidth;
+		_cursorDisplayY = _displayY + (y * _displayHeight) / _outputScreenHeight;
 	}
 }
 






More information about the Scummvm-git-logs mailing list