aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJody Northup2009-06-23 02:02:51 +0000
committerJody Northup2009-06-23 02:02:51 +0000
commit7c622423157e29b7206ba0c39a7756443ed1e70d (patch)
treed83c24ec9d14669996f2b1db824f37d827083510
parenta937dfde96b35738b916e4299cc4e917fc6d2d9e (diff)
downloadscummvm-rg350-7c622423157e29b7206ba0c39a7756443ed1e70d.tar.gz
scummvm-rg350-7c622423157e29b7206ba0c39a7756443ed1e70d.tar.bz2
scummvm-rg350-7c622423157e29b7206ba0c39a7756443ed1e70d.zip
Merged format initialization into InitSize to allow for backends not supporting gfx transactions.
svn-id: r41801
-rw-r--r--backends/platform/sdl/graphics.cpp21
-rw-r--r--backends/platform/sdl/sdl.h10
-rw-r--r--base/main.cpp3
-rw-r--r--common/system.h30
-rw-r--r--engines/engine.cpp5
5 files changed, 29 insertions, 40 deletions
diff --git a/backends/platform/sdl/graphics.cpp b/backends/platform/sdl/graphics.cpp
index a08239d472..b5ec9b9db8 100644
--- a/backends/platform/sdl/graphics.cpp
+++ b/backends/platform/sdl/graphics.cpp
@@ -353,23 +353,22 @@ int OSystem_SDL::getGraphicsMode() const {
assert (_transactionMode == kTransactionNone);
return _videoMode.mode;
}
-#ifdef ENABLE_RGB_COLOR
-void OSystem_SDL::initFormat(Graphics::PixelFormat format) {
+
+void OSystem_SDL::initSize(uint w, uint h, Graphics::PixelFormat format) {
assert(_transactionMode == kTransactionActive);
+#ifdef ENABLE_RGB_COLOR
//avoid redundant format changes
- if (format == _videoMode.format)
- return;
+ assert(format.bytesPerPixel > 0);
- _videoMode.format = format;
- _transactionDetails.formatChanged = true;
- _screenFormat = format;
-}
+ if (format != _videoMode.format)
+ {
+ _videoMode.format = format;
+ _transactionDetails.formatChanged = true;
+ _screenFormat = format;
+ }
#endif
-void OSystem_SDL::initSize(uint w, uint h) {
- assert(_transactionMode == kTransactionActive);
-
// Avoid redundant res changes
if ((int)w == _videoMode.screenWidth && (int)h == _videoMode.screenHeight)
return;
diff --git a/backends/platform/sdl/sdl.h b/backends/platform/sdl/sdl.h
index aee15fcbd0..db855094cb 100644
--- a/backends/platform/sdl/sdl.h
+++ b/backends/platform/sdl/sdl.h
@@ -82,10 +82,6 @@ public:
TransactionError endGFXTransaction(void);
#ifdef ENABLE_RGB_COLOR
- // Set the depth and format of the video bitmap
- // Typically, CLUT8
- virtual void initFormat(Graphics::PixelFormat format);
-
// Game screen
virtual Graphics::PixelFormat getScreenFormat() const { return _screenFormat; }
@@ -108,9 +104,9 @@ public:
}
#endif
- // Set the size of the video bitmap.
- // Typically, 320x200
- virtual void initSize(uint w, uint h); // overloaded by CE backend
+ // Set the size and format of the video bitmap.
+ // Typically, 320x200 CLUT8
+ virtual void initSize(uint w, uint h, Graphics::PixelFormat format); // overloaded by CE backend
virtual int getScreenChangeID() const { return _screenChangeCount; }
diff --git a/base/main.cpp b/base/main.cpp
index 3bbe6ddd9c..dba4aeccaa 100644
--- a/base/main.cpp
+++ b/base/main.cpp
@@ -226,9 +226,6 @@ static void setupGraphics(OSystem &system) {
// Set the user specified graphics mode (if any).
system.setGraphicsMode(ConfMan.get("gfx_mode").c_str());
-#ifdef ENABLE_RGB_COLOR
- system.initFormat(Graphics::PixelFormat::createFormatCLUT8());
-#endif
system.initSize(320, 200);
if (ConfMan.hasKey("aspect_ratio"))
diff --git a/common/system.h b/common/system.h
index 6846b7b9dd..1f91fc900d 100644
--- a/common/system.h
+++ b/common/system.h
@@ -345,21 +345,6 @@ public:
#ifdef ENABLE_RGB_COLOR
/**
- * Set the color format of the virtual screen. Typical formats include:
- * CLUT8 (e.g. 256 color, for most games)
- * RGB555 (e.g. 16-bit color, for later SCUMM HE games)
- * RGB565 (e.g. 16-bit color, for Urban Runner)
- *
- * This is the pixel format for which the client code generates data;
- * this is not necessarily equal to the hardware pixel format. For example,
- * a backend may perform color lookup of 8-bit graphics before pushing
- * a screen to hardware, or correct the ARGB color order.
- *
- * @param format A pixel format that the backend screen will use
- */
- virtual void initFormat(Graphics::PixelFormat format) = 0;
-
- /**
* Returns the pixel format of the screen.
* @see Graphics::PixelFormat
*/
@@ -373,7 +358,7 @@ public:
#endif
/**
- * Set the size of the virtual screen. Typical sizes include:
+ * Set the size and color format of the virtual screen. Typical sizes include:
* - 320x200 (e.g. for most SCUMM games, and Simon)
* - 320x240 (e.g. for FM-TOWN SCUMM games)
* - 640x480 (e.g. for Curse of Monkey Island)
@@ -384,10 +369,21 @@ public:
* GraphicsMode); stretch the data to perform aspect ratio correction;
* or shrink it to fit on small screens (in cell phones).
*
+ * Typical formats include:
+ * CLUT8 (e.g. 256 color, for most games)
+ * RGB555 (e.g. 16-bit color, for later SCUMM HE games)
+ * RGB565 (e.g. 16-bit color, for Urban Runner)
+ *
+ * This is the pixel format for which the client code generates data;
+ * this is not necessarily equal to the hardware pixel format. For example,
+ * a backend may perform color lookup of 8-bit graphics before pushing
+ * a screen to hardware, or correct the ARGB color order.
+ *
* @param width the new virtual screen width
* @param height the new virtual screen height
+ * @param format the new virtual screen pixel format
*/
- virtual void initSize(uint width, uint height) = 0;
+ virtual void initSize(uint width, uint height, Graphics::PixelFormat format = Graphics::PixelFormat::createFormatCLUT8()) = 0;
/**
* Return an int value which is changed whenever any screen
diff --git a/engines/engine.cpp b/engines/engine.cpp
index 15c6820f22..7a76de36dc 100644
--- a/engines/engine.cpp
+++ b/engines/engine.cpp
@@ -135,9 +135,10 @@ void initGraphics(int width, int height, bool defaultTo1xScaler, Graphics::Pixel
initCommonGFX(defaultTo1xScaler);
#ifdef ENABLE_RGB_COLOR
- g_system->initFormat(format);
-#endif
+ g_system->initSize(width, height, format);
+#else
g_system->initSize(width, height);
+#endif
OSystem::TransactionError gfxError = g_system->endGFXTransaction();