From 97e486dee3a66bd8db0ca623ba65ba0a14da899d Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sat, 25 Feb 2012 19:49:05 +0100 Subject: IPHONE: Implement very basic GFX transaction support. This allows for AR ratio correction changes to take place, even when the AR setting is set after initSize for example. --- backends/platform/iphone/osys_main.h | 4 ++++ backends/platform/iphone/osys_video.mm | 17 ++++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) (limited to 'backends/platform') diff --git a/backends/platform/iphone/osys_main.h b/backends/platform/iphone/osys_main.h index 180d3e9d06..84c460aaf4 100644 --- a/backends/platform/iphone/osys_main.h +++ b/backends/platform/iphone/osys_main.h @@ -121,6 +121,10 @@ public: virtual bool setGraphicsMode(int mode); virtual int getGraphicsMode() const; virtual void initSize(uint width, uint height, const Graphics::PixelFormat *format); + + virtual void beginGFXTransaction(); + virtual TransactionError endGFXTransaction(); + virtual int16 getHeight(); virtual int16 getWidth(); diff --git a/backends/platform/iphone/osys_video.mm b/backends/platform/iphone/osys_video.mm index 31db4c70e7..265a36f946 100644 --- a/backends/platform/iphone/osys_video.mm +++ b/backends/platform/iphone/osys_video.mm @@ -44,7 +44,6 @@ bool OSystem_IPHONE::setGraphicsMode(int mode) { case kGraphicsModeNone: case kGraphicsModeLinear: _videoContext->graphicsMode = (GraphicsModes)mode; - [g_iPhoneViewInstance performSelectorOnMainThread:@selector(setGraphicsMode) withObject:nil waitUntilDone: YES]; return true; default: @@ -68,17 +67,21 @@ void OSystem_IPHONE::initSize(uint width, uint height, const Graphics::PixelForm _gameScreenRaw = (byte *)malloc(width * height); bzero(_gameScreenRaw, width * height); - updateOutputSurface(); - - clearOverlay(); - _fullScreenIsDirty = false; dirtyFullScreen(); - _videoContext->mouseIsVisible = false; _mouseCursorPaletteEnabled = false; +} + +void OSystem_IPHONE::beginGFXTransaction() { +} + +OSystem::TransactionError OSystem_IPHONE::endGFXTransaction() { _screenChangeCount++; + updateOutputSurface(); + [g_iPhoneViewInstance performSelectorOnMainThread:@selector(setGraphicsMode) withObject:nil waitUntilDone: YES]; - updateScreen(); + // TODO: Can we return better error codes? + return kTransactionSuccess; } void OSystem_IPHONE::updateOutputSurface() { -- cgit v1.2.3