added more cases for samsungtv to allow reuse main sdl code
svn-id: r45835
This commit is contained in:
parent
22e94ddd61
commit
2a1cd33a46
4 changed files with 6 additions and 122 deletions
|
@ -52,10 +52,6 @@ static ScalerProc *scalersMagn[3][3] = {
|
|||
static int cursorStretch200To240(uint8 *buf, uint32 pitch, int width, int height, int srcX, int srcY, int origSrcY);
|
||||
#endif
|
||||
|
||||
int OSystem_SDL_SamsungTV::getDefaultGraphicsMode() const {
|
||||
return GFX_2XSAI;
|
||||
}
|
||||
|
||||
Common::List<Graphics::PixelFormat> OSystem_SDL_SamsungTV::getSupportedFormats() {
|
||||
static Common::List<Graphics::PixelFormat>list;
|
||||
list.push_back(Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0));
|
||||
|
|
|
@ -43,93 +43,6 @@
|
|||
|
||||
#if defined(SAMSUNGTV)
|
||||
|
||||
static Uint32 timer_handler(Uint32 interval, void *param) {
|
||||
((DefaultTimerManager *)param)->handler();
|
||||
return interval;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
void OSystem_SDL_SamsungTV::initBackend() {
|
||||
assert(!_inited);
|
||||
|
||||
uint32 sdlFlags = SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER;
|
||||
|
||||
if (ConfMan.hasKey("disable_sdl_parachute"))
|
||||
sdlFlags |= SDL_INIT_NOPARACHUTE;
|
||||
|
||||
if (SDL_Init(sdlFlags) == -1) {
|
||||
error("Could not initialize SDL: %s", SDL_GetError());
|
||||
}
|
||||
|
||||
_graphicsMutex = createMutex();
|
||||
|
||||
// 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;
|
||||
_videoMode.mode = GFX_2XSAI;
|
||||
_videoMode.scaleFactor = 2;
|
||||
_videoMode.aspectRatioCorrection = ConfMan.getBool("aspect_ratio");
|
||||
_videoMode.desiredAspectRatio = getDesiredAspectRatio();
|
||||
_scalerProc = _2xSaI;
|
||||
_scalerType = 0;
|
||||
_modeFlags = 0;
|
||||
_videoMode.fullscreen = true;
|
||||
|
||||
|
||||
// Create the savefile manager, if none exists yet (we check for this to
|
||||
// allow subclasses to provide their own).
|
||||
if (_savefile == NULL) {
|
||||
_savefile = new POSIXSaveFileManager();
|
||||
}
|
||||
|
||||
// Create and hook up the mixer, if none exists yet (we check for this to
|
||||
// allow subclasses to provide their own).
|
||||
if (_mixer == NULL) {
|
||||
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 == NULL) {
|
||||
// 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);
|
||||
}
|
||||
|
||||
// Invoke parent implementation of this method
|
||||
OSystem::initBackend();
|
||||
|
||||
_inited = true;
|
||||
}
|
||||
|
||||
OSystem_SDL_SamsungTV::OSystem_SDL_SamsungTV() : OSystem_SDL(),
|
||||
_prehwscreen(0) {
|
||||
}
|
||||
|
@ -178,26 +91,4 @@ bool OSystem_SDL_SamsungTV::getFeatureState(Feature f) {
|
|||
}
|
||||
}
|
||||
|
||||
void OSystem_SDL_SamsungTV::quit() {
|
||||
unloadGFXMode();
|
||||
deleteMutex(_graphicsMutex);
|
||||
|
||||
SDL_RemoveTimer(_timerID);
|
||||
closeMixer();
|
||||
|
||||
free(_dirtyChecksums);
|
||||
free(_currentPalette);
|
||||
free(_cursorPalette);
|
||||
free(_mouseData);
|
||||
|
||||
delete _timer;
|
||||
|
||||
SDL_Quit();
|
||||
|
||||
// Even Manager requires save manager for storing
|
||||
// recorded events
|
||||
delete getEventManager();
|
||||
delete _savefile;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -42,8 +42,6 @@ class OSystem_SDL_SamsungTV : public OSystem_SDL {
|
|||
public:
|
||||
OSystem_SDL_SamsungTV();
|
||||
|
||||
virtual void initBackend();
|
||||
|
||||
// Highest supported
|
||||
virtual Common::List<Graphics::PixelFormat> getSupportedFormats();
|
||||
|
||||
|
@ -63,11 +61,6 @@ public:
|
|||
// Returns true if an event was retrieved.
|
||||
virtual bool pollEvent(Common::Event &event);
|
||||
|
||||
// Quit
|
||||
virtual void quit(); // overloaded by CE backend
|
||||
|
||||
virtual int getDefaultGraphicsMode() const;
|
||||
|
||||
virtual bool hasFeature(Feature f);
|
||||
virtual void setFeatureState(Feature f, bool enable);
|
||||
virtual bool getFeatureState(Feature f);
|
||||
|
|
|
@ -137,8 +137,9 @@ void OSystem_SDL::initBackend() {
|
|||
|
||||
_graphicsMutex = createMutex();
|
||||
|
||||
#if !defined(SAMSUNGTV)
|
||||
SDL_ShowCursor(SDL_DISABLE);
|
||||
|
||||
#endif
|
||||
// Enable unicode support if possible
|
||||
SDL_EnableUNICODE(1);
|
||||
|
||||
|
@ -503,8 +504,9 @@ void OSystem_SDL::quit() {
|
|||
|
||||
if (_joystick)
|
||||
SDL_JoystickClose(_joystick);
|
||||
#if !defined(SAMSUNGTV)
|
||||
SDL_ShowCursor(SDL_ENABLE);
|
||||
|
||||
#endif
|
||||
SDL_RemoveTimer(_timerID);
|
||||
closeMixer();
|
||||
|
||||
|
@ -522,7 +524,9 @@ void OSystem_SDL::quit() {
|
|||
delete getEventManager();
|
||||
delete _savefile;
|
||||
|
||||
#if !defined(SAMSUNGTV)
|
||||
exit(0);
|
||||
#endif
|
||||
}
|
||||
|
||||
void OSystem_SDL::setupIcon() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue