diff options
author | Alejandro Marzini | 2010-06-07 03:19:18 +0000 |
---|---|---|
committer | Alejandro Marzini | 2010-06-07 03:19:18 +0000 |
commit | 56b9e6c9b70a5a1b00ddadfb9cc4e298c1153a0b (patch) | |
tree | 4bb713d8a3be27c3345d11ccb3aef12696af638f | |
parent | 280c18f96e3453279c45a00ba5a31733502adc84 (diff) | |
download | scummvm-rg350-56b9e6c9b70a5a1b00ddadfb9cc4e298c1153a0b.tar.gz scummvm-rg350-56b9e6c9b70a5a1b00ddadfb9cc4e298c1153a0b.tar.bz2 scummvm-rg350-56b9e6c9b70a5a1b00ddadfb9cc4e298c1153a0b.zip |
Removed code that is now in managers. Added mutex and graphics manager initialization and functions redirections.
svn-id: r49473
-rw-r--r-- | backends/platform/sdl/sdl.cpp | 348 | ||||
-rw-r--r-- | backends/platform/sdl/sdl.h | 241 |
2 files changed, 205 insertions, 384 deletions
diff --git a/backends/platform/sdl/sdl.cpp b/backends/platform/sdl/sdl.cpp index 9fa43cb389..6f82ede114 100644 --- a/backends/platform/sdl/sdl.cpp +++ b/backends/platform/sdl/sdl.cpp @@ -87,50 +87,15 @@ static Uint32 timer_handler(Uint32 interval, void *param) { return interval; } -AspectRatio::AspectRatio(int w, int h) { - // TODO : Validation and so on... - // Currently, we just ensure the program don't instantiate non-supported aspect ratios - _kw = w; - _kh = h; -} - -#if !defined(_WIN32_WCE) && !defined(__SYMBIAN32__) && defined(USE_SCALERS) -static const size_t AR_COUNT = 4; -static const char* desiredAspectRatioAsStrings[AR_COUNT] = { "auto", "4/3", "16/9", "16/10" }; -static const AspectRatio desiredAspectRatios[AR_COUNT] = { AspectRatio(0, 0), AspectRatio(4,3), AspectRatio(16,9), AspectRatio(16,10) }; - -static AspectRatio getDesiredAspectRatio() { - //TODO : We could parse an arbitrary string, if we code enough proper validation - Common::String desiredAspectRatio = ConfMan.get("desired_screen_aspect_ratio"); - - for (size_t i = 0; i < AR_COUNT; i++) { - assert(desiredAspectRatioAsStrings[i] != NULL); - - if (!scumm_stricmp(desiredAspectRatio.c_str(), desiredAspectRatioAsStrings[i])) { - return desiredAspectRatios[i]; - } - } - // TODO : Report a warning - return AspectRatio(0, 0); -} -#endif - void OSystem_SDL::initBackend() { assert(!_inited); int joystick_num = ConfMan.getInt("joystick_num"); - uint32 sdlFlags = SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER; + uint32 sdlFlags = 0; if (ConfMan.hasKey("disable_sdl_parachute")) sdlFlags |= SDL_INIT_NOPARACHUTE; -#ifdef _WIN32_WCE - if (ConfMan.hasKey("use_GDI") && ConfMan.getBool("use_GDI")) { - SDL_VideoInit("windib", 0); - sdlFlags ^= SDL_INIT_VIDEO; - } -#endif - if (joystick_num > -1) sdlFlags |= SDL_INIT_JOYSTICK; @@ -138,53 +103,15 @@ void OSystem_SDL::initBackend() { error("Could not initialize SDL: %s", SDL_GetError()); } - _graphicsMutex = createMutex(); - - SDL_ShowCursor(SDL_DISABLE); - // Enable unicode support if possible SDL_EnableUNICODE(1); - memset(&_oldVideoMode, 0, sizeof(_oldVideoMode)); - memset(&_videoMode, 0, sizeof(_videoMode)); - memset(&_transactionDetails, 0, sizeof(_transactionDetails)); - - _cksumValid = false; -#if !defined(_WIN32_WCE) && !defined(__SYMBIAN32__) && defined(USE_SCALERS) - _videoMode.mode = GFX_DOUBLESIZE; - _videoMode.scaleFactor = 2; - _videoMode.aspectRatioCorrection = ConfMan.getBool("aspect_ratio"); - _videoMode.desiredAspectRatio = getDesiredAspectRatio(); - _scalerProc = Normal2x; -#else // for small screen platforms - _videoMode.mode = GFX_NORMAL; - _videoMode.scaleFactor = 1; - _videoMode.aspectRatioCorrection = false; - _scalerProc = Normal1x; -#endif - _scalerType = 0; - _modeFlags = 0; - -#if !defined(_WIN32_WCE) && !defined(__SYMBIAN32__) - _videoMode.fullscreen = ConfMan.getBool("fullscreen"); -#else - _videoMode.fullscreen = true; -#endif - -#if !defined(MACOSX) && !defined(__SYMBIAN32__) - // Setup a custom program icon. - // Don't set icon on OS X, as we use a nicer external icon there. - // Don't for Symbian: it uses the EScummVM.aif file for the icon. - setupIcon(); -#endif - // enable joystick if (joystick_num > -1 && SDL_NumJoysticks() > 0) { printf("Using joystick: %s\n", SDL_JoystickName(0)); _joystick = SDL_JoystickOpen(joystick_num); } - // Create the savefile manager, if none exists yet (we check for this to // allow subclasses to provide their own). if (_savefile == 0) { @@ -198,23 +125,45 @@ void OSystem_SDL::initBackend() { // Create and hook up the mixer, if none exists yet (we check for this to // allow subclasses to provide their own). if (_mixer == 0) { + // TODO: Implement SdlAudioManager + if (SDL_InitSubSystem(SDL_INIT_AUDIO) == -1) { + error("Could not initialize SDL: %s", SDL_GetError()); + } + setupMixer(); } // Create and hook up the timer manager, if none exists yet (we check for // this to allow subclasses to provide their own). if (_timer == 0) { - // 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. + // TODO: Implement SdlTimerManager + if (SDL_InitSubSystem(SDL_INIT_TIMER) == -1) { + error("Could not initialize SDL: %s", SDL_GetError()); + } + _timer = new DefaultTimerManager(); _timerID = SDL_AddTimer(10, &timer_handler, _timer); } + // Create and hook up the mutex manager, if none exists yet (we check for + // this to allow subclasses to provide their own). + if (_mutexManager == 0) { + _mutexManager = new SdlMutexManager(); + } + + // Create and hook up the graphics manager, if none exists yet (we check for + // this to allow subclasses to provide their own). + if (_graphicsManager == 0) { + _graphicsManager = new SdlGraphicsManager(); + } + +#if !defined(MACOSX) && !defined(__SYMBIAN32__) + // Setup a custom program icon. + // Don't set icon on OS X, as we use a nicer external icon there. + // Don't for Symbian: it uses the EScummVM.aif file for the icon. + setupIcon(); +#endif + // Invoke parent implementation of this method OSystem::initBackend(); @@ -223,23 +172,9 @@ void OSystem_SDL::initBackend() { OSystem_SDL::OSystem_SDL() : -#ifdef USE_OSD - _osdSurface(0), _osdAlpha(SDL_ALPHA_TRANSPARENT), _osdFadeStartTime(0), -#endif - _hwscreen(0), _screen(0), _tmpscreen(0), -#ifdef USE_RGB_COLOR - _screenFormat(Graphics::PixelFormat::createFormatCLUT8()), - _cursorFormat(Graphics::PixelFormat::createFormatCLUT8()), -#endif - _overlayVisible(false), - _overlayscreen(0), _tmpscreen2(0), - _cdrom(0), _scalerProc(0), _modeChanged(false), _screenChangeCount(0), _dirtyChecksums(0), + _cdrom(0), _scrollLock(false), - _mouseVisible(false), _mouseNeedsRedraw(false), _mouseData(0), _mouseSurface(0), - _mouseOrigSurface(0), _cursorTargetScale(1), _cursorPaletteDisabled(true), _joystick(0), - _currentShakePos(0), _newShakePos(0), - _paletteDirtyStart(0), _paletteDirtyEnd(0), #if MIXER_DOUBLE_BUFFERING _soundMutex(0), _soundCond(0), _soundThread(0), _soundThreadIsRunning(false), _soundThreadShouldQuit(false), @@ -248,22 +183,14 @@ OSystem_SDL::OSystem_SDL() _savefile(0), _mixer(0), _timer(0), - _screenIsLocked(false), - _graphicsMutex(0), _transactionMode(kTransactionNone) { - - // allocate palette storage - _currentPalette = (SDL_Color *)calloc(sizeof(SDL_Color), 256); - _cursorPalette = (SDL_Color *)calloc(sizeof(SDL_Color), 256); - - _mouseBackup.x = _mouseBackup.y = _mouseBackup.w = _mouseBackup.h = 0; + _mutexManager(0), + _graphicsManager(0) { // reset mouse state memset(&_km, 0, sizeof(_km)); - memset(&_mouseCurState, 0, sizeof(_mouseCurState)); _inited = false; - #if defined(__amigaos4__) _fsFactory = new AmigaOSFilesystemFactory(); #elif defined(UNIX) @@ -281,11 +208,6 @@ OSystem_SDL::~OSystem_SDL() { SDL_RemoveTimer(_timerID); closeMixer(); - free(_dirtyChecksums); - free(_currentPalette); - free(_cursorPalette); - free(_mouseData); - delete _savefile; delete _timer; } @@ -450,50 +372,15 @@ void OSystem_SDL::setWindowCaption(const char *caption) { } bool OSystem_SDL::hasFeature(Feature f) { - return - (f == kFeatureFullscreenMode) || - (f == kFeatureAspectRatioCorrection) || - (f == kFeatureAutoComputeDirtyRects) || - (f == kFeatureCursorHasPalette) || - (f == kFeatureIconifyWindow); + return _graphicsManager->hasFeature(f); } void OSystem_SDL::setFeatureState(Feature f, bool enable) { - switch (f) { - case kFeatureFullscreenMode: - setFullscreenMode(enable); - break; - case kFeatureAspectRatioCorrection: - setAspectRatioCorrection(enable); - break; - case kFeatureAutoComputeDirtyRects: - if (enable) - _modeFlags |= DF_WANT_RECT_OPTIM; - else - _modeFlags &= ~DF_WANT_RECT_OPTIM; - break; - case kFeatureIconifyWindow: - if (enable) - SDL_WM_IconifyWindow(); - break; - default: - break; - } + _graphicsManager->setFeatureState(f, enable); } bool OSystem_SDL::getFeatureState(Feature f) { - assert (_transactionMode == kTransactionNone); - - switch (f) { - case kFeatureFullscreenMode: - return _videoMode.fullscreen; - case kFeatureAspectRatioCorrection: - return _videoMode.aspectRatioCorrection; - case kFeatureAutoComputeDirtyRects: - return _modeFlags & DF_WANT_RECT_OPTIM; - default: - return false; - } + return _graphicsManager->getFeatureState(f); } void OSystem_SDL::deinit() { @@ -501,8 +388,6 @@ void OSystem_SDL::deinit() { SDL_CDStop(_cdrom); SDL_CDClose(_cdrom); } - unloadGFXMode(); - deleteMutex(_graphicsMutex); if (_joystick) SDL_JoystickClose(_joystick); @@ -512,11 +397,6 @@ void OSystem_SDL::deinit() { SDL_RemoveTimer(_timerID); closeMixer(); - free(_dirtyChecksums); - free(_currentPalette); - free(_cursorPalette); - free(_mouseData); - delete _timer; SDL_Quit(); @@ -587,20 +467,24 @@ void OSystem_SDL::setupIcon() { free(icon); } +#pragma mark - +#pragma mark --- Mutex --- +#pragma mark - + OSystem::MutexRef OSystem_SDL::createMutex() { - return (MutexRef) SDL_CreateMutex(); + return _mutexManager->createMutex(); } void OSystem_SDL::lockMutex(MutexRef mutex) { - SDL_mutexP((SDL_mutex *) mutex); + _mutexManager->lockMutex(mutex); } void OSystem_SDL::unlockMutex(MutexRef mutex) { - SDL_mutexV((SDL_mutex *) mutex); + _mutexManager->unlockMutex(mutex); } void OSystem_SDL::deleteMutex(MutexRef mutex) { - SDL_DestroyMutex((SDL_mutex *) mutex); + _mutexManager->deleteMutex(mutex); } #pragma mark - @@ -873,3 +757,147 @@ void OSystem_SDL::updateCD() { _cdEndTime = SDL_GetTicks() + _cdrom->track[_cdTrack].length * 1000 / CD_FPS; } } + +#pragma mark - +#pragma mark --- Graphics --- +#pragma mark - + +const OSystem::GraphicsMode *OSystem_SDL::getSupportedGraphicsModes() const { + return _graphicsManager->getSupportedGraphicsModes(); +} + +int OSystem_SDL::getDefaultGraphicsMode() const { + return _graphicsManager->getDefaultGraphicsMode(); +} + +bool OSystem_SDL::setGraphicsMode(int mode) { + return _graphicsManager->setGraphicsMode(mode); +} + +int OSystem_SDL::getGraphicsMode() const { + return _graphicsManager->getGraphicsMode(); +} + +#ifdef USE_RGB_COLOR +Graphics::PixelFormat OSystem_SDL::getScreenFormat() const { + return _graphicsManager->getScreenFormat(); +} + +Common::List<Graphics::PixelFormat> OSystem_SDL::getSupportedFormats() { + return _graphicsManager->getSupportedFormats(); +} +#endif + +void OSystem_SDL::beginGFXTransaction() { + _graphicsManager->beginGFXTransaction(); +} + +OSystem::TransactionError OSystem_SDL::endGFXTransaction() { + return _graphicsManager->endGFXTransaction(); +} + +void OSystem_SDL::initSize(uint w, uint h, const Graphics::PixelFormat *format ) { + _graphicsManager->initSize(w, h, format); +} + +int16 OSystem_SDL::getHeight() { + return _graphicsManager->getHeight(); +} + +int16 OSystem_SDL::getWidth() { + return _graphicsManager->getWidth(); +} + +void OSystem_SDL::setPalette(const byte *colors, uint start, uint num) { + _graphicsManager->setPalette(colors, start, num); +} + +void OSystem_SDL::grabPalette(byte *colors, uint start, uint num) { + _graphicsManager->grabPalette(colors, start, num); +} + +void OSystem_SDL::copyRectToScreen(const byte *buf, int pitch, int x, int y, int w, int h) { + _graphicsManager->copyRectToScreen(buf, pitch, x, y, w, h); +} + +Graphics::Surface *OSystem_SDL::lockScreen() { + return _graphicsManager->lockScreen(); +} + +void OSystem_SDL::unlockScreen() { + _graphicsManager->unlockScreen(); +} + +/*void OSystem_SDL::fillScreen(uint32 col) { + _graphicsManager->fillScreen(col); +}*/ + +void OSystem_SDL::updateScreen() { + _graphicsManager->updateScreen(); +} + +void OSystem_SDL::setShakePos(int shakeOffset) { + _graphicsManager->setShakePos(shakeOffset); +} + +void OSystem_SDL::showOverlay() { + _graphicsManager->showOverlay(); +} + +void OSystem_SDL::hideOverlay() { + _graphicsManager->hideOverlay(); +} + +Graphics::PixelFormat OSystem_SDL::getOverlayFormat() const { + return _graphicsManager->getOverlayFormat(); +} + +void OSystem_SDL::clearOverlay() { + _graphicsManager->clearOverlay(); +} + +void OSystem_SDL::grabOverlay(OverlayColor *buf, int pitch) { + _graphicsManager->grabOverlay(buf, pitch); +} + +void OSystem_SDL::copyRectToOverlay(const OverlayColor *buf, int pitch, int x, int y, int w, int h) { + _graphicsManager->copyRectToOverlay(buf, pitch, x, y, w, h); +} + +int16 OSystem_SDL::getOverlayHeight() { + return _graphicsManager->getOverlayHeight(); +} + +int16 OSystem_SDL::getOverlayWidth() { + return _graphicsManager->getOverlayWidth(); +} + +bool OSystem_SDL::showMouse(bool visible) { + return _graphicsManager->showMouse(visible); +} + +void OSystem_SDL::warpMouse(int x, int y) { + _graphicsManager->warpMouse(x, y); +} + +void OSystem_SDL::setMouseCursor(const byte *buf, uint w, uint h, int hotspotX, int hotspotY, uint32 keycolor, int cursorTargetScale, const Graphics::PixelFormat *format) { + _graphicsManager->setMouseCursor(buf, w, h, hotspotX, hotspotY, keycolor, cursorTargetScale, format); +} + +void OSystem_SDL::setCursorPalette(const byte *colors, uint start, uint num) { + _graphicsManager->setCursorPalette(colors, start, num); +} + +void OSystem_SDL::disableCursorPalette(bool disable) { + _graphicsManager->disableCursorPalette(disable); +} + +int OSystem_SDL::getScreenChangeID() const { + return _graphicsManager->getScreenChangeID(); +} + +#ifdef USE_OSD +void OSystem_SDL::displayMessageOnOSD(const char *msg) { + _graphicsManager->displayMessageOnOSD(msg); +} +#endif diff --git a/backends/platform/sdl/sdl.h b/backends/platform/sdl/sdl.h index c850ec5ab1..214a8a988c 100644 --- a/backends/platform/sdl/sdl.h +++ b/backends/platform/sdl/sdl.h @@ -33,6 +33,10 @@ #endif #include "backends/base-backend.h" + +#include "backends/mutex/sdl/sdl-mutex.h" +#include "backends/graphics/sdl/sdl-graphics.h" + #include "graphics/scaler.h" @@ -54,35 +58,6 @@ namespace Audio { #define MIXER_DOUBLE_BUFFERING 1 #endif - -enum { - GFX_NORMAL = 0, - GFX_DOUBLESIZE = 1, - GFX_TRIPLESIZE = 2, - GFX_2XSAI = 3, - GFX_SUPER2XSAI = 4, - GFX_SUPEREAGLE = 5, - GFX_ADVMAME2X = 6, - GFX_ADVMAME3X = 7, - GFX_HQ2X = 8, - GFX_HQ3X = 9, - GFX_TV2X = 10, - GFX_DOTMATRIX = 11 -}; - -class AspectRatio { - int _kw, _kh; -public: - AspectRatio() { _kw = _kh = 0; } - AspectRatio(int w, int h); - - bool isAuto() const { return (_kw | _kh) == 0; } - - int kw() const { return _kw; } - int kh() const { return _kh; } -}; - - class OSystem_SDL : public BaseBackend { public: OSystem_SDL(); @@ -90,12 +65,18 @@ public: virtual void initBackend(); + +protected: + SdlMutexManager *_mutexManager; + SdlGraphicsManager *_graphicsManager; + +public: void beginGFXTransaction(); TransactionError endGFXTransaction(); #ifdef USE_RGB_COLOR // Game screen - virtual Graphics::PixelFormat getScreenFormat() const { return _screenFormat; } + virtual Graphics::PixelFormat getScreenFormat() const; // Highest supported virtual Common::List<Graphics::PixelFormat> getSupportedFormats(); @@ -105,7 +86,7 @@ public: // Typically, 320x200 CLUT8 virtual void initSize(uint w, uint h, const Graphics::PixelFormat *format); // overloaded by CE backend - virtual int getScreenChangeID() const { return _screenChangeCount; } + virtual int getScreenChangeID() const; // Set colors of the palette void setPalette(const byte *colors, uint start, uint num); @@ -138,10 +119,7 @@ public: void setCursorPalette(const byte *colors, uint start, uint num); // Disables or enables cursor palette - void disableCursorPalette(bool disable) { - _cursorPaletteDisabled = disable; - blitCursor(); - } + void disableCursorPalette(bool disable); // Shaking is used in SCUMM. Set current shake position. void setShakePos(int shake_pos); @@ -214,7 +192,7 @@ public: void deleteMutex(MutexRef mutex); // Overlay - virtual Graphics::PixelFormat getOverlayFormat() const { return _overlayFormat; } + virtual Graphics::PixelFormat getOverlayFormat() const; virtual void showOverlay(); virtual void hideOverlay(); @@ -223,8 +201,8 @@ public: virtual void copyRectToOverlay(const OverlayColor *buf, int pitch, int x, int y, int w, int h); virtual int16 getHeight(); virtual int16 getWidth(); - virtual int16 getOverlayHeight() { return _videoMode.overlayHeight; } - virtual int16 getOverlayWidth() { return _videoMode.overlayWidth; } + virtual int16 getOverlayHeight(); + virtual int16 getOverlayWidth(); virtual const GraphicsMode *getSupportedGraphicsModes() const; virtual int getDefaultGraphicsMode() const; @@ -254,110 +232,11 @@ protected: bool _inited; SDL_AudioSpec _obtainedRate; -#ifdef USE_OSD - SDL_Surface *_osdSurface; - Uint8 _osdAlpha; // Transparency level of the OSD - uint32 _osdFadeStartTime; // When to start the fade out - enum { - kOSDFadeOutDelay = 2 * 1000, // Delay before the OSD is faded out (in milliseconds) - kOSDFadeOutDuration = 500, // Duration of the OSD fade out (in milliseconds) - kOSDColorKey = 1, - kOSDInitialAlpha = 80 // Initial alpha level, in percent - }; -#endif - - // hardware screen - SDL_Surface *_hwscreen; - - // unseen game screen - SDL_Surface *_screen; -#ifdef USE_RGB_COLOR - Graphics::PixelFormat _screenFormat; - Graphics::PixelFormat _cursorFormat; -#endif - - // temporary screen (for scalers) - SDL_Surface *_tmpscreen; - SDL_Surface *_tmpscreen2; - - // overlay - SDL_Surface *_overlayscreen; - bool _overlayVisible; - Graphics::PixelFormat _overlayFormat; - // CD Audio SDL_CD *_cdrom; int _cdTrack, _cdNumLoops, _cdStartFrame, _cdDuration; uint32 _cdEndTime, _cdStopTime; - enum { - DF_WANT_RECT_OPTIM = 1 << 0 - }; - - enum { - kTransactionNone = 0, - kTransactionActive = 1, - kTransactionRollback = 2 - }; - - struct TransactionDetails { - bool sizeChanged; - bool needHotswap; - bool needUpdatescreen; - bool normal1xScaler; -#ifdef USE_RGB_COLOR - bool formatChanged; -#endif - }; - TransactionDetails _transactionDetails; - - struct VideoState { - bool setup; - - bool fullscreen; - bool aspectRatioCorrection; - AspectRatio desiredAspectRatio; - - int mode; - int scaleFactor; - - int screenWidth, screenHeight; - int overlayWidth, overlayHeight; - int hardwareWidth, hardwareHeight; -#ifdef USE_RGB_COLOR - Graphics::PixelFormat format; -#endif - }; - VideoState _videoMode, _oldVideoMode; - - virtual void setGraphicsModeIntern(); // overloaded by CE backend - - /** Force full redraw on next updateScreen */ - bool _forceFull; - ScalerProc *_scalerProc; - int _scalerType; - int _transactionMode; - - bool _screenIsLocked; - Graphics::Surface _framebuffer; - - /** Current video mode flags (see DF_* constants) */ - uint32 _modeFlags; - bool _modeChanged; - int _screenChangeCount; - - enum { - NUM_DIRTY_RECT = 100, - MAX_SCALING = 3 - }; - - // Dirty rect management - SDL_Rect _dirtyRectList[NUM_DIRTY_RECT]; - int _numDirtyRects; - uint32 *_dirtyChecksums; - bool _cksumValid; - int _cksumNum; - // Keyboard mouse emulation. Disabled by fingolfin 2004-12-18. // I am keeping the rest of the code in for now, since the joystick // code (or rather, "hack") uses it, too. @@ -366,50 +245,7 @@ protected: uint32 last_time, delay_time, x_down_time, y_down_time; }; - struct MousePos { - // The mouse position, using either virtual (game) or real - // (overlay) coordinates. - int16 x, y; - - // The size and hotspot of the original cursor image. - int16 w, h; - int16 hotX, hotY; - - // The size and hotspot of the pre-scaled cursor image, in real - // coordinates. - int16 rW, rH; - int16 rHotX, rHotY; - - // The size and hotspot of the pre-scaled cursor image, in game - // coordinates. - int16 vW, vH; - int16 vHotX, vHotY; - - MousePos() : x(0), y(0), w(0), h(0), hotX(0), hotY(0), - rW(0), rH(0), rHotX(0), rHotY(0), vW(0), vH(0), - vHotX(0), vHotY(0) - { } - }; - - // mouse KbdMouse _km; - bool _mouseVisible; - bool _mouseNeedsRedraw; - byte *_mouseData; - SDL_Rect _mouseBackup; - MousePos _mouseCurState; -#ifdef USE_RGB_COLOR - uint32 _mouseKeyColor; -#else - byte _mouseKeyColor; -#endif - int _cursorTargetScale; - bool _cursorPaletteDisabled; - SDL_Surface *_mouseOrigSurface; - SDL_Surface *_mouseSurface; - enum { - kMouseColorKey = 1 - }; // Scroll lock state - since SDL doesn't track it bool _scrollLock; @@ -417,23 +253,6 @@ protected: // joystick SDL_Joystick *_joystick; - // Shake mode - int _currentShakePos; - int _newShakePos; - - // Palette data - SDL_Color *_currentPalette; - uint _paletteDirtyStart, _paletteDirtyEnd; - - // Cursor palette data - SDL_Color *_cursorPalette; - - /** - * Mutex which prevents multiple threads from interfering with each other - * when accessing the screen. - */ - MutexRef _graphicsMutex; - #ifdef MIXER_DOUBLE_BUFFERING SDL_mutex *_soundMutex; SDL_cond *_soundCond; @@ -459,40 +278,14 @@ protected: Common::TimerManager *_timer; protected: - void addDirtyRgnAuto(const byte *buf); - void makeChecksums(const byte *buf); - - virtual void addDirtyRect(int x, int y, int w, int h, bool realCoordinates = false); // overloaded by CE backend - - virtual void drawMouse(); // overloaded by CE backend - virtual void undrawMouse(); // overloaded by CE backend (FIXME) - virtual void blitCursor(); // overloaded by CE backend (FIXME) - - /** Set the position of the virtual mouse cursor. */ - void setMousePos(int x, int y); virtual void fillMouseEvent(Common::Event &event, int x, int y); // overloaded by CE backend void toggleMouseGrab(); - virtual void internUpdateScreen(); // overloaded by CE backend - - virtual bool loadGFXMode(); // overloaded by CE backend - virtual void unloadGFXMode(); // overloaded by CE backend - virtual bool hotswapGFXMode(); // overloaded by CE backend - - void setFullscreenMode(bool enable); - void setAspectRatioCorrection(bool enable); - - virtual bool saveScreenshot(const char *filename); // overloaded by CE backend - - int effectiveScreenHeight() const; + void handleKbdMouse(); void setupIcon(); - void handleKbdMouse(); virtual bool remapKey(SDL_Event &ev, Common::Event &event); - - bool handleScalerHotkeys(const SDL_KeyboardEvent &key); - bool isScalerHotkey(const Common::Event &event); }; #endif |