Surprise, surprise, Microsoft doesn't support the C99 standard,

and doesn't know what intxx_t datatypes are.  So we need yet another
check for Win32-specific stuff in BSPF.

Folded getTicks() from UNIX and OSX back into OSystem directly.
The default is now to use OSystem::getTicks() unless it's
overrided by a platform-specific OSystemXXX class.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1824 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2009-07-01 16:04:28 +00:00
parent 8a8d04031a
commit 594954789c
7 changed files with 49 additions and 69 deletions

View File

@ -21,6 +21,11 @@
#include <fstream>
#include <zlib.h>
#ifdef HAVE_GETTIMEOFDAY
#include <time.h>
#include <sys/time.h>
#endif
#include "bspf.hxx"
#include "MediaFactory.hxx"
@ -862,6 +867,19 @@ void OSystem::stateChanged(EventHandler::State state)
{
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uInt64 OSystem::getTicks() const
{
#ifdef HAVE_GETTIMEOFDAY
timeval now;
gettimeofday(&now, 0);
return uInt64(now.tv_sec) * 1000000 + now.tv_usec;
#else
return uInt64(SDL_GetTicks()) * 1000;
#endif
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void OSystem::mainLoop()
{

View File

@ -368,7 +368,7 @@ class OSystem
@return Current time in microseconds.
*/
virtual uInt64 getTicks() const = 0;
virtual uInt64 getTicks() const;
//////////////////////////////////////////////////////////////////////
// The following methods are system-specific and can be overrided in

View File

@ -29,23 +29,36 @@
#ifdef HAVE_INTTYPES
#include <inttypes.h>
// Types for 8-bit signed and unsigned integers
typedef int8_t Int8;
typedef uint8_t uInt8;
// Types for 16-bit signed and unsigned integers
typedef int16_t Int16;
typedef uint16_t uInt16;
// Types for 32-bit signed and unsigned integers
typedef int32_t Int32;
typedef uint32_t uInt32;
// Types for 64-bit signed and unsigned integers
typedef int64_t Int64;
typedef uint64_t uInt64;
#elif defined BSPF_WIN32
// Types for 8-bit signed and unsigned integers
typedef signed char Int8;
typedef unsigned char uInt8;
// Types for 16-bit signed and unsigned integers
typedef signed short Int16;
typedef unsigned short uInt16;
// Types for 32-bit signed and unsigned integers
typedef signed int Int32;
typedef unsigned int uInt32;
// Types for 64-bit signed and unsigned integers
typedef __int64 Int64;
typedef unsigned __int64 uInt64;
#else
#error Update BSPF.hxx for datatypes
#endif
// Types for 8-bit signed and unsigned integers
typedef int8_t Int8;
typedef uint8_t uInt8;
// Types for 16-bit signed and unsigned integers
typedef int16_t Int16;
typedef uint16_t uInt16;
// Types for 32-bit signed and unsigned integers
typedef int32_t Int32;
typedef uint32_t uInt32;
// Types for 64-bit signed and unsigned integers
typedef int64_t Int64;
typedef uint64_t uInt64;
// The following code should provide access to the standard C++ objects and
// types: cout, cerr, string, ostream, istream, etc.

View File

@ -31,11 +31,6 @@
#include "OSystemMACOSX.hxx"
#include "MenusEvents.h"
#ifdef HAVE_GETTIMEOFDAY
#include <time.h>
#include <sys/time.h>
#endif
extern "C" {
void macOpenConsole(char *romname);
uInt16 macOSXDisplayWidth(void);
@ -93,6 +88,8 @@ OSystemMACOSX::OSystemMACOSX()
: OSystem()
{
setBaseDir("~/.stella");
// This will be overridden, as OSX uses plist files for settings
setConfigFile("~/.stella/stellarc");
}
@ -101,19 +98,6 @@ OSystemMACOSX::~OSystemMACOSX()
{
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uInt64 OSystemMACOSX::getTicks() const
{
#ifdef HAVE_GETTIMEOFDAY
timeval now;
gettimeofday(&now, 0);
return uInt64(now.tv_sec) * 1000000 + now.tv_usec;
#else
return uInt64(SDL_GetTicks()) * 1000;
#endif
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void OSystemMACOSX::getScreenDimensions(int& width, int& height)
{

View File

@ -42,13 +42,6 @@ class OSystemMACOSX : public OSystem
virtual ~OSystemMACOSX();
public:
/**
This method returns number of ticks in microseconds.
@return Current time in microseconds.
*/
virtual uInt64 getTicks() const;
/**
This method queries the dimensions of the screen for this hardware.
*/

View File

@ -16,18 +16,10 @@
// $Id$
//============================================================================
#include <cstdlib>
#include <unistd.h>
#include "bspf.hxx"
#include "OSystem.hxx"
#include "OSystemUNIX.hxx"
#ifdef HAVE_GETTIMEOFDAY
#include <time.h>
#include <sys/time.h>
#endif
/**
Each derived class is responsible for calling the following methods
in its constructor:
@ -50,16 +42,3 @@ OSystemUNIX::OSystemUNIX()
OSystemUNIX::~OSystemUNIX()
{
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uInt64 OSystemUNIX::getTicks() const
{
#ifdef HAVE_GETTIMEOFDAY
timeval now;
gettimeofday(&now, 0);
return uInt64(now.tv_sec) * 1000000 + now.tv_usec;
#else
return uInt64(SDL_GetTicks()) * 1000;
#endif
}

View File

@ -39,13 +39,6 @@ class OSystemUNIX : public OSystem
Destructor
*/
virtual ~OSystemUNIX();
/**
This method returns number of ticks in microseconds.
@return Current time in microseconds.
*/
uInt64 getTicks() const;
};
#endif