DINGUX: fix compilation for the opengl branch
Moved events related code to backends/events/dinguxsdl/* and move graphics related code to backends/graphics/dinguxsdl/* Subclass OSystem_POSIX instead of OSystem_SDL svn-id: r53730
This commit is contained in:
parent
b713beed18
commit
74a53df11b
11 changed files with 241 additions and 109 deletions
|
@ -23,12 +23,11 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "backends/platform/dingux/dingux.h"
|
#if defined(DINGUX)
|
||||||
|
|
||||||
|
#include "backends/events/dinguxsdl/dinguxsdl-events.h"
|
||||||
#include "graphics/scaler/aspect.h" // for aspect2Real
|
#include "graphics/scaler/aspect.h" // for aspect2Real
|
||||||
|
|
||||||
#if defined (DINGUX)
|
|
||||||
|
|
||||||
#define PAD_UP SDLK_UP
|
#define PAD_UP SDLK_UP
|
||||||
#define PAD_DOWN SDLK_DOWN
|
#define PAD_DOWN SDLK_DOWN
|
||||||
#define PAD_LEFT SDLK_LEFT
|
#define PAD_LEFT SDLK_LEFT
|
||||||
|
@ -59,7 +58,11 @@ static int mapKey(SDLKey key, SDLMod mod, Uint16 unicode) {
|
||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OSystem_SDL_Dingux::remapKey(SDL_Event &ev, Common::Event &event) {
|
DINGUXSdlEventSource::DINGUXSdlEventSource() : SdlEventSource() {
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DINGUXSdlEventSource::remapKey(SDL_Event &ev, Common::Event &event) {
|
||||||
if (ev.key.keysym.sym == PAD_UP) {
|
if (ev.key.keysym.sym == PAD_UP) {
|
||||||
if (ev.type == SDL_KEYDOWN) {
|
if (ev.type == SDL_KEYDOWN) {
|
||||||
_km.y_vel = -1;
|
_km.y_vel = -1;
|
||||||
|
@ -179,8 +182,8 @@ bool OSystem_SDL_Dingux::remapKey(SDL_Event &ev, Common::Event &event) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_SDL_Dingux::fillMouseEvent(Common::Event &event, int x, int y) {
|
void DINGUXSdlEventSource::fillMouseEvent(Common::Event &event, int x, int y) {
|
||||||
if (_videoMode.mode == GFX_HALF && !_overlayVisible) {
|
if (_grpMan->getVideoMode()->mode == GFX_HALF && !(_grpMan->isOverlayVisible())) {
|
||||||
event.mouse.x = x * 2;
|
event.mouse.x = x * 2;
|
||||||
event.mouse.y = y * 2;
|
event.mouse.y = y * 2;
|
||||||
} else {
|
} else {
|
||||||
|
@ -193,23 +196,31 @@ void OSystem_SDL_Dingux::fillMouseEvent(Common::Event &event, int x, int y) {
|
||||||
_km.y = y;
|
_km.y = y;
|
||||||
|
|
||||||
// Adjust for the screen scaling
|
// Adjust for the screen scaling
|
||||||
if (!_overlayVisible) {
|
if (!(_grpMan->isOverlayVisible())) {
|
||||||
event.mouse.x /= _videoMode.scaleFactor;
|
event.mouse.x /= (_grpMan->getVideoMode())->scaleFactor;
|
||||||
event.mouse.y /= _videoMode.scaleFactor;
|
event.mouse.y /= (_grpMan->getVideoMode())->scaleFactor;
|
||||||
if (_videoMode.aspectRatioCorrection)
|
#if 0
|
||||||
|
if (_grpMan->getVideoMode()->aspectRatioCorrection)
|
||||||
event.mouse.y = aspect2Real(event.mouse.y);
|
event.mouse.y = aspect2Real(event.mouse.y);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_SDL_Dingux::warpMouse(int x, int y) {
|
void DINGUXSdlEventSource::warpMouse(int x, int y) {
|
||||||
if (_mouseCurState.x != x || _mouseCurState.y != y) {
|
int mouse_cur_x = _grpMan->getMouseCurState()->x;
|
||||||
if (_videoMode.mode == GFX_HALF && !_overlayVisible) {
|
int mouse_cur_y = _grpMan->getMouseCurState()->y;
|
||||||
|
|
||||||
|
if ((mouse_cur_x != x) || (mouse_cur_y != y)) {
|
||||||
|
if (_grpMan->getVideoMode()->mode == GFX_HALF && !(_grpMan->isOverlayVisible())) {
|
||||||
x = x / 2;
|
x = x / 2;
|
||||||
y = y / 2;
|
y = y / 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
OSystem_SDL::warpMouse(x, y);
|
SDL_WarpMouse(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
void DINGUXSdlEventSource::setCurrentGraphMan(DINGUXSdlGraphicsManager *_graphicManager) {
|
||||||
|
_grpMan = _graphicManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* DINGUX */
|
47
backends/events/dinguxsdl/dinguxsdl-events.h
Normal file
47
backends/events/dinguxsdl/dinguxsdl-events.h
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
/* ScummVM - Graphic Adventure Engine
|
||||||
|
*
|
||||||
|
* ScummVM is the legal property of its developers, whose names
|
||||||
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
||||||
|
* file distributed with this source distribution.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
*
|
||||||
|
* $URL$
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BACKENDS_EVENTS_SDL_DINGUX_H
|
||||||
|
#define BACKENDS_EVENTS_SDL_DINGUX_H
|
||||||
|
#if defined(DINGUX)
|
||||||
|
|
||||||
|
#include "backends/platform/dingux/dingux.h"
|
||||||
|
#include "backends/events/dinguxsdl/dinguxsdl-events.h"
|
||||||
|
|
||||||
|
class DINGUXSdlEventSource : public SdlEventSource {
|
||||||
|
public:
|
||||||
|
DINGUXSdlEventSource();
|
||||||
|
void setCurrentGraphMan(DINGUXSdlGraphicsManager *_graphicManager);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
DINGUXSdlGraphicsManager *_grpMan;
|
||||||
|
|
||||||
|
bool remapKey(SDL_Event &ev, Common::Event &event);
|
||||||
|
void fillMouseEvent(Common::Event &event, int x, int y);
|
||||||
|
void warpMouse(int x, int y);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* DINGUX */
|
||||||
|
#endif /* BACKENDS_EVENTS_SDL_DINGUX_H */
|
|
@ -23,30 +23,30 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "backends/platform/dingux/dingux.h"
|
|
||||||
|
|
||||||
#include "common/mutex.h"
|
|
||||||
#include "graphics/scaler.h"
|
|
||||||
#include "graphics/scaler/aspect.h"
|
|
||||||
#include "graphics/scaler/downscaler.h"
|
|
||||||
#include "graphics/surface.h"
|
|
||||||
|
|
||||||
#if defined (DINGUX)
|
#if defined (DINGUX)
|
||||||
|
|
||||||
|
#include "backends/graphics/dinguxsdl/dinguxsdl-graphics.h"
|
||||||
|
#include "backends/events/dinguxsdl/dinguxsdl-events.h"
|
||||||
|
#include "graphics/scaler/aspect.h"
|
||||||
|
|
||||||
static const OSystem::GraphicsMode s_supportedGraphicsModes[] = {
|
static const OSystem::GraphicsMode s_supportedGraphicsModes[] = {
|
||||||
{"1x", "Standard", GFX_NORMAL},
|
{"1x", "Standard", GFX_NORMAL},
|
||||||
{0, 0, 0}
|
{0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
int OSystem_SDL_Dingux::getDefaultGraphicsMode() const {
|
DINGUXSdlGraphicsManager::DINGUXSdlGraphicsManager(SdlEventSource *boss) : SdlGraphicsManager(boss) {
|
||||||
return GFX_NORMAL;
|
_evSrc = boss;
|
||||||
}
|
}
|
||||||
|
|
||||||
const OSystem::GraphicsMode *OSystem_SDL_Dingux::getSupportedGraphicsModes() const {
|
const OSystem::GraphicsMode *DINGUXSdlGraphicsManager::getSupportedGraphicsModes() const {
|
||||||
return s_supportedGraphicsModes;
|
return s_supportedGraphicsModes;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OSystem_SDL_Dingux::setGraphicsMode(int mode) {
|
int DINGUXSdlGraphicsManager::getDefaultGraphicsMode() const {
|
||||||
|
return GFX_NORMAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DINGUXSdlGraphicsManager::setGraphicsMode(int mode) {
|
||||||
Common::StackLock lock(_graphicsMutex);
|
Common::StackLock lock(_graphicsMutex);
|
||||||
|
|
||||||
assert(_transactionMode == kTransactionActive);
|
assert(_transactionMode == kTransactionActive);
|
||||||
|
@ -80,7 +80,7 @@ bool OSystem_SDL_Dingux::setGraphicsMode(int mode) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_SDL_Dingux::setGraphicsModeIntern() {
|
void DINGUXSdlGraphicsManager::setGraphicsModeIntern() {
|
||||||
Common::StackLock lock(_graphicsMutex);
|
Common::StackLock lock(_graphicsMutex);
|
||||||
ScalerProc *newScalerProc = 0;
|
ScalerProc *newScalerProc = 0;
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ void OSystem_SDL_Dingux::setGraphicsModeIntern() {
|
||||||
blitCursor();
|
blitCursor();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_SDL_Dingux::initSize(uint w, uint h) {
|
void DINGUXSdlGraphicsManager::initSize(uint w, uint h) {
|
||||||
assert(_transactionMode == kTransactionActive);
|
assert(_transactionMode == kTransactionActive);
|
||||||
|
|
||||||
// Avoid redundant res changes
|
// Avoid redundant res changes
|
||||||
|
@ -121,13 +121,13 @@ void OSystem_SDL_Dingux::initSize(uint w, uint h) {
|
||||||
if (w > 320 || h > 240) {
|
if (w > 320 || h > 240) {
|
||||||
setGraphicsMode(GFX_HALF);
|
setGraphicsMode(GFX_HALF);
|
||||||
setGraphicsModeIntern();
|
setGraphicsModeIntern();
|
||||||
toggleMouseGrab();
|
_evSrc->toggleMouseGrab();
|
||||||
}
|
}
|
||||||
|
|
||||||
_transactionDetails.sizeChanged = true;
|
_transactionDetails.sizeChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_SDL_Dingux::drawMouse() {
|
void DINGUXSdlGraphicsManager::drawMouse() {
|
||||||
if (!_mouseVisible || !_mouseSurface) {
|
if (!_mouseVisible || !_mouseSurface) {
|
||||||
_mouseBackup.x = _mouseBackup.y = _mouseBackup.w = _mouseBackup.h = 0;
|
_mouseBackup.x = _mouseBackup.y = _mouseBackup.w = _mouseBackup.h = 0;
|
||||||
return;
|
return;
|
||||||
|
@ -193,7 +193,7 @@ void OSystem_SDL_Dingux::drawMouse() {
|
||||||
addDirtyRect(dst.x, dst.y, dst.w, dst.h, true);
|
addDirtyRect(dst.x, dst.y, dst.w, dst.h, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_SDL_Dingux::undrawMouse() {
|
void DINGUXSdlGraphicsManager::undrawMouse() {
|
||||||
const int x = _mouseBackup.x;
|
const int x = _mouseBackup.x;
|
||||||
const int y = _mouseBackup.y;
|
const int y = _mouseBackup.y;
|
||||||
|
|
||||||
|
@ -211,7 +211,7 @@ void OSystem_SDL_Dingux::undrawMouse() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_SDL_Dingux::internUpdateScreen() {
|
void DINGUXSdlGraphicsManager::internUpdateScreen() {
|
||||||
SDL_Surface *srcSurf, *origSurf;
|
SDL_Surface *srcSurf, *origSurf;
|
||||||
int height, width;
|
int height, width;
|
||||||
ScalerProc *scalerProc;
|
ScalerProc *scalerProc;
|
||||||
|
@ -409,23 +409,23 @@ void OSystem_SDL_Dingux::internUpdateScreen() {
|
||||||
_mouseNeedsRedraw = false;
|
_mouseNeedsRedraw = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_SDL_Dingux::showOverlay() {
|
void DINGUXSdlGraphicsManager::showOverlay() {
|
||||||
if (_videoMode.mode == GFX_HALF) {
|
if (_videoMode.mode == GFX_HALF) {
|
||||||
_mouseCurState.x = _mouseCurState.x / 2;
|
_mouseCurState.x = _mouseCurState.x / 2;
|
||||||
_mouseCurState.y = _mouseCurState.y / 2;
|
_mouseCurState.y = _mouseCurState.y / 2;
|
||||||
}
|
}
|
||||||
OSystem_SDL::showOverlay();
|
SdlGraphicsManager::showOverlay();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_SDL_Dingux::hideOverlay() {
|
void DINGUXSdlGraphicsManager::hideOverlay() {
|
||||||
if (_videoMode.mode == GFX_HALF) {
|
if (_videoMode.mode == GFX_HALF) {
|
||||||
_mouseCurState.x = _mouseCurState.x * 2;
|
_mouseCurState.x = _mouseCurState.x * 2;
|
||||||
_mouseCurState.y = _mouseCurState.y * 2;
|
_mouseCurState.y = _mouseCurState.y * 2;
|
||||||
}
|
}
|
||||||
OSystem_SDL::hideOverlay();
|
SdlGraphicsManager::hideOverlay();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OSystem_SDL_Dingux::loadGFXMode() {
|
bool DINGUXSdlGraphicsManager::loadGFXMode() {
|
||||||
|
|
||||||
// Forcefully disable aspect ratio correction for games
|
// Forcefully disable aspect ratio correction for games
|
||||||
// which starts with a native 240px height resolution.
|
// which starts with a native 240px height resolution.
|
||||||
|
@ -461,8 +461,46 @@ bool OSystem_SDL_Dingux::loadGFXMode() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return OSystem_SDL::loadGFXMode();
|
return SdlGraphicsManager::loadGFXMode();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DINGUXSdlGraphicsManager::hasFeature(OSystem::Feature f) {
|
||||||
|
return
|
||||||
|
(f == OSystem::kFeatureAspectRatioCorrection) ||
|
||||||
|
(f == OSystem::kFeatureCursorHasPalette);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DINGUXSdlGraphicsManager::setFeatureState(OSystem::Feature f, bool enable) {
|
||||||
|
switch (f) {
|
||||||
|
case OSystem::kFeatureAspectRatioCorrection:
|
||||||
|
setAspectRatioCorrection(enable);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DINGUXSdlGraphicsManager::getFeatureState(OSystem::Feature f) {
|
||||||
|
assert(_transactionMode == kTransactionNone);
|
||||||
|
|
||||||
|
switch (f) {
|
||||||
|
case OSystem::kFeatureAspectRatioCorrection:
|
||||||
|
return _videoMode.aspectRatioCorrection;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SdlGraphicsManager::MousePos* DINGUXSdlGraphicsManager::getMouseCurState() {
|
||||||
|
return &_mouseCurState;
|
||||||
|
}
|
||||||
|
|
||||||
|
SdlGraphicsManager::VideoState* DINGUXSdlGraphicsManager::getVideoMode() {
|
||||||
|
return &_videoMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DINGUXSdlGraphicsManager::isOverlayVisible() {
|
||||||
|
return _overlayVisible;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
69
backends/graphics/dinguxsdl/dinguxsdl-graphics.h
Normal file
69
backends/graphics/dinguxsdl/dinguxsdl-graphics.h
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
/* ScummVM - Graphic Adventure Engine
|
||||||
|
*
|
||||||
|
* ScummVM is the legal property of its developers, whose names
|
||||||
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
||||||
|
* file distributed with this source distribution.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
*
|
||||||
|
* $URL$
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BACKENDS_GRAPHICS_SDL_DINGUX_H
|
||||||
|
#define BACKENDS_GRAPHICS_SDL_DINGUX_H
|
||||||
|
#if defined (DINGUX)
|
||||||
|
|
||||||
|
#include "backends/graphics/sdl/sdl-graphics.h"
|
||||||
|
|
||||||
|
#include "graphics/scaler/aspect.h" // for aspect2Real
|
||||||
|
#include "graphics/scaler/downscaler.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
GFX_HALF = 12
|
||||||
|
};
|
||||||
|
|
||||||
|
class DINGUXSdlGraphicsManager : public SdlGraphicsManager {
|
||||||
|
public:
|
||||||
|
DINGUXSdlGraphicsManager(SdlEventSource *boss);
|
||||||
|
|
||||||
|
bool hasFeature(OSystem::Feature f);
|
||||||
|
void setFeatureState(OSystem::Feature f, bool enable);
|
||||||
|
bool getFeatureState(OSystem::Feature f);
|
||||||
|
int getDefaultGraphicsMode() const;
|
||||||
|
|
||||||
|
void initSize(uint w, uint h);
|
||||||
|
const OSystem::GraphicsMode *getSupportedGraphicsModes() const;
|
||||||
|
bool setGraphicsMode(const char *name);
|
||||||
|
bool setGraphicsMode(int mode);
|
||||||
|
void setGraphicsModeIntern();
|
||||||
|
void internUpdateScreen();
|
||||||
|
void showOverlay();
|
||||||
|
void hideOverlay();
|
||||||
|
bool loadGFXMode();
|
||||||
|
void drawMouse();
|
||||||
|
void undrawMouse();
|
||||||
|
|
||||||
|
SdlGraphicsManager::MousePos *getMouseCurState();
|
||||||
|
SdlGraphicsManager::VideoState *getVideoMode();
|
||||||
|
bool isOverlayVisible();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
SdlEventSource *_evSrc;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* DINGUX */
|
||||||
|
#endif /* BACKENDS_GRAPHICS_SDL_DINGUX_H */
|
|
@ -698,7 +698,7 @@ static void fixupResolutionForAspectRatio(AspectRatio desiredAspectRatio, int &w
|
||||||
bool SdlGraphicsManager::loadGFXMode() {
|
bool SdlGraphicsManager::loadGFXMode() {
|
||||||
_forceFull = true;
|
_forceFull = true;
|
||||||
|
|
||||||
#if !defined(__MAEMO__) && !defined(GP2XWIZ) && !defined(LINUXMOTO)
|
#if !defined(__MAEMO__) && !defined(GP2XWIZ) && !defined(LINUXMOTO) && !defined(DINGUX)
|
||||||
_videoMode.overlayWidth = _videoMode.screenWidth * _videoMode.scaleFactor;
|
_videoMode.overlayWidth = _videoMode.screenWidth * _videoMode.scaleFactor;
|
||||||
_videoMode.overlayHeight = _videoMode.screenHeight * _videoMode.scaleFactor;
|
_videoMode.overlayHeight = _videoMode.screenHeight * _videoMode.scaleFactor;
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ MODULE_OBJS := \
|
||||||
audiocd/default/default-audiocd.o \
|
audiocd/default/default-audiocd.o \
|
||||||
audiocd/sdl/sdl-audiocd.o \
|
audiocd/sdl/sdl-audiocd.o \
|
||||||
events/default/default-events.o \
|
events/default/default-events.o \
|
||||||
|
events/dinguxsdl/dinguxsdl-events.o \
|
||||||
events/gp2xsdl/gp2xsdl-events.o \
|
events/gp2xsdl/gp2xsdl-events.o \
|
||||||
events/linuxmotosdl/linuxmotosdl-events.o \
|
events/linuxmotosdl/linuxmotosdl-events.o \
|
||||||
events/samsungtvsdl/samsungtvsdl-events.o \
|
events/samsungtvsdl/samsungtvsdl-events.o \
|
||||||
|
@ -17,6 +18,7 @@ MODULE_OBJS := \
|
||||||
fs/posix/posix-fs-factory.o \
|
fs/posix/posix-fs-factory.o \
|
||||||
fs/symbian/symbian-fs-factory.o \
|
fs/symbian/symbian-fs-factory.o \
|
||||||
fs/windows/windows-fs-factory.o \
|
fs/windows/windows-fs-factory.o \
|
||||||
|
graphics/dinguxsdl/dinguxsdl-graphics.o \
|
||||||
graphics/gp2xsdl/gp2xsdl-graphics.o \
|
graphics/gp2xsdl/gp2xsdl-graphics.o \
|
||||||
graphics/gp2xwizsdl/gp2xwizsdl-graphics.o \
|
graphics/gp2xwizsdl/gp2xwizsdl-graphics.o \
|
||||||
graphics/linuxmotosdl/linuxmotosdl-graphics.o \
|
graphics/linuxmotosdl/linuxmotosdl-graphics.o \
|
||||||
|
|
|
@ -23,35 +23,25 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "backends/platform/dingux/dingux.h"
|
|
||||||
|
|
||||||
#if defined(DINGUX)
|
#if defined(DINGUX)
|
||||||
|
|
||||||
bool OSystem_SDL_Dingux::hasFeature(Feature f) {
|
#include "backends/platform/dingux/dingux.h"
|
||||||
return
|
#include "backends/events/dinguxsdl/dinguxsdl-events.h"
|
||||||
(f == kFeatureAspectRatioCorrection) ||
|
#include "backends/graphics/dinguxsdl/dinguxsdl-graphics.h"
|
||||||
(f == kFeatureCursorHasPalette);
|
|
||||||
}
|
|
||||||
|
|
||||||
void OSystem_SDL_Dingux::setFeatureState(Feature f, bool enable) {
|
void OSystem_SDL_Dingux::initBackend() {
|
||||||
switch (f) {
|
// Create the events manager
|
||||||
case kFeatureAspectRatioCorrection:
|
if (_eventSource == 0)
|
||||||
setAspectRatioCorrection(enable);
|
_eventSource = new DINGUXSdlEventSource();
|
||||||
break;
|
|
||||||
default:
|
// Create the graphics manager
|
||||||
break;
|
if (_graphicsManager == 0) {
|
||||||
|
_graphicsManager = new DINGUXSdlGraphicsManager(_eventSource);
|
||||||
|
((DINGUXSdlEventSource*)_eventSource)->setCurrentGraphMan((DINGUXSdlGraphicsManager*)_graphicsManager);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
bool OSystem_SDL_Dingux::getFeatureState(Feature f) {
|
// Call parent implementation of this method
|
||||||
assert(_transactionMode == kTransactionNone);
|
OSystem_POSIX::initBackend();
|
||||||
|
|
||||||
switch (f) {
|
|
||||||
case kFeatureAspectRatioCorrection:
|
|
||||||
return _videoMode.aspectRatioCorrection;
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -26,44 +26,21 @@
|
||||||
#ifndef SDL_DINGUX_COMMON_H
|
#ifndef SDL_DINGUX_COMMON_H
|
||||||
#define SDL_DINGUX_COMMON_H
|
#define SDL_DINGUX_COMMON_H
|
||||||
|
|
||||||
#include <SDL.h>
|
|
||||||
|
|
||||||
#include "backends/base-backend.h"
|
|
||||||
#include "backends/platform/sdl/sdl.h"
|
|
||||||
|
|
||||||
#if defined(DINGUX)
|
#if defined(DINGUX)
|
||||||
|
|
||||||
enum {
|
#include <SDL.h>
|
||||||
GFX_HALF = 12
|
#include "backends/base-backend.h"
|
||||||
};
|
#include "backends/platform/sdl/sdl.h"
|
||||||
|
#include "backends/platform/sdl/posix/posix.h"
|
||||||
|
#include "backends/graphics/dinguxsdl/dinguxsdl-graphics.h"
|
||||||
|
#include "backends/events/dinguxsdl/dinguxsdl-events.h"
|
||||||
|
|
||||||
class OSystem_SDL_Dingux : public OSystem_SDL {
|
class OSystem_SDL_Dingux : public OSystem_POSIX {
|
||||||
public:
|
public:
|
||||||
virtual bool hasFeature(Feature f);
|
void initBackend();
|
||||||
virtual void setFeatureState(Feature f, bool enable);
|
|
||||||
virtual bool getFeatureState(Feature f);
|
|
||||||
virtual int getDefaultGraphicsMode() const;
|
|
||||||
|
|
||||||
void initSize(uint w, uint h);
|
|
||||||
const OSystem::GraphicsMode *getSupportedGraphicsModes() const;
|
|
||||||
bool setGraphicsMode(const char *name);
|
|
||||||
bool setGraphicsMode(int mode);
|
|
||||||
void setGraphicsModeIntern();
|
|
||||||
void internUpdateScreen();
|
|
||||||
void showOverlay();
|
|
||||||
void hideOverlay();
|
|
||||||
bool loadGFXMode();
|
|
||||||
void drawMouse();
|
|
||||||
void undrawMouse();
|
|
||||||
void warpMouse(int, int);
|
|
||||||
void fillMouseEvent(Common::Event&, int, int);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual bool remapKey(SDL_Event &ev, Common::Event &event);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif /* DINGUX */
|
||||||
|
#endif /* SDL_DINGUX_COMMON_H */
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
|
@ -24,8 +24,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "backends/platform/dingux/dingux.h"
|
#include "backends/platform/dingux/dingux.h"
|
||||||
#include "backends/plugins/sdl/sdl-provider.h"
|
#include "backends/plugins/posix/posix-provider.h"
|
||||||
//#include "backends/plugins/posix/posix-provider.h"
|
|
||||||
#include "base/main.h"
|
#include "base/main.h"
|
||||||
|
|
||||||
#if defined(DINGUX)
|
#if defined(DINGUX)
|
||||||
|
@ -37,16 +36,17 @@ int main(int argc, char* argv[]) {
|
||||||
g_system = new OSystem_SDL_Dingux();
|
g_system = new OSystem_SDL_Dingux();
|
||||||
assert(g_system);
|
assert(g_system);
|
||||||
|
|
||||||
|
((OSystem_SDL_Dingux *)g_system)->init();
|
||||||
|
|
||||||
#ifdef DYNAMIC_MODULES
|
#ifdef DYNAMIC_MODULES
|
||||||
PluginManager::instance().addPluginProvider(new SDLPluginProvider());
|
PluginManager::instance().addPluginProvider(new POSIXPluginProvider());
|
||||||
// PluginManager::instance().addPluginProvider(new POSIXPluginProvider());
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Invoke the actual ScummVM main entry point:
|
// Invoke the actual ScummVM main entry point:
|
||||||
int res = scummvm_main(argc, argv);
|
int res = scummvm_main(argc, argv);
|
||||||
((OSystem_SDL *)g_system)->deinit();
|
((OSystem_SDL_Dingux *)g_system)->deinit();
|
||||||
return res;
|
|
||||||
|
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -2,9 +2,7 @@ MODULE := backends/platform/dingux
|
||||||
|
|
||||||
MODULE_OBJS := \
|
MODULE_OBJS := \
|
||||||
main.o \
|
main.o \
|
||||||
dingux.o \
|
dingux.o
|
||||||
dingux-events.o \
|
|
||||||
dingux-graphics.o \
|
|
||||||
|
|
||||||
MODULE_DIRS += \
|
MODULE_DIRS += \
|
||||||
backends/platform/dingux/
|
backends/platform/dingux/
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if defined(UNIX) && !defined(MACOSX) && !defined(SAMSUNGTV) && !defined(LINUXMOTO) && !defined(GP2XWIZ) && !defined(GP2X)
|
#if defined(UNIX) && !defined(MACOSX) && !defined(SAMSUNGTV) && !defined(LINUXMOTO) && !defined(GP2XWIZ) && !defined(GP2X) && !defined(DINGUX)
|
||||||
|
|
||||||
#include "backends/platform/sdl/posix/posix.h"
|
#include "backends/platform/sdl/posix/posix.h"
|
||||||
#include "backends/plugins/sdl/sdl-provider.h"
|
#include "backends/plugins/sdl/sdl-provider.h"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue