From fe628e44e11cc32f8cea4102a9ee358fb599df37 Mon Sep 17 00:00:00 2001 From: James Turner Date: Sat, 30 Oct 2010 19:18:57 +0100 Subject: [PATCH] Add platform defines to SimGear, and a replacement for ulSleep functions. --- projects/VC90/SimGear.vcproj | 8 +++++ simgear/compiler.h | 14 +++++++++ simgear/misc/Makefile.am | 6 ++-- simgear/misc/sg_sleep.cxx | 60 ++++++++++++++++++++++++++++++++++++ simgear/misc/sg_sleep.hxx | 41 ++++++++++++++++++++++++ 5 files changed, 127 insertions(+), 2 deletions(-) create mode 100644 simgear/misc/sg_sleep.cxx create mode 100644 simgear/misc/sg_sleep.hxx diff --git a/projects/VC90/SimGear.vcproj b/projects/VC90/SimGear.vcproj index fca9e993..2db0dcc5 100644 --- a/projects/VC90/SimGear.vcproj +++ b/projects/VC90/SimGear.vcproj @@ -641,6 +641,14 @@ RelativePath="..\..\simgear\misc\sg_dir.hxx" > + + + + diff --git a/simgear/compiler.h b/simgear/compiler.h index 6a9ec5d8..372f571d 100644 --- a/simgear/compiler.h +++ b/simgear/compiler.h @@ -109,6 +109,7 @@ #if defined (__sun) +# define SG_UNIX # include # include # if defined ( __cplusplus ) @@ -138,6 +139,8 @@ // #ifdef __APPLE__ +# define SG_MAC +# define SG_UNIX # ifdef __GNUC__ # if ( __GNUC__ > 3 ) || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 3 ) inline int (isnan)(double r) { return !(r <= 0 || r >= 0); } @@ -154,6 +157,7 @@ inline int (isnan)(double r) { return !(r <= 0 || r >= 0); } #endif #if defined (__FreeBSD__) +# define SG_UNIX #include # if __FreeBSD_version < 500000 extern "C" { @@ -163,9 +167,19 @@ inline int (isnan)(double r) { return !(r <= 0 || r >= 0); } #endif #if defined (__CYGWIN__) +# define SG_WINDOWS +# define SG_UNIX # include // isnan #endif +// includes both MSVC and mingw compilers +#if defined(_WIN32) || defined(__WIN32__) +# define SG_WINDOWS +#endif + +#if defined(__linux__) || defined(_AIX) || defined ( sgi ) +# define SG_UNIX +#endif // // No user modifiable definitions beyond here. diff --git a/simgear/misc/Makefile.am b/simgear/misc/Makefile.am index 4a4b1fb6..ae696e79 100644 --- a/simgear/misc/Makefile.am +++ b/simgear/misc/Makefile.am @@ -14,7 +14,8 @@ include_HEADERS = \ stdint.hxx \ PathOptions.hxx \ sg_dir.hxx \ - ResourceManager.hxx + ResourceManager.hxx \ + sg_sleep.hxx libsgmisc_a_SOURCES = \ sg_path.cxx \ @@ -26,7 +27,8 @@ libsgmisc_a_SOURCES = \ interpolator.cxx \ PathOptions.cxx \ sg_dir.cxx \ - ResourceManager.cxx + ResourceManager.cxx \ + sg_sleep.cxx #noinst_PROGRAMS = tabbed_value_test swap_test diff --git a/simgear/misc/sg_sleep.cxx b/simgear/misc/sg_sleep.cxx new file mode 100644 index 00000000..a52880c5 --- /dev/null +++ b/simgear/misc/sg_sleep.cxx @@ -0,0 +1,60 @@ + +// Written by James Turner, started July 2010. +// +// Copyright (C) 2010 Curtis L. Olson - http://www.flightgear.org/~curt +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Library General Public +// License as published by the Free Software Foundation; either +// version 2 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Library General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// +// $Id$ + +#include + +#ifdef SG_WINDOWS +# include +#else +# include +#endif + +namespace simgear +{ + +#ifdef SG_WINDOWS + +void sleepForSeconds(int seconds) +{ + Sleep(1000 * seconds); +} + +void sleepForMSec(int msec) +{ + Sleep(msec); +} + +#else + +void sleepForSeconds(int seconds) +{ + ::sleep(seconds); +} + +void sleepForMSec(int msec) +{ + ::usleep(msec * 1000); +} + +#endif + +} // of namespace simhear + diff --git a/simgear/misc/sg_sleep.hxx b/simgear/misc/sg_sleep.hxx new file mode 100644 index 00000000..389fdff3 --- /dev/null +++ b/simgear/misc/sg_sleep.hxx @@ -0,0 +1,41 @@ + +// Written by James Turner, started July 2010. +// +// Copyright (C) 2010 Curtis L. Olson - http://www.flightgear.org/~curt +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Library General Public +// License as published by the Free Software Foundation; either +// version 2 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Library General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// +// $Id$ + + +#ifndef _SG_SLEEP_HXX +#define _SG_SLEEP_HXX + + +#include + + +namespace simgear +{ + +void sleepForSeconds(int seconds); + +void sleepForMSec(int msec); + +} // of namespace simgear + +#endif // _SG_SLEEP_HXX + +