aboutsummaryrefslogtreecommitdiff
path: root/backends
diff options
context:
space:
mode:
authorD G Turner2012-10-12 17:03:32 +0100
committerD G Turner2012-10-12 17:03:32 +0100
commit151b7beb47ec4b964862d6779bd48e3a33482bbd (patch)
tree867717c5266d0908d95edd82560599be20a4ede9 /backends
parent80af0e239473f85c49cc2da3c848dfcde41d4a37 (diff)
parent2b55837650c4229dc3d75b660cecfc7a3292e5e0 (diff)
downloadscummvm-rg350-151b7beb47ec4b964862d6779bd48e3a33482bbd.tar.gz
scummvm-rg350-151b7beb47ec4b964862d6779bd48e3a33482bbd.tar.bz2
scummvm-rg350-151b7beb47ec4b964862d6779bd48e3a33482bbd.zip
Merge branch 'master' into teenagentRefactor
Conflicts: engines/teenagent/callbacks.cpp
Diffstat (limited to 'backends')
-rw-r--r--backends/events/gph/gph-events.cpp152
-rw-r--r--backends/events/gph/gph-events.h7
-rw-r--r--backends/events/openpandora/op-events.cpp33
-rw-r--r--backends/events/sdl/sdl-events.cpp2
-rw-r--r--backends/events/sdl/sdl-events.h2
-rw-r--r--backends/events/webossdl/webossdl-events.h6
-rw-r--r--backends/graphics/dinguxsdl/dinguxsdl-graphics.cpp4
-rw-r--r--backends/graphics/gph/gph-graphics.cpp8
-rw-r--r--backends/graphics/opengl/opengl-graphics.cpp14
-rw-r--r--backends/graphics/openglsdl/openglsdl-graphics.cpp2
-rw-r--r--backends/graphics/openpandora/op-graphics.cpp43
-rw-r--r--backends/graphics/openpandora/op-graphics.h23
-rw-r--r--backends/midi/coreaudio.cpp31
-rw-r--r--backends/midi/sndio.cpp4
-rw-r--r--backends/mixer/sdl13/sdl13-mixer.cpp4
-rw-r--r--backends/platform/android/texture.cpp63
-rw-r--r--backends/platform/bada/application.cpp2
-rw-r--r--backends/platform/bada/sscanf.cpp2
-rw-r--r--backends/platform/gph/gph-backend.cpp49
-rw-r--r--backends/platform/gph/gph-main.cpp4
-rw-r--r--backends/platform/gph/gph.h9
-rw-r--r--backends/platform/iphone/iphone_video.mm13
-rw-r--r--backends/platform/iphone/osys_video.mm4
-rw-r--r--backends/platform/maemo/debian/changelog2
-rw-r--r--backends/platform/maemo/debian/control2
-rwxr-xr-xbackends/platform/maemo/debian/rules4
-rw-r--r--backends/platform/openpandora/op-backend.cpp98
-rw-r--r--backends/platform/openpandora/op-options.cpp5
-rw-r--r--backends/platform/openpandora/op-sdl.h2
-rw-r--r--backends/platform/sdl/macosx/macosx.cpp2
-rw-r--r--backends/platform/sdl/macosx/macosx.h2
-rw-r--r--backends/platform/sdl/main.cpp66
-rw-r--r--backends/platform/sdl/module.mk1
-rw-r--r--backends/platform/webos/webos.cpp20
-rw-r--r--backends/platform/webos/webos.h3
-rw-r--r--backends/platform/wii/osystem.cpp2
-rw-r--r--backends/platform/wii/osystem.h2
-rw-r--r--backends/platform/wii/osystem_gfx.cpp28
-rw-r--r--backends/taskbar/win32/mingw-compat.h4
-rw-r--r--backends/timer/bada/timer.cpp230
-rw-r--r--backends/timer/bada/timer.h124
-rw-r--r--backends/timer/default/default-timer.cpp2
42 files changed, 509 insertions, 571 deletions
diff --git a/backends/events/gph/gph-events.cpp b/backends/events/gph/gph-events.cpp
index b4e106b790..91118d36c1 100644
--- a/backends/events/gph/gph-events.cpp
+++ b/backends/events/gph/gph-events.cpp
@@ -161,49 +161,6 @@ GPHEventSource::GPHEventSource()
: _buttonStateL(false) {
}
-void GPHEventSource::moveStick() {
- bool stickBtn[32];
-
- memcpy(stickBtn, _stickBtn, sizeof(stickBtn));
-
- if ((stickBtn[0]) || (stickBtn[2]) || (stickBtn[4]) || (stickBtn[6]))
- stickBtn[1] = stickBtn[3] = stickBtn[5] = stickBtn[7] = 0;
-
- if ((stickBtn[1]) || (stickBtn[2]) || (stickBtn[3])) {
- if (_km.x_down_count != 2) {
- _km.x_vel = -1;
- _km.x_down_count = 1;
- } else
- _km.x_vel = -4;
- } else if ((stickBtn[5]) || (stickBtn[6]) || (stickBtn[7])) {
- if (_km.x_down_count != 2) {
- _km.x_vel = 1;
- _km.x_down_count = 1;
- } else
- _km.x_vel = 4;
- } else {
- _km.x_vel = 0;
- _km.x_down_count = 0;
- }
-
- if ((stickBtn[0]) || (stickBtn[1]) || (stickBtn[7])) {
- if (_km.y_down_count != 2) {
- _km.y_vel = -1;
- _km.y_down_count = 1;
- } else
- _km.y_vel = -4;
- } else if ((stickBtn[3]) || (stickBtn[4]) || (stickBtn[5])) {
- if (_km.y_down_count != 2) {
- _km.y_vel = 1;
- _km.y_down_count = 1;
- } else
- _km.y_vel = 4;
- } else {
- _km.y_vel = 0;
- _km.y_down_count = 0;
- }
-}
-
/* Custom handleMouseButtonDown/handleMouseButtonUp to deal with 'Tap Mode' for the touchscreen */
bool GPHEventSource::handleMouseButtonDown(SDL_Event &ev, Common::Event &event) {
@@ -268,19 +225,110 @@ bool GPHEventSource::handleMouseButtonUp(SDL_Event &ev, Common::Event &event) {
bool GPHEventSource::handleJoyButtonDown(SDL_Event &ev, Common::Event &event) {
- _stickBtn[ev.jbutton.button] = 1;
event.kbd.flags = 0;
switch (ev.jbutton.button) {
case BUTTON_UP:
- case BUTTON_UPLEFT:
- case BUTTON_LEFT:
- case BUTTON_DOWNLEFT:
+ if (_km.y_down_count != 2) {
+ _km.y_vel = -1;
+ _km.y_down_count = 1;
+ } else {
+ _km.y_vel = -4;
+ }
+ event.type = Common::EVENT_MOUSEMOVE;
+ processMouseEvent(event, _km.x, _km.y);
+ break;
case BUTTON_DOWN:
- case BUTTON_DOWNRIGHT:
+ if (_km.y_down_count != 2) {
+ _km.y_vel = 1;
+ _km.y_down_count = 1;
+ } else {
+ _km.y_vel = 4;
+ }
+ event.type = Common::EVENT_MOUSEMOVE;
+ processMouseEvent(event, _km.x, _km.y);
+ break;
+ case BUTTON_LEFT:
+ if (_km.x_down_count != 2) {
+ _km.x_vel = -1;
+ _km.x_down_count = 1;
+ } else {
+ _km.x_vel = -4;
+ }
+ event.type = Common::EVENT_MOUSEMOVE;
+ processMouseEvent(event, _km.x, _km.y);
+ break;
case BUTTON_RIGHT:
+ if (_km.x_down_count != 3) {
+ _km.x_vel = 1;
+ _km.x_down_count = 1;
+ } else {
+ _km.x_vel = 4;
+ }
+ event.type = Common::EVENT_MOUSEMOVE;
+ processMouseEvent(event, _km.x, _km.y);
+ break;
+ case BUTTON_UPLEFT:
+ if (_km.x_down_count != 2) {
+ _km.x_vel = -1;
+ _km.x_down_count = 1;
+ } else {
+ _km.x_vel = -4;
+ }
+ if (_km.y_down_count != 2) {
+ _km.y_vel = -1;
+ _km.y_down_count = 1;
+ } else {
+ _km.y_vel = -4;
+ }
+ event.type = Common::EVENT_MOUSEMOVE;
+ processMouseEvent(event, _km.x, _km.y);
+ break;
case BUTTON_UPRIGHT:
- moveStick();
+ if (_km.x_down_count != 2) {
+ _km.x_vel = 1;
+ _km.x_down_count = 1;
+ } else {
+ _km.x_vel = 4;
+ }
+ if (_km.y_down_count != 2) {
+ _km.y_vel = -1;
+ _km.y_down_count = 1;
+ } else {
+ _km.y_vel = -4;
+ }
+ event.type = Common::EVENT_MOUSEMOVE;
+ processMouseEvent(event, _km.x, _km.y);
+ break;
+ case BUTTON_DOWNLEFT:
+ if (_km.x_down_count != 2) {
+ _km.x_vel = -1;
+ _km.x_down_count = 1;
+ } else {
+ _km.x_vel = -4;
+ }
+ if (_km.y_down_count != 2) {
+ _km.y_vel = 1;
+ _km.y_down_count = 1;
+ } else {
+ _km.y_vel = 4;
+ }
+ event.type = Common::EVENT_MOUSEMOVE;
+ processMouseEvent(event, _km.x, _km.y);
+ break;
+ case BUTTON_DOWNRIGHT:
+ if (_km.x_down_count != 2) {
+ _km.x_vel = 1;
+ _km.x_down_count = 1;
+ } else {
+ _km.x_vel = 4;
+ }
+ if (_km.y_down_count != 2) {
+ _km.y_vel = 1;
+ _km.y_down_count = 1;
+ } else {
+ _km.y_vel = 4;
+ }
event.type = Common::EVENT_MOUSEMOVE;
processMouseEvent(event, _km.x, _km.y);
break;
@@ -391,7 +439,6 @@ bool GPHEventSource::handleJoyButtonDown(SDL_Event &ev, Common::Event &event) {
bool GPHEventSource::handleJoyButtonUp(SDL_Event &ev, Common::Event &event) {
- _stickBtn[ev.jbutton.button] = 0;
event.kbd.flags = 0;
switch (ev.jbutton.button) {
@@ -403,7 +450,10 @@ bool GPHEventSource::handleJoyButtonUp(SDL_Event &ev, Common::Event &event) {
case BUTTON_DOWNRIGHT:
case BUTTON_RIGHT:
case BUTTON_UPRIGHT:
- moveStick();
+ _km.y_vel = 0;
+ _km.y_down_count = 0;
+ _km.x_vel = 0;
+ _km.x_down_count = 0;
event.type = Common::EVENT_MOUSEMOVE;
processMouseEvent(event, _km.x, _km.y);
break;
diff --git a/backends/events/gph/gph-events.h b/backends/events/gph/gph-events.h
index 7672bffed2..3b1e6f090a 100644
--- a/backends/events/gph/gph-events.h
+++ b/backends/events/gph/gph-events.h
@@ -34,18 +34,11 @@ public:
GPHEventSource();
protected:
- bool _stickBtn[32];
-
/**
* Button state for L button modifier
*/
bool _buttonStateL;
- /**
- * Handles the stick movement
- */
- void moveStick();
-
bool handleJoyButtonDown(SDL_Event &ev, Common::Event &event);
bool handleJoyButtonUp(SDL_Event &ev, Common::Event &event);
bool handleMouseButtonDown(SDL_Event &ev, Common::Event &event);
diff --git a/backends/events/openpandora/op-events.cpp b/backends/events/openpandora/op-events.cpp
index c1d6362fcb..fc63cdf74f 100644
--- a/backends/events/openpandora/op-events.cpp
+++ b/backends/events/openpandora/op-events.cpp
@@ -44,7 +44,8 @@ enum {
/* Touchscreen TapMode */
TAPMODE_LEFT = 0,
TAPMODE_RIGHT = 1,
- TAPMODE_HOVER = 2
+ TAPMODE_HOVER = 2,
+ TAPMODE_HOVER_DPAD = 3
};
OPEventSource::OPEventSource()
@@ -63,6 +64,8 @@ bool OPEventSource::handleMouseButtonDown(SDL_Event &ev, Common::Event &event) {
event.type = Common::EVENT_RBUTTONDOWN;
else if (OP::tapmodeLevel == TAPMODE_HOVER) /* TAPMODE_HOVER = Hover (No Click) Tap Mode */
event.type = Common::EVENT_MOUSEMOVE;
+ else if (OP::tapmodeLevel == TAPMODE_HOVER_DPAD) /* TAPMODE_HOVER_DPAD = Hover (DPad Clicks) Tap Mode */
+ event.type = Common::EVENT_MOUSEMOVE;
else
event.type = Common::EVENT_LBUTTONDOWN; /* For normal mice etc. */
} else if (ev.button.button == SDL_BUTTON_RIGHT)
@@ -95,6 +98,8 @@ bool OPEventSource::handleMouseButtonUp(SDL_Event &ev, Common::Event &event) {
event.type = Common::EVENT_RBUTTONUP;
else if (OP::tapmodeLevel == TAPMODE_HOVER) /* TAPMODE_HOVER = Hover (No Click) Tap Mode */
event.type = Common::EVENT_MOUSEMOVE;
+ else if (OP::tapmodeLevel == TAPMODE_HOVER_DPAD) /* TAPMODE_HOVER_DPAD = Hover (DPad Clicks) Tap Mode */
+ event.type = Common::EVENT_MOUSEMOVE;
else
event.type = Common::EVENT_LBUTTONUP; /* For normal mice etc. */
} else if (ev.button.button == SDL_BUTTON_RIGHT)
@@ -117,6 +122,30 @@ bool OPEventSource::handleMouseButtonUp(SDL_Event &ev, Common::Event &event) {
bool OPEventSource::remapKey(SDL_Event &ev, Common::Event &event) {
+ if (OP::tapmodeLevel == TAPMODE_HOVER_DPAD) {
+ switch (ev.key.keysym.sym) {
+ case SDLK_LEFT:
+ event.type = (ev.type == SDL_KEYDOWN) ? Common::EVENT_LBUTTONDOWN : Common::EVENT_LBUTTONUP;
+ processMouseEvent(event, _km.x, _km.y);
+ return true;
+ break;
+ case SDLK_RIGHT:
+ event.type = (ev.type == SDL_KEYDOWN) ? Common::EVENT_RBUTTONDOWN : Common::EVENT_RBUTTONUP;
+ processMouseEvent(event, _km.x, _km.y);
+ return true;
+ break;
+#if defined(SDL_BUTTON_MIDDLE)
+ case SDLK_UP:
+ event.type = (ev.type == SDL_KEYDOWN) ? Common::EVENT_MBUTTONDOWN : Common::EVENT_MBUTTONUP;
+ processMouseEvent(event, _km.x, _km.y);
+ return true;
+ break;
+#endif
+ default:
+ break;
+ }
+ }
+
if (ev.type == SDL_KEYDOWN) {
switch (ev.key.keysym.sym) {
case SDLK_HOME:
@@ -141,6 +170,8 @@ bool OPEventSource::remapKey(SDL_Event &ev, Common::Event &event) {
g_system->displayMessageOnOSD(_("Touchscreen 'Tap Mode' - Right Click"));
} else if (OP::tapmodeLevel == TAPMODE_HOVER) {
g_system->displayMessageOnOSD(_("Touchscreen 'Tap Mode' - Hover (No Click)"));
+ } else if (OP::tapmodeLevel == TAPMODE_HOVER_DPAD) {
+ g_system->displayMessageOnOSD(_("Touchscreen 'Tap Mode' - Hover (DPad Clicks)"));
}
break;
case SDLK_RSHIFT:
diff --git a/backends/events/sdl/sdl-events.cpp b/backends/events/sdl/sdl-events.cpp
index f94171646a..0ca5bbb059 100644
--- a/backends/events/sdl/sdl-events.cpp
+++ b/backends/events/sdl/sdl-events.cpp
@@ -191,6 +191,8 @@ void SdlEventSource::SDLModToOSystemKeyFlags(SDLMod mod, Common::Event &event) {
#endif
if (mod & KMOD_CTRL)
event.kbd.flags |= Common::KBD_CTRL;
+ if (mod & KMOD_META)
+ event.kbd.flags |= Common::KBD_META;
// Sticky flags
if (mod & KMOD_NUM)
diff --git a/backends/events/sdl/sdl-events.h b/backends/events/sdl/sdl-events.h
index 2ba88c702b..ca4835126f 100644
--- a/backends/events/sdl/sdl-events.h
+++ b/backends/events/sdl/sdl-events.h
@@ -116,7 +116,7 @@ protected:
//@}
/**
- * Assigns the mouse coords to the mouse event. Furthermore notify the
+ * Assigns the mouse coords to the mouse event. Furthermore notify the
* graphics manager about the position change.
*/
virtual void processMouseEvent(Common::Event &event, int x, int y);
diff --git a/backends/events/webossdl/webossdl-events.h b/backends/events/webossdl/webossdl-events.h
index 99ed3105f8..1ba5c6fcbf 100644
--- a/backends/events/webossdl/webossdl-events.h
+++ b/backends/events/webossdl/webossdl-events.h
@@ -73,10 +73,10 @@ protected:
// The current mouse position on the screen.
int _curX, _curY;
-
+
// The current screen dimensions
int _screenX, _screenY;
-
+
// The drag distance for linear gestures
int _swipeDistX, _swipeDistY;
@@ -107,7 +107,7 @@ protected:
virtual bool handleMouseButtonUp(SDL_Event &ev, Common::Event &event);
virtual bool handleMouseMotion(SDL_Event &ev, Common::Event &event);
virtual bool pollEvent(Common::Event &event);
-
+
// Utility functions
void calculateDimensions();
};
diff --git a/backends/graphics/dinguxsdl/dinguxsdl-graphics.cpp b/backends/graphics/dinguxsdl/dinguxsdl-graphics.cpp
index 205dcfdbec..bd87c9fafd 100644
--- a/backends/graphics/dinguxsdl/dinguxsdl-graphics.cpp
+++ b/backends/graphics/dinguxsdl/dinguxsdl-graphics.cpp
@@ -432,7 +432,7 @@ bool DINGUXSdlGraphicsManager::loadGFXMode() {
// Forcefully disable aspect ratio correction for games
// which starts with a native 240px height resolution.
// This fixes games with weird resolutions, like MM Nes (256x240)
- if(_videoMode.screenHeight == 240) {
+ if (_videoMode.screenHeight == 240) {
_videoMode.aspectRatioCorrection = false;
}
@@ -479,7 +479,7 @@ void DINGUXSdlGraphicsManager::setFeatureState(OSystem::Feature f, bool enable)
case OSystem::kFeatureCursorPalette:
_cursorPaletteDisabled = !enable;
blitCursor();
- break;
+ break;
default:
break;
}
diff --git a/backends/graphics/gph/gph-graphics.cpp b/backends/graphics/gph/gph-graphics.cpp
index 8521e88eaf..92553564bf 100644
--- a/backends/graphics/gph/gph-graphics.cpp
+++ b/backends/graphics/gph/gph-graphics.cpp
@@ -486,7 +486,13 @@ bool GPHGraphicsManager::loadGFXMode() {
if (_videoMode.aspectRatioCorrection)
_videoMode.overlayHeight = real2Aspect(_videoMode.overlayHeight);
}
- return SurfaceSdlGraphicsManager::loadGFXMode();
+ SurfaceSdlGraphicsManager::loadGFXMode();
+
+ // The old GP2X hacked SDL needs this after any call to SDL_SetVideoMode
+ // and it does not hurt other devices.
+ SDL_ShowCursor(SDL_DISABLE);
+
+ return true;
}
bool GPHGraphicsManager::hasFeature(OSystem::Feature f) {
diff --git a/backends/graphics/opengl/opengl-graphics.cpp b/backends/graphics/opengl/opengl-graphics.cpp
index dce902d894..48e2663d44 100644
--- a/backends/graphics/opengl/opengl-graphics.cpp
+++ b/backends/graphics/opengl/opengl-graphics.cpp
@@ -902,7 +902,7 @@ void OpenGLGraphicsManager::getGLPixelFormat(Graphics::PixelFormat pixelFormat,
bpp = 4;
intFormat = GL_RGBA;
glFormat = GL_RGBA;
- gltype = GL_UNSIGNED_BYTE;
+ gltype = GL_UNSIGNED_INT_8_8_8_8;
} else if (pixelFormat == Graphics::PixelFormat(3, 8, 8, 8, 0, 16, 8, 0, 0)) { // RGB888
bpp = 3;
intFormat = GL_RGB;
@@ -918,11 +918,6 @@ void OpenGLGraphicsManager::getGLPixelFormat(Graphics::PixelFormat pixelFormat,
intFormat = GL_RGBA;
glFormat = GL_RGBA;
gltype = GL_UNSIGNED_SHORT_5_5_5_1;
- } else if (pixelFormat == Graphics::PixelFormat(2, 5, 5, 5, 0, 10, 5, 0, 0)) { // RGB555
- bpp = 2;
- intFormat = GL_RGB;
- glFormat = GL_BGRA;
- gltype = GL_UNSIGNED_SHORT_1_5_5_5_REV;
} else if (pixelFormat == Graphics::PixelFormat(2, 4, 4, 4, 4, 12, 8, 4, 0)) { // RGBA4444
bpp = 2;
intFormat = GL_RGBA;
@@ -936,6 +931,13 @@ void OpenGLGraphicsManager::getGLPixelFormat(Graphics::PixelFormat pixelFormat,
glFormat = GL_RGB;
gltype = GL_UNSIGNED_BYTE;
#ifndef USE_GLES
+ } else if (pixelFormat == Graphics::PixelFormat(2, 5, 5, 5, 0, 10, 5, 0, 0)) { // RGB555
+ // GL_BGRA does not exist in every GLES implementation so should not be configured if
+ // USE_GLES is set.
+ bpp = 2;
+ intFormat = GL_RGB;
+ glFormat = GL_BGRA;
+ gltype = GL_UNSIGNED_SHORT_1_5_5_5_REV;
} else if (pixelFormat == Graphics::PixelFormat(4, 8, 8, 8, 8, 16, 8, 0, 24)) { // ARGB8888
bpp = 4;
intFormat = GL_RGBA;
diff --git a/backends/graphics/openglsdl/openglsdl-graphics.cpp b/backends/graphics/openglsdl/openglsdl-graphics.cpp
index 67041ae17b..fed02ef22e 100644
--- a/backends/graphics/openglsdl/openglsdl-graphics.cpp
+++ b/backends/graphics/openglsdl/openglsdl-graphics.cpp
@@ -665,7 +665,7 @@ void OpenGLSdlGraphicsManager::notifyResize(const uint width, const uint height)
void OpenGLSdlGraphicsManager::transformMouseCoordinates(Common::Point &point) {
adjustMousePosition(point.x, point.y);
}
-
+
void OpenGLSdlGraphicsManager::notifyMousePos(Common::Point mouse) {
setMousePosition(mouse.x, mouse.y);
}
diff --git a/backends/graphics/openpandora/op-graphics.cpp b/backends/graphics/openpandora/op-graphics.cpp
index 5f0301a0c8..f371081fde 100644
--- a/backends/graphics/openpandora/op-graphics.cpp
+++ b/backends/graphics/openpandora/op-graphics.cpp
@@ -26,28 +26,59 @@
#include "backends/graphics/openpandora/op-graphics.h"
#include "backends/events/openpandora/op-events.h"
-//#include "backends/platform/openpandora/op-sdl.h"
#include "graphics/scaler/aspect.h"
#include "common/mutex.h"
#include "common/textconsole.h"
+static SDL_Cursor *hiddenCursor;
+
OPGraphicsManager::OPGraphicsManager(SdlEventSource *sdlEventSource)
: SurfaceSdlGraphicsManager(sdlEventSource) {
}
bool OPGraphicsManager::loadGFXMode() {
- /* 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 ;)
+
+ 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 ;)).
*/
- _videoMode.overlayWidth = 640;
- _videoMode.overlayHeight = 480;
+ SDL_ShowCursor(SDL_ENABLE);
+ SDL_SetCursor(hiddenCursor);
+
_videoMode.fullscreen = true;
+ _videoMode.overlayWidth = _videoMode.screenWidth * _videoMode.scaleFactor;
+ _videoMode.overlayHeight = _videoMode.screenHeight * _videoMode.scaleFactor;
+
if (_videoMode.screenHeight != 200 && _videoMode.screenHeight != 400)
_videoMode.aspectRatioCorrection = false;
+ if (_videoMode.aspectRatioCorrection)
+ _videoMode.overlayHeight = real2Aspect(_videoMode.overlayHeight);
+
+ _videoMode.hardwareWidth = _videoMode.screenWidth * _videoMode.scaleFactor;
+ _videoMode.hardwareHeight = effectiveScreenHeight();
+
return SurfaceSdlGraphicsManager::loadGFXMode();
}
+void OPGraphicsManager::unloadGFXMode() {
+
+ uint8_t hiddenCursorData = 0;
+ hiddenCursor = SDL_CreateCursor(&hiddenCursorData, &hiddenCursorData, 8, 1, 0, 0);
+
+ // Free the hidden SDL cursor created in loadGFXMode
+ SDL_FreeCursor(hiddenCursor);
+
+ SurfaceSdlGraphicsManager::unloadGFXMode();
+}
+
#endif
diff --git a/backends/graphics/openpandora/op-graphics.h b/backends/graphics/openpandora/op-graphics.h
index 0b3eeae8ec..2e3d63e3ad 100644
--- a/backends/graphics/openpandora/op-graphics.h
+++ b/backends/graphics/openpandora/op-graphics.h
@@ -24,7 +24,6 @@
#define BACKENDS_GRAPHICS_OP_H
#include "backends/graphics/surfacesdl/surfacesdl-graphics.h"
-#include "graphics/scaler/aspect.h" // for aspect2Real
#include "graphics/scaler/downscaler.h"
enum {
@@ -35,28 +34,8 @@ class OPGraphicsManager : public SurfaceSdlGraphicsManager {
public:
OPGraphicsManager(SdlEventSource *sdlEventSource);
-// 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 Graphics::PixelFormat *format = NULL);
-// 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();
-// virtual void warpMouse(int x, int y);
-
-// SurfaceSdlGraphicsManager::MousePos *getMouseCurState();
-// SurfaceSdlGraphicsManager::VideoState *getVideoMode();
-
-// virtual void adjustMouseEvent(const Common::Event &event);
+ void unloadGFXMode();
};
#endif /* BACKENDS_GRAPHICS_OP_H */
diff --git a/backends/midi/coreaudio.cpp b/backends/midi/coreaudio.cpp
index 43c801287d..94262d0d92 100644
--- a/backends/midi/coreaudio.cpp
+++ b/backends/midi/coreaudio.cpp
@@ -172,10 +172,15 @@ int MidiDriver_CORE::open() {
// Load custom soundfont, if specified
if (ConfMan.hasKey("soundfont")) {
- FSRef fsref;
- FSSpec fsSpec;
const char *soundfont = ConfMan.get("soundfont").c_str();
+ // TODO: We should really check whether the file contains an
+ // actual soundfont...
+
+#if USE_DEPRECATED_COREAUDIO_API
+ // Before 10.5, we need to use kMusicDeviceProperty_SoundBankFSSpec
+ FSRef fsref;
+ FSSpec fsSpec;
err = FSPathMakeRef ((const byte *)soundfont, &fsref, NULL);
if (err == noErr) {
@@ -183,8 +188,6 @@ int MidiDriver_CORE::open() {
}
if (err == noErr) {
- // TODO: We should really check here whether the file contains an
- // actual soundfont...
err = AudioUnitSetProperty (
_synth,
kMusicDeviceProperty_SoundBankFSSpec, kAudioUnitScope_Global,
@@ -192,9 +195,27 @@ int MidiDriver_CORE::open() {
&fsSpec, sizeof(fsSpec)
);
}
+#else
+ // kMusicDeviceProperty_SoundBankFSSpec is present on 10.6+, but broken
+ // kMusicDeviceProperty_SoundBankURL was added in 10.5 as a replacement
+ CFURLRef url = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (const UInt8 *)soundfont, strlen(soundfont), false);
+
+ if (url) {
+ err = AudioUnitSetProperty (
+ _synth,
+ kMusicDeviceProperty_SoundBankURL, kAudioUnitScope_Global,
+ 0,
+ &url, sizeof(url)
+ );
+
+ CFRelease(url);
+ } else {
+ warning("Failed to allocate CFURLRef from '%s'", soundfont);
+ }
+#endif
if (err != noErr)
- warning("Failed loading custom sound font '%s' (error %ld)\n", soundfont, (long)err);
+ error("Failed loading custom sound font '%s' (error %ld)", soundfont, (long)err);
}
#ifdef COREAUDIO_DISABLE_REVERB
diff --git a/backends/midi/sndio.cpp b/backends/midi/sndio.cpp
index 21c9ea4fec..a065a658e1 100644
--- a/backends/midi/sndio.cpp
+++ b/backends/midi/sndio.cpp
@@ -81,7 +81,7 @@ void MidiDriver_Sndio::send(uint32 b) {
if (!hdl)
return;
- buf[0] = b & 0xff;
+ buf[0] = b & 0xff;
buf[1] = (b >> 8) & 0xff;
buf[2] = (b >> 16) & 0xff;
buf[3] = (b >> 24) & 0xff;
@@ -101,7 +101,7 @@ void MidiDriver_Sndio::send(uint32 b) {
void MidiDriver_Sndio::sysEx(const byte *msg, uint16 length) {
if (!hdl)
return;
-
+
unsigned char buf[266];
assert(length + 2 <= ARRAYSIZE(buf));
diff --git a/backends/mixer/sdl13/sdl13-mixer.cpp b/backends/mixer/sdl13/sdl13-mixer.cpp
index 84777c8bab..24d3434fde 100644
--- a/backends/mixer/sdl13/sdl13-mixer.cpp
+++ b/backends/mixer/sdl13/sdl13-mixer.cpp
@@ -69,13 +69,13 @@ void Sdl13MixerManager::init() {
warning("Could not open audio device: %s", SDL_GetError());
_mixer = new Audio::MixerImpl(g_system, desired.freq);
- assert(_mixer);
+ assert(_mixer);
_mixer->setReady(false);
} else {
debug(1, "Output sample rate: %d Hz", _obtained.freq);
_mixer = new Audio::MixerImpl(g_system, _obtained.freq);
- assert(_mixer);
+ assert(_mixer);
_mixer->setReady(true);
startAudio();
diff --git a/backends/platform/android/texture.cpp b/backends/platform/android/texture.cpp
index 95c96e0d25..b174e93191 100644
--- a/backends/platform/android/texture.cpp
+++ b/backends/platform/android/texture.cpp
@@ -52,9 +52,6 @@
// Supported GL extensions
static bool npot_supported = false;
-#ifdef GL_OES_draw_texture
-static bool draw_tex_supported = false;
-#endif
static inline GLfixed xdiv(int numerator, int denominator) {
assert(numerator < (1 << 16));
@@ -85,11 +82,6 @@ void GLESBaseTexture::initGLExtensions() {
if (token == "GL_ARB_texture_non_power_of_two")
npot_supported = true;
-
-#ifdef GL_OES_draw_texture
- if (token == "GL_OES_draw_texture")
- draw_tex_supported = true;
-#endif
}
}
@@ -180,45 +172,28 @@ void GLESBaseTexture::allocBuffer(GLuint w, GLuint h) {
void GLESBaseTexture::drawTexture(GLshort x, GLshort y, GLshort w, GLshort h) {
GLCALL(glBindTexture(GL_TEXTURE_2D, _texture_name));
-#ifdef GL_OES_draw_texture
- // Great extension, but only works under specific conditions.
- // Still a work-in-progress - disabled for now.
- if (false && draw_tex_supported && !hasPalette()) {
- //GLCALL(glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE));
- const GLint crop[4] = { 0, _surface.h, _surface.w, -_surface.h };
+ const GLfixed tex_width = xdiv(_surface.w, _texture_width);
+ const GLfixed tex_height = xdiv(_surface.h, _texture_height);
+ const GLfixed texcoords[] = {
+ 0, 0,
+ tex_width, 0,
+ 0, tex_height,
+ tex_width, tex_height,
+ };
- GLCALL(glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, crop));
+ GLCALL(glTexCoordPointer(2, GL_FIXED, 0, texcoords));
- // Android GLES bug?
- GLCALL(glColor4ub(0xff, 0xff, 0xff, 0xff));
+ const GLshort vertices[] = {
+ x, y,
+ x + w, y,
+ x, y + h,
+ x + w, y + h,
+ };
- GLCALL(glDrawTexiOES(x, y, 0, w, h));
- } else
-#endif
- {
- const GLfixed tex_width = xdiv(_surface.w, _texture_width);
- const GLfixed tex_height = xdiv(_surface.h, _texture_height);
- const GLfixed texcoords[] = {
- 0, 0,
- tex_width, 0,
- 0, tex_height,
- tex_width, tex_height,
- };
-
- GLCALL(glTexCoordPointer(2, GL_FIXED, 0, texcoords));
-
- const GLshort vertices[] = {
- x, y,
- x + w, y,
- x, y + h,
- x + w, y + h,
- };
-
- GLCALL(glVertexPointer(2, GL_SHORT, 0, vertices));
-
- assert(ARRAYSIZE(vertices) == ARRAYSIZE(texcoords));
- GLCALL(glDrawArrays(GL_TRIANGLE_STRIP, 0, ARRAYSIZE(vertices) / 2));
- }
+ GLCALL(glVertexPointer(2, GL_SHORT, 0, vertices));
+
+ assert(ARRAYSIZE(vertices) == ARRAYSIZE(texcoords));
+ GLCALL(glDrawArrays(GL_TRIANGLE_STRIP, 0, ARRAYSIZE(vertices) / 2));
clearDirty();
}
diff --git a/backends/platform/bada/application.cpp b/backends/platform/bada/application.cpp
index ba8e544983..e761649245 100644
--- a/backends/platform/bada/application.cpp
+++ b/backends/platform/bada/application.cpp
@@ -103,7 +103,7 @@ void BadaScummVM::pauseGame(bool pause) {
if (pause && g_engine && !g_engine->isPaused()) {
_appForm->pushKey(Common::KEYCODE_SPACE);
}
-
+
if (g_system) {
((BadaSystem *)g_system)->setMute(pause);
}
diff --git a/backends/platform/bada/sscanf.cpp b/backends/platform/bada/sscanf.cpp
index b5e5b88cb5..aa846698f6 100644
--- a/backends/platform/bada/sscanf.cpp
+++ b/backends/platform/bada/sscanf.cpp
@@ -56,7 +56,7 @@ bool scanInt(const char **in, va_list *ap, int max) {
bool err = false;
if (end == *in || (max > 0 && (end - *in) > max)) {
- err = true;
+ err = true;
} else {
*arg = (int)n;
*in = end;
diff --git a/backends/platform/gph/gph-backend.cpp b/backends/platform/gph/gph-backend.cpp
index 49a1edf411..485780b472 100644
--- a/backends/platform/gph/gph-backend.cpp
+++ b/backends/platform/gph/gph-backend.cpp
@@ -20,6 +20,8 @@
*
*/
+#if defined(GPH_DEVICE)
+
// Disable symbol overrides so that we can use system headers.
#define FORBIDDEN_SYMBOL_ALLOW_ALL
@@ -32,8 +34,6 @@
#include "backends/saves/default/default-saves.h"
#include "backends/timer/default/default-timer.h"
-#include "base/main.h"
-
#include "common/archive.h"
#include "common/config-manager.h"
#include "common/debug.h"
@@ -64,23 +64,6 @@ void OSystem_GPH::initBackend() {
assert(!_inited);
- // Create the events manager
- if (_eventSource == 0)
- _eventSource = new GPHEventSource();
-
- // Create the graphics manager
- if (_graphicsManager == 0) {
- _graphicsManager = new GPHGraphicsManager(_eventSource);
- }
-
- // Create the mixer manager
- if (_mixer == 0) {
- _mixerManager = new DoubleBufferSDLMixerManager();
-
- // Setup and start mixer
- _mixerManager->init();
- }
-
/* Setup default save path to be workingdir/saves */
char savePath[PATH_MAX+1];
@@ -165,16 +148,42 @@ void OSystem_GPH::initBackend() {
/* Make sure that aspect ratio correction is enabled on the 1st run to stop
users asking me what the 'wasted space' at the bottom is ;-). */
ConfMan.registerDefault("aspect_ratio", true);
+ ConfMan.registerDefault("fullscreen", true);
/* Make sure SDL knows that we have a joystick we want to use. */
ConfMan.setInt("joystick_num", 0);
+ // Create the events manager
+ if (_eventSource == 0)
+ _eventSource = new GPHEventSource();
+
+ // Create the graphics manager
+ if (_graphicsManager == 0) {
+ _graphicsManager = new GPHGraphicsManager(_eventSource);
+ }
+
/* Pass to POSIX method to do the heavy lifting */
OSystem_POSIX::initBackend();
_inited = true;
}
+void OSystem_GPH::initSDL() {
+ // Check if SDL has not been initialized
+ if (!_initedSDL) {
+
+ uint32 sdlFlags = SDL_INIT_EVENTTHREAD;
+ if (ConfMan.hasKey("disable_sdl_parachute"))
+ sdlFlags |= SDL_INIT_NOPARACHUTE;
+
+ // Initialize SDL (SDL Subsystems are initiliazed in the corresponding sdl managers)
+ if (SDL_Init(sdlFlags) == -1)
+ error("Could not initialize SDL: %s", SDL_GetError());
+
+ _initedSDL = true;
+ }
+}
+
void OSystem_GPH::addSysArchivesToSearchSet(Common::SearchSet &s, int priority) {
/* Setup default extra data paths for engine data files and plugins */
@@ -222,3 +231,5 @@ void OSystem_GPH::quit() {
OSystem_POSIX::quit();
}
+
+#endif
diff --git a/backends/platform/gph/gph-main.cpp b/backends/platform/gph/gph-main.cpp
index 2c43af151f..876de0f358 100644
--- a/backends/platform/gph/gph-main.cpp
+++ b/backends/platform/gph/gph-main.cpp
@@ -21,7 +21,7 @@
*/
#include "backends/platform/gph/gph.h"
-#include "backends/plugins/posix/posix-provider.h"
+#include "backends/plugins/sdl/sdl-provider.h"
#include "base/main.h"
#if defined(GPH_DEVICE)
@@ -36,7 +36,7 @@ int main(int argc, char *argv[]) {
((OSystem_GPH *)g_system)->init();
#ifdef DYNAMIC_MODULES
- PluginManager::instance().addPluginProvider(new POSIXPluginProvider());
+ PluginManager::instance().addPluginProvider(new SDLPluginProvider());
#endif
// Invoke the actual ScummVM main entry point:
diff --git a/backends/platform/gph/gph.h b/backends/platform/gph/gph.h
index 80f43f0bab..90a798154f 100644
--- a/backends/platform/gph/gph.h
+++ b/backends/platform/gph/gph.h
@@ -26,13 +26,11 @@
#if defined(GPH_DEVICE)
#include "backends/base-backend.h"
-#include "backends/platform/sdl/sdl.h"
+#include "backends/platform/sdl/sdl-sys.h"
#include "backends/platform/sdl/posix/posix.h"
#include "backends/events/gph/gph-events.h"
#include "backends/graphics/gph/gph-graphics.h"
-#define __GP2XWIZ__
-
#ifndef PATH_MAX
#define PATH_MAX 255
#endif
@@ -45,6 +43,11 @@ public:
void addSysArchivesToSearchSet(Common::SearchSet &s, int priority);
void initBackend();
void quit();
+
+protected:
+ bool _inited;
+ bool _initedSDL;
+ virtual void initSDL();
};
#endif
diff --git a/backends/platform/iphone/iphone_video.mm b/backends/platform/iphone/iphone_video.mm
index 7877bc6430..0bfae30fc7 100644
--- a/backends/platform/iphone/iphone_video.mm
+++ b/backends/platform/iphone/iphone_video.mm
@@ -161,9 +161,9 @@ const char *iPhone_getDocumentsDir() {
- (id)initWithFrame:(struct CGRect)frame {
self = [super initWithFrame: frame];
- if ([[UIScreen mainScreen] respondsToSelector: NSSelectorFromString(@"scale")]) {
- if ([self respondsToSelector: NSSelectorFromString(@"contentScaleFactor")]) {
- //self.contentScaleFactor = [[UIScreen mainScreen] scale];
+ if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
+ if ([self respondsToSelector:@selector(setContentScaleFactor:)]) {
+ [self setContentScaleFactor:[[UIScreen mainScreen] scale]];
}
}
@@ -268,6 +268,11 @@ const char *iPhone_getDocumentsDir() {
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter); printOpenGLError();
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter); printOpenGLError();
+ // We use GL_CLAMP_TO_EDGE here to avoid artifacts when linear filtering
+ // is used. If we would not use this for example the cursor in Loom would
+ // have a line/border artifact on the right side of the covered rect.
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); printOpenGLError();
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); printOpenGLError();
}
- (void)setGraphicsMode {
@@ -476,7 +481,7 @@ const char *iPhone_getDocumentsDir() {
else if (_videoContext.screenWidth == 640 && _videoContext.screenHeight == 400)
adjustedHeight = 480;
}
-
+
float overlayPortraitRatio;
if (_orientation == UIDeviceOrientationLandscapeLeft || _orientation == UIDeviceOrientationLandscapeRight) {
diff --git a/backends/platform/iphone/osys_video.mm b/backends/platform/iphone/osys_video.mm
index aa1856490f..ebe435cb25 100644
--- a/backends/platform/iphone/osys_video.mm
+++ b/backends/platform/iphone/osys_video.mm
@@ -353,7 +353,7 @@ void OSystem_IPHONE::copyRectToOverlay(const void *buf, int pitch, int x, int y,
}
byte *dst = (byte *)_videoContext->overlayTexture.getBasePtr(x, y);
- do {
+ do {
memcpy(dst, src, w * sizeof(uint16));
src += pitch;
dst += _videoContext->overlayTexture.pitch;
@@ -435,7 +435,7 @@ void OSystem_IPHONE::setCursorPalette(const byte *colors, uint start, uint num)
for (uint i = start; i < start + num; ++i, colors += 3)
_mouseCursorPalette[i] = Graphics::RGBToColor<Graphics::ColorMasks<5551> >(colors[0], colors[1], colors[2]);
-
+
// FIXME: This is just stupid, our client code seems to assume that this
// automatically enables the cursor palette.
_mouseCursorPaletteEnabled = true;
diff --git a/backends/platform/maemo/debian/changelog b/backends/platform/maemo/debian/changelog
index f3e4c4eadb..ea44574e96 100644
--- a/backends/platform/maemo/debian/changelog
+++ b/backends/platform/maemo/debian/changelog
@@ -8,7 +8,7 @@ scummvm (1.5.0) unstable; urgency=low
* 1.5.0 release
- -- Tarek Soliman <tsoliman@scummvm.org> Tue, 10 Jul 2012 22:57:32 -0500
+ -- Tarek Soliman <tsoliman@scummvm.org> Fri, 20 Jul 2012 14:48:44 -0500
scummvm (1.4.1) unstable; urgency=low
diff --git a/backends/platform/maemo/debian/control b/backends/platform/maemo/debian/control
index 6e1dfe2fd4..bdaccd2359 100644
--- a/backends/platform/maemo/debian/control
+++ b/backends/platform/maemo/debian/control
@@ -2,7 +2,7 @@ Source: scummvm
Section: user/games
Priority: optional
Maintainer: Tarek Soliman <tsoliman@scummvm.org>
-Build-Depends: debhelper (>> 4.0.0), libsdl1.2-dev, libmad0-dev, libasound2-dev, libvorbisidec-dev, libmpeg2-4-dev, libflac-dev (>= 1.1.2), libz-dev, quilt
+Build-Depends: debhelper (>> 4.0.0), libsdl1.2-dev, libmad0-dev, libasound2-dev, libvorbisidec-dev, libmpeg2-4-dev, libflac-dev (>= 1.1.2), libfreetype6-dev, libz-dev, quilt
Standards-Version: 3.6.1.1
Package: scummvm
diff --git a/backends/platform/maemo/debian/rules b/backends/platform/maemo/debian/rules
index 64add08de8..c713403876 100755
--- a/backends/platform/maemo/debian/rules
+++ b/backends/platform/maemo/debian/rules
@@ -47,10 +47,10 @@ install: build
install -m0644 gui/themes/scummclassic.zip gui/themes/scummmodern.zip debian/scummvm/opt/scummvm/share
install -m0644 backends/vkeybd/packs/vkeybd_default.zip debian/scummvm/opt/scummvm/share
# for optified version we can also add engine datafiles
- install -m0644 dists/engine-data/drascula.dat dists/engine-data/hugo.dat dists/engine-data/kyra.dat dists/engine-data/lure.dat dists/engine-data/queen.tbl dists/engine-data/sky.cpt dists/engine-data/teenagent.dat dists/engine-data/toon.dat debian/scummvm/opt/scummvm/share
+ install -m0644 dists/engine-data/drascula.dat dists/engine-data/hugo.dat dists/engine-data/kyra.dat dists/engine-data/lure.dat dists/engine-data/queen.tbl dists/engine-data/sky.cpt dists/engine-data/teenagent.dat dists/engine-data/tony.dat dists/engine-data/toon.dat debian/scummvm/opt/scummvm/share
install -m0644 -d debian/scummvm/usr/share/doc/scummvm
- install -m0644 NEWS README COPYRIGHT debian/scummvm/usr/share/doc/scummvm
+ install -m0644 AUTHORS COPYING COPYING.BSD COPYING.FREEFONT COPYING.LGPL COPYRIGHT NEWS README debian/scummvm/usr/share/doc/scummvm
binary: binary-arch
binary-arch: build install
diff --git a/backends/platform/openpandora/op-backend.cpp b/backends/platform/openpandora/op-backend.cpp
index dcec387f97..354aa24b24 100644
--- a/backends/platform/openpandora/op-backend.cpp
+++ b/backends/platform/openpandora/op-backend.cpp
@@ -54,53 +54,15 @@
/* Dump console info to files. */
#define DUMP_STDOUT
-static SDL_Cursor *hiddenCursor;
-
OSystem_OP::OSystem_OP()
:
OSystem_POSIX() {
}
-//static Uint32 timer_handler(Uint32 interval, void *param) {
-// ((DefaultTimerManager *)param)->handler();
-// return interval;
-//}
-
void OSystem_OP::initBackend() {
assert(!_inited);
- // Create the events manager
- if (_eventSource == 0)
- _eventSource = new OPEventSource();
-
- // Create the graphics manager
- if (_graphicsManager == 0) {
- _graphicsManager = new OPGraphicsManager(_eventSource);
- }
-
-// int joystick_num = ConfMan.getInt("joystick_num");
-// uint32 sdlFlags = SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER;
-//
-// if (ConfMan.hasKey("disable_sdl_parachute"))
-// sdlFlags |= SDL_INIT_NOPARACHUTE;
-//
-// if (joystick_num > -1)
-// sdlFlags |= SDL_INIT_JOYSTICK;
-//
-// if (SDL_Init(sdlFlags) == -1) {
-// error("Could not initialize SDL: %s", SDL_GetError());
-// }
-//
-
- // Create the mixer manager
-// if (_mixer == 0) {
-// _mixerManager = new DoubleBufferSDLMixerManager();
-
- // Setup and start mixer
-// _mixerManager->init();
-// }
-
/* Setup default save path to be workingdir/saves */
char savePath[PATH_MAX+1];
@@ -179,7 +141,14 @@ void OSystem_OP::initBackend() {
/* Make sure SDL knows that we have a joystick we want to use. */
ConfMan.setInt("joystick_num", 0);
-// _graphicsMutex = createMutex();
+ // Create the events manager
+ if (_eventSource == 0)
+ _eventSource = new OPEventSource();
+
+ // Create the graphics manager
+ if (_graphicsManager == 0) {
+ _graphicsManager = new OPGraphicsManager(_eventSource);
+ }
/* Pass to POSIX method to do the heavy lifting */
OSystem_POSIX::initBackend();
@@ -187,24 +156,6 @@ void OSystem_OP::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 +168,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 +195,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);
diff --git a/backends/platform/openpandora/op-options.cpp b/backends/platform/openpandora/op-options.cpp
index 58f0fb7188..005a76b76c 100644
--- a/backends/platform/openpandora/op-options.cpp
+++ b/backends/platform/openpandora/op-options.cpp
@@ -33,7 +33,8 @@ enum {
/* Touchscreen TapMode */
TAPMODE_LEFT = 0,
TAPMODE_RIGHT = 1,
- TAPMODE_HOVER = 2
+ TAPMODE_HOVER = 2,
+ TAPMODE_HOVER_DPAD = 3
};
int tapmodeLevel = TAPMODE_LEFT;
@@ -44,6 +45,8 @@ void ToggleTapMode() {
} else if (tapmodeLevel == TAPMODE_RIGHT) {
tapmodeLevel = TAPMODE_HOVER;
} else if (tapmodeLevel == TAPMODE_HOVER) {
+ tapmodeLevel = TAPMODE_HOVER_DPAD;
+ } else if (tapmodeLevel == TAPMODE_HOVER_DPAD) {
tapmodeLevel = TAPMODE_LEFT;
} else {
tapmodeLevel = TAPMODE_LEFT;
diff --git a/backends/platform/openpandora/op-sdl.h b/backends/platform/openpandora/op-sdl.h
index 8cccbb5f86..1eddad5c4a 100644
--- a/backends/platform/openpandora/op-sdl.h
+++ b/backends/platform/openpandora/op-sdl.h
@@ -31,8 +31,6 @@
#include "backends/events/openpandora/op-events.h"
#include "backends/graphics/openpandora/op-graphics.h"
-//#define MIXER_DOUBLE_BUFFERING 1
-
#ifndef PATH_MAX
#define PATH_MAX 255
#endif
diff --git a/backends/platform/sdl/macosx/macosx.cpp b/backends/platform/sdl/macosx/macosx.cpp
index 639bd980f6..fb76c111f2 100644
--- a/backends/platform/sdl/macosx/macosx.cpp
+++ b/backends/platform/sdl/macosx/macosx.cpp
@@ -156,7 +156,7 @@ Common::String OSystem_MacOSX::getSystemLanguage() const {
}
CFRelease(preferredLocalizations);
}
-
+
}
// Falback to POSIX implementation
return OSystem_POSIX::getSystemLanguage();
diff --git a/backends/platform/sdl/macosx/macosx.h b/backends/platform/sdl/macosx/macosx.h
index 4837e643b3..d9cb28b973 100644
--- a/backends/platform/sdl/macosx/macosx.h
+++ b/backends/platform/sdl/macosx/macosx.h
@@ -32,7 +32,7 @@ public:
virtual bool hasFeature(Feature f);
virtual bool displayLogFile();
-
+
virtual Common::String getSystemLanguage() const;
virtual void initBackend();
diff --git a/backends/platform/sdl/main.cpp b/backends/platform/sdl/main.cpp
deleted file mode 100644
index 040028079d..0000000000
--- a/backends/platform/sdl/main.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-/* 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.
- *
- */
-
-#include "common/scummsys.h"
-
-// Several SDL based ports use a custom main, and hence do not want to compile
-// of this file. The following "#if" ensures that.
-#if !defined(POSIX) && \
- !defined(WIN32) && \
- !defined(MAEMO) && \
- !defined(__SYMBIAN32__) && \
- !defined(_WIN32_WCE) && \
- !defined(__amigaos4__) && \
- !defined(DINGUX) && \
- !defined(CAANOO) && \
- !defined(LINUXMOTO) && \
- !defined(SAMSUNGTV) && \
- !defined(PLAYSTATION3) && \
- !defined(OPENPANDORA)
-
-#include "backends/platform/sdl/sdl.h"
-#include "backends/plugins/sdl/sdl-provider.h"
-#include "base/main.h"
-
-int main(int argc, char *argv[]) {
-
- // Create our OSystem instance
- g_system = new OSystem_SDL();
- assert(g_system);
-
- // Pre initialize the backend
- ((OSystem_SDL *)g_system)->init();
-
-#ifdef DYNAMIC_MODULES
- PluginManager::instance().addPluginProvider(new SDLPluginProvider());
-#endif
-
- // Invoke the actual ScummVM main entry point:
- int res = scummvm_main(argc, argv);
-
- // Free OSystem
- delete (OSystem_SDL *)g_system;
-
- return res;
-}
-
-#endif
diff --git a/backends/platform/sdl/module.mk b/backends/platform/sdl/module.mk
index 98a8265301..a17a326889 100644
--- a/backends/platform/sdl/module.mk
+++ b/backends/platform/sdl/module.mk
@@ -1,7 +1,6 @@
MODULE := backends/platform/sdl
MODULE_OBJS := \
- main.o \
sdl.o
ifdef POSIX
diff --git a/backends/platform/webos/webos.cpp b/backends/platform/webos/webos.cpp
index 4ec153a7e9..fc18628235 100644
--- a/backends/platform/webos/webos.cpp
+++ b/backends/platform/webos/webos.cpp
@@ -45,24 +45,4 @@ void OSystem_SDL_WebOS::initBackend() {
OSystem_SDL::initBackend();
}
-/**
- * Gets the original SDL hardware key set, adds WebOS specific keys and
- * returns the new key set.
- *
- * @return The hardware key set with added webOS specific keys.
- */
-#ifdef ENABLE_KEYMAPPER
-HardwareInputSet *OSystem_SDL_WebOS::getHardwareInputSet() {
- // Get the original SDL hardware key set
- HardwareInputSet *inputSet = OSystem_SDL::getHardwareInputSet();
-
- // Add WebOS specific keys
- inputSet->addHardwareInput(new HardwareInput("FORWARD",
- KeyState((KeyCode) 229, 229, 0), "Forward"));
-
- // Return the modified hardware key set
- return inputSet;
-}
-#endif
-
#endif
diff --git a/backends/platform/webos/webos.h b/backends/platform/webos/webos.h
index 8dfa43239c..dda56a70da 100644
--- a/backends/platform/webos/webos.h
+++ b/backends/platform/webos/webos.h
@@ -31,9 +31,6 @@ public:
OSystem_SDL_WebOS();
virtual void initBackend();
-#ifdef ENABLE_KEYMAPPER
- virtual Common::HardwareInputSet *getHardwareInputSet();
-#endif
};
#endif
diff --git a/backends/platform/wii/osystem.cpp b/backends/platform/wii/osystem.cpp
index 681675529a..22a6495f8f 100644
--- a/backends/platform/wii/osystem.cpp
+++ b/backends/platform/wii/osystem.cpp
@@ -39,7 +39,7 @@
OSystem_Wii::OSystem_Wii() :
_startup_time(0),
- _cursorScale(1),
+ _cursorDontScale(true),
_cursorPaletteDisabled(true),
_cursorPalette(NULL),
_cursorPaletteDirty(false),
diff --git a/backends/platform/wii/osystem.h b/backends/platform/wii/osystem.h
index abafa7f642..5d6998d0b6 100644
--- a/backends/platform/wii/osystem.h
+++ b/backends/platform/wii/osystem.h
@@ -56,7 +56,7 @@ class OSystem_Wii : public EventsBaseBackend, public PaletteManager {
private:
s64 _startup_time;
- int _cursorScale;
+ bool _cursorDontScale;
bool _cursorPaletteDisabled;
u16 *_cursorPalette;
bool _cursorPaletteDirty;
diff --git a/backends/platform/wii/osystem_gfx.cpp b/backends/platform/wii/osystem_gfx.cpp
index 90e4d98c6b..fc0802dd4c 100644
--- a/backends/platform/wii/osystem_gfx.cpp
+++ b/backends/platform/wii/osystem_gfx.cpp
@@ -451,7 +451,7 @@ bool OSystem_Wii::needsScreenUpdate() {
void OSystem_Wii::updateScreen() {
static f32 ar;
static gfx_screen_coords_t cc;
- static int cs;
+ static f32 csx, csy;
u32 now = getMillis();
if (now - _lastScreenUpdate < 1000 / MAX_FPS)
@@ -466,7 +466,6 @@ void OSystem_Wii::updateScreen() {
wii_memstats();
#endif
- cs = _cursorScale;
_lastScreenUpdate = now;
if (_overlayVisible || _consoleVisible)
@@ -488,12 +487,6 @@ void OSystem_Wii::updateScreen() {
if (_gameRunning)
ar = gfx_set_ar(4.0 / 3.0);
- // ugly, but the modern theme sets a factor of 3, only god knows why
- if (cs > 2)
- cs = 1;
- else
- cs *= 2;
-
if (_overlayDirty) {
gfx_tex_convert(&_texOverlay, _overlayPixels);
_overlayDirty = false;
@@ -503,10 +496,18 @@ void OSystem_Wii::updateScreen() {
}
if (_mouseVisible) {
- cc.x = f32(_mouseX - cs * _mouseHotspotX) * _currentXScale;
- cc.y = f32(_mouseY - cs * _mouseHotspotY) * _currentYScale;
- cc.w = f32(_texMouse.width) * _currentXScale * cs;
- cc.h = f32(_texMouse.height) * _currentYScale * cs;
+ if (_cursorDontScale) {
+ csx = 1.0f / _currentXScale;
+ csy = 1.0f / _currentYScale;
+ } else {
+ csx = 1.0f;
+ csy = 1.0f;
+ }
+
+ cc.x = f32(_mouseX - csx * _mouseHotspotX) * _currentXScale;
+ cc.y = f32(_mouseY - csy * _mouseHotspotY) * _currentYScale;
+ cc.w = f32(_texMouse.width) * _currentXScale * csx;
+ cc.h = f32(_texMouse.height) * _currentYScale * csy;
if (_texMouse.palette && _cursorPaletteDirty) {
_texMouse.palette[_mouseKeyColor] = 0;
@@ -745,8 +746,7 @@ void OSystem_Wii::setMouseCursor(const void *buf, uint w, uint h, int hotspotX,
_mouseHotspotX = hotspotX;
_mouseHotspotY = hotspotY;
- // TODO: Adapt to new dontScale logic!
- _cursorScale = 1;
+ _cursorDontScale = dontScale;
if ((_texMouse.palette) && (oldKeycolor != _mouseKeyColor))
_cursorPaletteDirty = true;
diff --git a/backends/taskbar/win32/mingw-compat.h b/backends/taskbar/win32/mingw-compat.h
index 55105407c6..f6151936f1 100644
--- a/backends/taskbar/win32/mingw-compat.h
+++ b/backends/taskbar/win32/mingw-compat.h
@@ -70,7 +70,7 @@ DECLARE_INTERFACE_(IPropertyStore, IUnknown) {
STDMETHOD (GetValue) (REFPROPERTYKEY key, PROPVARIANT *pv) PURE;
STDMETHOD (SetValue) (REFPROPERTYKEY key, REFPROPVARIANT propvar) PURE;
STDMETHOD (Commit) (void) PURE;
-
+
private:
~IPropertyStore();
};
@@ -137,7 +137,7 @@ DECLARE_INTERFACE_(ITaskbarList3, IUnknown) {
STDMETHOD (SetOverlayIcon) (THIS_ HWND hwnd, HICON hIcon, LPCWSTR pszDescription) PURE;
STDMETHOD (SetThumbnailTooltip) (THIS_ HWND hwnd, LPCWSTR pszTip) PURE;
STDMETHOD (SetThumbnailClip) (THIS_ HWND hwnd, RECT *prcClip) PURE;
-
+
private:
~ITaskbarList3();
};
diff --git a/backends/timer/bada/timer.cpp b/backends/timer/bada/timer.cpp
index f030e0695f..e41ecd4864 100644
--- a/backends/timer/bada/timer.cpp
+++ b/backends/timer/bada/timer.cpp
@@ -1,115 +1,115 @@
-/* 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.
- *
- */
-
-#if defined(BADA)
-
-#include "backends/timer/bada/timer.h"
-
-//
-// TimerSlot
-//
-TimerSlot::TimerSlot(Common::TimerManager::TimerProc callback,
- uint32 interval, void *refCon) :
- _timer(0),
- _callback(callback),
- _interval(interval),
- _refCon(refCon) {
-}
-
-TimerSlot::~TimerSlot() {
-}
-
-bool TimerSlot::OnStart() {
- _timer = new Osp::Base::Runtime::Timer();
- if (!_timer || IsFailed(_timer->Construct(*this))) {
- AppLog("Failed to create timer");
- return false;
- }
-
- if (IsFailed(_timer->Start(_interval))) {
- AppLog("failed to start timer");
- return false;
- }
-
- AppLog("started timer %d", _interval);
- return true;
-}
-
-void TimerSlot::OnStop() {
- AppLog("timer stopped");
- if (_timer) {
- _timer->Cancel();
- delete _timer;
- _timer = NULL;
- }
-}
-
-void TimerSlot::OnTimerExpired(Timer &timer) {
- _callback(_refCon);
- timer.Start(_interval);
-}
-
-//
-// BadaTimerManager
-//
-BadaTimerManager::BadaTimerManager() {
-}
-
-BadaTimerManager::~BadaTimerManager() {
- for (Common::List<TimerSlot>::iterator slot = _timers.begin();
- slot != _timers.end(); ) {
- slot->Stop();
- slot = _timers.erase(slot);
- }
-}
-
-bool BadaTimerManager::installTimerProc(TimerProc proc, int32 interval, void *refCon,
- const Common::String &id) {
- TimerSlot *slot = new TimerSlot(proc, interval / 1000, refCon);
-
- if (IsFailed(slot->Construct(THREAD_TYPE_EVENT_DRIVEN))) {
- AppLog("Failed to create timer thread");
- delete slot;
- return false;
- }
-
- if (IsFailed(slot->Start())) {
- delete slot;
- AppLog("Failed to start timer thread");
- return false;
- }
-
- _timers.push_back(*slot);
- return true;
-}
-
-void BadaTimerManager::removeTimerProc(TimerProc proc) {
- for (Common::List<TimerSlot>::iterator slot = _timers.begin();
- slot != _timers.end(); ++slot) {
- if (slot->_callback == proc) {
- slot->Stop();
- slot = _timers.erase(slot);
- }
- }
-}
-
-#endif
+/* 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.
+ *
+ */
+
+#if defined(BADA)
+
+#include "backends/timer/bada/timer.h"
+
+//
+// TimerSlot
+//
+TimerSlot::TimerSlot(Common::TimerManager::TimerProc callback,
+ uint32 interval, void *refCon) :
+ _timer(0),
+ _callback(callback),
+ _interval(interval),
+ _refCon(refCon) {
+}
+
+TimerSlot::~TimerSlot() {
+}
+
+bool TimerSlot::OnStart() {
+ _timer = new Osp::Base::Runtime::Timer();
+ if (!_timer || IsFailed(_timer->Construct(*this))) {
+ AppLog("Failed to create timer");
+ return false;
+ }
+
+ if (IsFailed(_timer->Start(_interval))) {
+ AppLog("failed to start timer");
+ return false;
+ }
+
+ AppLog("started timer %d", _interval);
+ return true;
+}
+
+void TimerSlot::OnStop() {
+ AppLog("timer stopped");
+ if (_timer) {
+ _timer->Cancel();
+ delete _timer;
+ _timer = NULL;
+ }
+}
+
+void TimerSlot::OnTimerExpired(Timer &timer) {
+ _callback(_refCon);
+ timer.Start(_interval);
+}
+
+//
+// BadaTimerManager
+//
+BadaTimerManager::BadaTimerManager() {
+}
+
+BadaTimerManager::~BadaTimerManager() {
+ for (Common::List<TimerSlot>::iterator slot = _timers.begin();
+ slot != _timers.end(); ) {
+ slot->Stop();
+ slot = _timers.erase(slot);
+ }
+}
+
+bool BadaTimerManager::installTimerProc(TimerProc proc, int32 interval, void *refCon,
+ const Common::String &id) {
+ TimerSlot *slot = new TimerSlot(proc, interval / 1000, refCon);
+
+ if (IsFailed(slot->Construct(THREAD_TYPE_EVENT_DRIVEN))) {
+ AppLog("Failed to create timer thread");
+ delete slot;
+ return false;
+ }
+
+ if (IsFailed(slot->Start())) {
+ delete slot;
+ AppLog("Failed to start timer thread");
+ return false;
+ }
+
+ _timers.push_back(*slot);
+ return true;
+}
+
+void BadaTimerManager::removeTimerProc(TimerProc proc) {
+ for (Common::List<TimerSlot>::iterator slot = _timers.begin();
+ slot != _timers.end(); ++slot) {
+ if (slot->_callback == proc) {
+ slot->Stop();
+ slot = _timers.erase(slot);
+ }
+ }
+}
+
+#endif
diff --git a/backends/timer/bada/timer.h b/backends/timer/bada/timer.h
index 04ca771c26..826064d7ff 100644
--- a/backends/timer/bada/timer.h
+++ b/backends/timer/bada/timer.h
@@ -1,62 +1,62 @@
-/* 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.
- *
- */
-
-#ifndef BADA_TIMER_H
-#define BADA_TIMER_H
-
-#include <FBase.h>
-
-#include "common/timer.h"
-#include "common/list.h"
-
-using namespace Osp::Base::Runtime;
-
-struct TimerSlot: public ITimerEventListener, public Thread {
- TimerSlot(Common::TimerManager::TimerProc callback,
- uint32 interval,
- void *refCon);
- ~TimerSlot();
-
- bool OnStart(void);
- void OnStop(void);
- void OnTimerExpired(Timer &timer);
-
- Timer *_timer;
- Common::TimerManager::TimerProc _callback;
- uint32 _interval; // in microseconds
- void *_refCon;
-};
-
-class BadaTimerManager : public Common::TimerManager {
-public:
- BadaTimerManager();
- ~BadaTimerManager();
-
- bool installTimerProc(TimerProc proc, int32 interval, void *refCon,
- const Common::String &id);
- void removeTimerProc(TimerProc proc);
-
-private:
- Common::List<TimerSlot> _timers;
-};
-
-#endif
+/* 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.
+ *
+ */
+
+#ifndef BADA_TIMER_H
+#define BADA_TIMER_H
+
+#include <FBase.h>
+
+#include "common/timer.h"
+#include "common/list.h"
+
+using namespace Osp::Base::Runtime;
+
+struct TimerSlot: public ITimerEventListener, public Thread {
+ TimerSlot(Common::TimerManager::TimerProc callback,
+ uint32 interval,
+ void *refCon);
+ ~TimerSlot();
+
+ bool OnStart(void);
+ void OnStop(void);
+ void OnTimerExpired(Timer &timer);
+
+ Timer *_timer;
+ Common::TimerManager::TimerProc _callback;
+ uint32 _interval; // in microseconds
+ void *_refCon;
+};
+
+class BadaTimerManager : public Common::TimerManager {
+public:
+ BadaTimerManager();
+ ~BadaTimerManager();
+
+ bool installTimerProc(TimerProc proc, int32 interval, void *refCon,
+ const Common::String &id);
+ void removeTimerProc(TimerProc proc);
+
+private:
+ Common::List<TimerSlot> _timers;
+};
+
+#endif
diff --git a/backends/timer/default/default-timer.cpp b/backends/timer/default/default-timer.cpp
index 9cd803f148..9f56d58b12 100644
--- a/backends/timer/default/default-timer.cpp
+++ b/backends/timer/default/default-timer.cpp
@@ -156,7 +156,7 @@ void DefaultTimerManager::removeTimerProc(TimerProc callback) {
}
// We need to remove all names referencing the timer proc here.
- //
+ //
// Else we run into troubles, when the client code removes and readds timer
// callbacks.
//