X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fporting.h;h=2a91fdd063245816e02f55a9e390002ec220830f;hb=79e2647556773d46cc0299e73ca23c41a153ff2a;hp=9be09da75d65bf396a00e1d933c038f1c7e5cffe;hpb=1cc40c0a7c260f0562572bc99f39a666a12f1b09;p=minetest.git diff --git a/src/porting.h b/src/porting.h index 9be09da75..2a91fdd06 100644 --- a/src/porting.h +++ b/src/porting.h @@ -33,6 +33,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #endif #include +#include #include "irrlicht.h" #include "irrlichttypes.h" // u32 #include "irrlichttypes_extrabloated.h" @@ -59,7 +60,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include //for uintptr_t - #if (defined(linux) || defined(__linux)) && !defined(_GNU_SOURCE) + #if (defined(linux) || defined(__linux) || defined(__GNU__)) && !defined(_GNU_SOURCE) #define _GNU_SOURCE #endif @@ -227,7 +228,7 @@ void initIrrlicht(irr::IrrlichtDevice * ); #else // Posix #include #include -#ifdef __MACH__ +#if defined(__MACH__) && defined(__APPLE__) #include #include #endif @@ -257,7 +258,7 @@ void initIrrlicht(irr::IrrlichtDevice * ); { struct timespec ts; // from http://stackoverflow.com/questions/5167269/clock-gettime-alternative-in-mac-os-x -#ifdef __MACH__ // OS X does not have clock_gettime, use clock_get_time +#if defined(__MACH__) && defined(__APPLE__) // OS X does not have clock_gettime, use clock_get_time clock_serv_t cclock; mach_timespec_t mts; host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock); @@ -357,7 +358,7 @@ inline u32 getDeltaMs(u32 old_time_ms, u32 new_time_ms) inline void setThreadName(const char *name) { pthread_setname_np(name); } -#elif defined(_WIN32) +#elif defined(_WIN32) || defined(__GNU__) inline void setThreadName(const char* name) {} #else #warning "Unrecognized platform, thread names will not be available." @@ -369,8 +370,64 @@ float getDisplayDensity(); v2u32 getDisplaySize(); v2u32 getWindowSize(); + +std::vector > getSupportedVideoModes(); +std::vector getSupportedVideoDrivers(); +const char *getVideoDriverName(irr::video::E_DRIVER_TYPE type); +const char *getVideoDriverFriendlyName(irr::video::E_DRIVER_TYPE type); #endif +inline const char *getPlatformName() +{ + return +#if defined(ANDROID) + "Android" +#elif defined(linux) || defined(__linux) || defined(__linux__) + "Linux" +#elif defined(_WIN32) || defined(_WIN64) + "Windows" +#elif defined(__DragonFly__) || defined(__FreeBSD__) || \ + defined(__NetBSD__) || defined(__OpenBSD__) + "BSD" +#elif defined(__APPLE__) && defined(__MACH__) + #if TARGET_OS_MAC + "OSX" + #elif TARGET_OS_IPHONE + "iOS" + #else + "Apple" + #endif +#elif defined(_AIX) + "AIX" +#elif defined(__hpux) + "HP-UX" +#elif defined(__sun) || defined(sun) + #if defined(__SVR4) + "Solaris" + #else + "SunOS" + #endif +#elif defined(__CYGWIN__) + "Cygwin" +#elif defined(__unix__) || defined(__unix) + #if defined(_POSIX_VERSION) + "Posix" + #else + "Unix" + #endif +#else + "?" +#endif + ; +} + +void setXorgClassHint(const video::SExposedVideoData &video_data, + const std::string &name); + +// This only needs to be called at the start of execution, since all future +// threads in the process inherit this exception handler +void setWin32ExceptionHandler(); + } // namespace porting #ifdef __ANDROID__