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);
|
static int cursorStretch200To240(uint8 *buf, uint32 pitch, int width, int height, int srcX, int srcY, int origSrcY);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int OSystem_SDL_SamsungTV::getDefaultGraphicsMode() const {
|
|
||||||
return GFX_2XSAI;
|
|
||||||
}
|
|
||||||
|
|
||||||
Common::List<Graphics::PixelFormat> OSystem_SDL_SamsungTV::getSupportedFormats() {
|
Common::List<Graphics::PixelFormat> OSystem_SDL_SamsungTV::getSupportedFormats() {
|
||||||
static Common::List<Graphics::PixelFormat>list;
|
static Common::List<Graphics::PixelFormat>list;
|
||||||
list.push_back(Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0));
|
list.push_back(Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0));
|
||||||
|
|
|
@ -43,93 +43,6 @@
|
||||||
|
|
||||||
#if defined(SAMSUNGTV)
|
#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(),
|
OSystem_SDL_SamsungTV::OSystem_SDL_SamsungTV() : OSystem_SDL(),
|
||||||
_prehwscreen(0) {
|
_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
|
#endif
|
||||||
|
|
|
@ -42,8 +42,6 @@ class OSystem_SDL_SamsungTV : public OSystem_SDL {
|
||||||
public:
|
public:
|
||||||
OSystem_SDL_SamsungTV();
|
OSystem_SDL_SamsungTV();
|
||||||
|
|
||||||
virtual void initBackend();
|
|
||||||
|
|
||||||
// Highest supported
|
// Highest supported
|
||||||
virtual Common::List<Graphics::PixelFormat> getSupportedFormats();
|
virtual Common::List<Graphics::PixelFormat> getSupportedFormats();
|
||||||
|
|
||||||
|
@ -63,11 +61,6 @@ public:
|
||||||
// Returns true if an event was retrieved.
|
// Returns true if an event was retrieved.
|
||||||
virtual bool pollEvent(Common::Event &event);
|
virtual bool pollEvent(Common::Event &event);
|
||||||
|
|
||||||
// Quit
|
|
||||||
virtual void quit(); // overloaded by CE backend
|
|
||||||
|
|
||||||
virtual int getDefaultGraphicsMode() const;
|
|
||||||
|
|
||||||
virtual bool hasFeature(Feature f);
|
virtual bool hasFeature(Feature f);
|
||||||
virtual void setFeatureState(Feature f, bool enable);
|
virtual void setFeatureState(Feature f, bool enable);
|
||||||
virtual bool getFeatureState(Feature f);
|
virtual bool getFeatureState(Feature f);
|
||||||
|
|
|
@ -137,8 +137,9 @@ void OSystem_SDL::initBackend() {
|
||||||
|
|
||||||
_graphicsMutex = createMutex();
|
_graphicsMutex = createMutex();
|
||||||
|
|
||||||
|
#if !defined(SAMSUNGTV)
|
||||||
SDL_ShowCursor(SDL_DISABLE);
|
SDL_ShowCursor(SDL_DISABLE);
|
||||||
|
#endif
|
||||||
// Enable unicode support if possible
|
// Enable unicode support if possible
|
||||||
SDL_EnableUNICODE(1);
|
SDL_EnableUNICODE(1);
|
||||||
|
|
||||||
|
@ -503,8 +504,9 @@ void OSystem_SDL::quit() {
|
||||||
|
|
||||||
if (_joystick)
|
if (_joystick)
|
||||||
SDL_JoystickClose(_joystick);
|
SDL_JoystickClose(_joystick);
|
||||||
|
#if !defined(SAMSUNGTV)
|
||||||
SDL_ShowCursor(SDL_ENABLE);
|
SDL_ShowCursor(SDL_ENABLE);
|
||||||
|
#endif
|
||||||
SDL_RemoveTimer(_timerID);
|
SDL_RemoveTimer(_timerID);
|
||||||
closeMixer();
|
closeMixer();
|
||||||
|
|
||||||
|
@ -522,7 +524,9 @@ void OSystem_SDL::quit() {
|
||||||
delete getEventManager();
|
delete getEventManager();
|
||||||
delete _savefile;
|
delete _savefile;
|
||||||
|
|
||||||
|
#if !defined(SAMSUNGTV)
|
||||||
exit(0);
|
exit(0);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_SDL::setupIcon() {
|
void OSystem_SDL::setupIcon() {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue