mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-05 17:20:30 +00:00
TIZEN: Adapt to new OpenGL code.
Thanks to Chris Warren-Smith for testing this a bit.
This commit is contained in:
parent
decc013e53
commit
20e4a7f0ce
backends
@ -153,6 +153,11 @@ protected:
|
||||
*/
|
||||
void setMousePosition(int x, int y) { _cursorX = x; _cursorY = y; }
|
||||
|
||||
/**
|
||||
* Query the mouse position in physical coordinates.
|
||||
*/
|
||||
void getMousePosition(int16 &x, int16 &y) const { x = _cursorX; y = _cursorY; }
|
||||
|
||||
/**
|
||||
* Set up the mouse position for the (event) system.
|
||||
*
|
||||
|
@ -37,7 +37,20 @@ TizenGraphicsManager::TizenGraphicsManager(TizenAppForm *appForm) :
|
||||
_eglContext(EGL_NO_CONTEXT),
|
||||
_initState(true) {
|
||||
assert(appForm != NULL);
|
||||
_videoMode.fullscreen = true;
|
||||
// Initialize our OpenGL ES context.
|
||||
loadEgl();
|
||||
|
||||
// Notify the OpenGL code about our context.
|
||||
|
||||
// We default to RGB565 and RGBA5551 which is closest to the actual output
|
||||
// mode we setup.
|
||||
notifyContextChange(Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0), Graphics::PixelFormat(2, 5, 5, 5, 1, 11, 6, 1, 0));
|
||||
|
||||
// Tell our size.
|
||||
int x, y, width, height;
|
||||
_appForm->GetBounds(x, y, width, height);
|
||||
AppLog("screen size: %dx%d", width, height);
|
||||
setActualScreenSize(width, height);
|
||||
}
|
||||
|
||||
TizenGraphicsManager::~TizenGraphicsManager() {
|
||||
@ -56,12 +69,11 @@ const Graphics::Font *TizenGraphicsManager::getFontOSD() {
|
||||
}
|
||||
|
||||
bool TizenGraphicsManager::moveMouse(int16 &x, int16 &y) {
|
||||
int16 currentX = _cursorState.x;
|
||||
int16 currentY = _cursorState.y;
|
||||
int16 currentX, currentY;
|
||||
getMousePosition(currentX, currentY);
|
||||
|
||||
// save the current hardware coordinates
|
||||
_cursorState.x = x;
|
||||
_cursorState.y = y;
|
||||
setMousePosition(x, y);
|
||||
|
||||
// return x/y as game coordinates
|
||||
adjustMousePosition(x, y);
|
||||
@ -85,15 +97,17 @@ Common::List<Graphics::PixelFormat> TizenGraphicsManager::getSupportedFormats()
|
||||
}
|
||||
|
||||
bool TizenGraphicsManager::hasFeature(OSystem::Feature f) {
|
||||
bool result = (f == OSystem::kFeatureFullscreenMode ||
|
||||
f == OSystem::kFeatureVirtualKeyboard ||
|
||||
bool result =
|
||||
(f == OSystem::kFeatureVirtualKeyboard ||
|
||||
OpenGLGraphicsManager::hasFeature(f));
|
||||
return result;
|
||||
}
|
||||
|
||||
void TizenGraphicsManager::setFeatureState(OSystem::Feature f, bool enable) {
|
||||
if (f == OSystem::kFeatureVirtualKeyboard && enable) {
|
||||
_appForm->showKeypad();
|
||||
if (f == OSystem::kFeatureVirtualKeyboard) {
|
||||
if (enable) {
|
||||
_appForm->showKeypad();
|
||||
}
|
||||
} else {
|
||||
OpenGLGraphicsManager::setFeatureState(f, enable);
|
||||
}
|
||||
@ -106,8 +120,9 @@ void TizenGraphicsManager::setReady() {
|
||||
}
|
||||
|
||||
void TizenGraphicsManager::updateScreen() {
|
||||
if (_transactionMode == kTransactionNone) {
|
||||
internUpdateScreen();
|
||||
if (!_initState) {
|
||||
OpenGLGraphicsManager::updateScreen();
|
||||
eglSwapBuffers(_eglDisplay, _eglSurface);
|
||||
}
|
||||
}
|
||||
|
||||
@ -133,10 +148,6 @@ bool TizenGraphicsManager::loadEgl() {
|
||||
|
||||
eglBindAPI(EGL_OPENGL_ES_API);
|
||||
|
||||
if (_eglDisplay) {
|
||||
unloadGFXMode();
|
||||
}
|
||||
|
||||
_eglDisplay = eglGetDisplay((EGLNativeDisplayType) EGL_DEFAULT_DISPLAY);
|
||||
if (EGL_NO_DISPLAY == _eglDisplay) {
|
||||
systemError("eglGetDisplay() failed");
|
||||
@ -185,58 +196,8 @@ bool TizenGraphicsManager::loadEgl() {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TizenGraphicsManager::loadGFXMode() {
|
||||
logEntered();
|
||||
|
||||
if (!loadEgl()) {
|
||||
unloadGFXMode();
|
||||
return false;
|
||||
}
|
||||
|
||||
int x, y, width, height;
|
||||
_appForm->GetBounds(x, y, width, height);
|
||||
_videoMode.overlayWidth = _videoMode.hardwareWidth = width;
|
||||
_videoMode.overlayHeight = _videoMode.hardwareHeight = height;
|
||||
_videoMode.scaleFactor = 4; // for proportional sized cursor in the launcher
|
||||
|
||||
AppLog("screen size: %dx%d", _videoMode.hardwareWidth, _videoMode.hardwareHeight);
|
||||
return OpenGLGraphicsManager::loadGFXMode();
|
||||
}
|
||||
|
||||
void TizenGraphicsManager::loadTextures() {
|
||||
logEntered();
|
||||
OpenGLGraphicsManager::loadTextures();
|
||||
}
|
||||
|
||||
void TizenGraphicsManager::internUpdateScreen() {
|
||||
if (!_initState) {
|
||||
OpenGLGraphicsManager::internUpdateScreen();
|
||||
eglSwapBuffers(_eglDisplay, _eglSurface);
|
||||
}
|
||||
}
|
||||
|
||||
void TizenGraphicsManager::unloadGFXMode() {
|
||||
logEntered();
|
||||
_appForm->GetVisualElement()->SetShowState(false);
|
||||
|
||||
if (_eglDisplay != EGL_NO_DISPLAY) {
|
||||
eglMakeCurrent(_eglDisplay, NULL, NULL, NULL);
|
||||
|
||||
if (_eglContext != EGL_NO_CONTEXT) {
|
||||
eglDestroyContext(_eglDisplay, _eglContext);
|
||||
_eglContext = EGL_NO_CONTEXT;
|
||||
}
|
||||
|
||||
if (_eglSurface != EGL_NO_SURFACE) {
|
||||
eglDestroySurface(_eglDisplay, _eglSurface);
|
||||
_eglSurface = EGL_NO_SURFACE;
|
||||
}
|
||||
|
||||
eglTerminate(_eglDisplay);
|
||||
_eglDisplay = EGL_NO_DISPLAY;
|
||||
}
|
||||
|
||||
_eglConfig = NULL;
|
||||
OpenGLGraphicsManager::unloadGFXMode();
|
||||
logLeaving();
|
||||
bool TizenGraphicsManager::loadVideoMode(uint requestedWidth, uint requestedHeight, const Graphics::PixelFormat &format) {
|
||||
// We get this whenever a new resolution is requested. Since Tizen is
|
||||
// using a fixed output size we do nothing like that here.
|
||||
return true;
|
||||
}
|
||||
|
@ -39,28 +39,29 @@ using namespace Tizen::Graphics;
|
||||
using namespace Tizen::Graphics::Opengl;
|
||||
using namespace Tizen::App;
|
||||
|
||||
class TizenGraphicsManager : public OpenGLGraphicsManager {
|
||||
class TizenGraphicsManager : public OpenGL::OpenGLGraphicsManager {
|
||||
public:
|
||||
TizenGraphicsManager(TizenAppForm *appForm);
|
||||
virtual ~TizenGraphicsManager();
|
||||
|
||||
Common::List<Graphics::PixelFormat> getSupportedFormats() const;
|
||||
bool hasFeature(OSystem::Feature f);
|
||||
void updateScreen();
|
||||
void setFeatureState(OSystem::Feature f, bool enable);
|
||||
void updateScreen();
|
||||
|
||||
void setReady();
|
||||
bool isReady() { return !_initState; }
|
||||
const Graphics::Font *getFontOSD();
|
||||
|
||||
bool moveMouse(int16 &x, int16 &y);
|
||||
|
||||
private:
|
||||
void internUpdateScreen();
|
||||
bool loadGFXMode();
|
||||
void loadTextures();
|
||||
void unloadGFXMode();
|
||||
protected:
|
||||
void setInternalMousePosition(int x, int y) {}
|
||||
void showSplash();
|
||||
|
||||
bool loadVideoMode(uint requestedWidth, uint requestedHeight, const Graphics::PixelFormat &format);
|
||||
|
||||
const Graphics::Font *getFontOSD();
|
||||
|
||||
private:
|
||||
bool loadEgl();
|
||||
TizenAppForm *_appForm;
|
||||
EGLDisplay _eglDisplay;
|
||||
|
Loading…
Reference in New Issue
Block a user