mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-29 14:42:26 +00:00
OPENPANDORA: Move SDL_CreateCursor hacklet from init to loadGFXMode.
* Fixes a bug that can occur on load.
This commit is contained in:
parent
3d395545cb
commit
45354676eb
@ -36,7 +36,8 @@ static const OSystem::GraphicsMode s_supportedGraphicsModes[] = {
|
||||
};
|
||||
|
||||
GPHGraphicsManager::GPHGraphicsManager(SdlEventSource *sdlEventSource)
|
||||
: SurfaceSdlGraphicsManager(sdlEventSource) {
|
||||
: SurfaceSdlGraphicsManager(sdlEventSource),
|
||||
_cursorDontScale(true) {
|
||||
}
|
||||
|
||||
const OSystem::GraphicsMode *GPHGraphicsManager::getSupportedGraphicsModes() const {
|
||||
|
@ -31,17 +31,35 @@
|
||||
#include "common/mutex.h"
|
||||
#include "common/textconsole.h"
|
||||
|
||||
static SDL_Cursor *hiddenCursor;
|
||||
|
||||
OPGraphicsManager::OPGraphicsManager(SdlEventSource *sdlEventSource)
|
||||
: SurfaceSdlGraphicsManager(sdlEventSource) {
|
||||
}
|
||||
|
||||
bool OPGraphicsManager::loadGFXMode() {
|
||||
|
||||
uint8_t hiddenCursorData = 0;
|
||||
hiddenCursor = SDL_CreateCursor(&hiddenCursorData, &hiddenCursorData, 8, 1, 0, 0);
|
||||
|
||||
/* On the OpenPandora we need to work around an SDL assumption that
|
||||
returns relative mouse coordinates when you get to the screen
|
||||
edges using the touchscreen. The workaround is to set a blank
|
||||
SDL cursor and not disable it (Hackish I know).
|
||||
|
||||
The root issues likes in the Windows Manager GRAB code in SDL.
|
||||
That is why the issue is not seen on framebuffer devices like the
|
||||
GP2X (there is no X window manager ;)).
|
||||
*/
|
||||
SDL_ShowCursor(SDL_ENABLE);
|
||||
SDL_SetCursor(hiddenCursor);
|
||||
|
||||
/* FIXME: For now we just cheat and set the overlay to 640*480 not 800*480 and let SDL
|
||||
deal with the boarders (it saves cleaning up the overlay when the game screen is
|
||||
smaller than the overlay ;)
|
||||
*/
|
||||
_videoMode.overlayWidth = 640;
|
||||
_videoMode.overlayHeight = 480;
|
||||
//_videoMode.overlayWidth = 640;
|
||||
//_videoMode.overlayHeight = 480;
|
||||
_videoMode.fullscreen = true;
|
||||
|
||||
if (_videoMode.screenHeight != 200 && _videoMode.screenHeight != 400)
|
||||
|
@ -54,8 +54,6 @@
|
||||
/* Dump console info to files. */
|
||||
#define DUMP_STDOUT
|
||||
|
||||
static SDL_Cursor *hiddenCursor;
|
||||
|
||||
OSystem_OP::OSystem_OP()
|
||||
:
|
||||
OSystem_POSIX() {
|
||||
@ -179,32 +177,12 @@ void OSystem_OP::initBackend() {
|
||||
/* Make sure SDL knows that we have a joystick we want to use. */
|
||||
ConfMan.setInt("joystick_num", 0);
|
||||
|
||||
// _graphicsMutex = createMutex();
|
||||
|
||||
/* Pass to POSIX method to do the heavy lifting */
|
||||
OSystem_POSIX::initBackend();
|
||||
|
||||
_inited = true;
|
||||
}
|
||||
|
||||
// enable joystick
|
||||
// if (joystick_num > -1 && SDL_NumJoysticks() > 0) {
|
||||
// printf("Using joystick: %s\n", SDL_JoystickName(0));
|
||||
// _joystick = SDL_JoystickOpen(joystick_num);
|
||||
// }
|
||||
//
|
||||
// setupMixer();
|
||||
|
||||
// Note: We could implement a custom SDLTimerManager by using
|
||||
// SDL_AddTimer. That might yield better timer resolution, but it would
|
||||
// also change the semantics of a timer: Right now, ScummVM timers
|
||||
// *never* run in parallel, due to the way they are implemented. If we
|
||||
// switched to SDL_AddTimer, each timer might run in a separate thread.
|
||||
// However, not all our code is prepared for that, so we can't just
|
||||
// switch. Still, it's a potential future change to keep in mind.
|
||||
// _timer = new DefaultTimerManager();
|
||||
// _timerID = SDL_AddTimer(10, &timer_handler, _timer);
|
||||
|
||||
void OSystem_OP::initSDL() {
|
||||
// Check if SDL has not been initialized
|
||||
if (!_initedSDL) {
|
||||
@ -217,38 +195,7 @@ void OSystem_OP::initSDL() {
|
||||
if (SDL_Init(sdlFlags) == -1)
|
||||
error("Could not initialize SDL: %s", SDL_GetError());
|
||||
|
||||
uint8_t hiddenCursorData = 0;
|
||||
|
||||
hiddenCursor = SDL_CreateCursor(&hiddenCursorData, &hiddenCursorData, 8, 1, 0, 0);
|
||||
|
||||
/* On the OpenPandora we need to work around an SDL assumption that
|
||||
returns relative mouse coordinates when you get to the screen
|
||||
edges using the touchscreen. The workaround is to set a blank
|
||||
SDL cursor and not disable it (Hackish I know).
|
||||
|
||||
The root issues likes in the Windows Manager GRAB code in SDL.
|
||||
That is why the issue is not seen on framebuffer devices like the
|
||||
GP2X (there is no X window manager ;)).
|
||||
*/
|
||||
SDL_ShowCursor(SDL_ENABLE);
|
||||
SDL_SetCursor(hiddenCursor);
|
||||
SDL_EnableUNICODE(1);
|
||||
|
||||
// memset(&_oldVideoMode, 0, sizeof(_oldVideoMode));
|
||||
// memset(&_videoMode, 0, sizeof(_videoMode));
|
||||
// memset(&_transactionDetails, 0, sizeof(_transactionDetails));
|
||||
|
||||
// _videoMode.mode = GFX_DOUBLESIZE;
|
||||
// _videoMode.scaleFactor = 2;
|
||||
// _videoMode.aspectRatioCorrection = ConfMan.getBool("aspect_ratio");
|
||||
// _scalerProc = Normal2x;
|
||||
// _scalerType = 0;
|
||||
|
||||
// _videoMode.fullscreen = true;
|
||||
|
||||
_initedSDL = true;
|
||||
|
||||
// OSystem_POSIX::initSDL();
|
||||
}
|
||||
}
|
||||
|
||||
@ -275,8 +222,6 @@ void OSystem_OP::addSysArchivesToSearchSet(Common::SearchSet &s, int priority) {
|
||||
|
||||
void OSystem_OP::quit() {
|
||||
|
||||
SDL_FreeCursor(hiddenCursor);
|
||||
|
||||
#ifdef DUMP_STDOUT
|
||||
printf("%s\n", "Debug: STDOUT and STDERR text files closed.");
|
||||
fclose(stdout);
|
||||
|
Loading…
x
Reference in New Issue
Block a user