From 0afd79900267859ea8a6e241afbe5f75bfea4936 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 16 Jul 2021 00:32:15 +0200 Subject: [PATCH] Remove various ancient support code --- include/IOSOperator.h | 5 - source/Irrlicht/CIrrDeviceConsole.cpp | 3 - source/Irrlicht/CIrrDeviceConsole.h | 2 - source/Irrlicht/CIrrDeviceLinux.cpp | 5 +- source/Irrlicht/CIrrDeviceOSX.mm | 67 ---- source/Irrlicht/CIrrDeviceWin32.cpp | 479 +------------------------- source/Irrlicht/CIrrDeviceWin32.h | 12 +- source/Irrlicht/COSOperator.cpp | 76 ---- source/Irrlicht/COSOperator.h | 5 - 9 files changed, 17 insertions(+), 637 deletions(-) diff --git a/include/IOSOperator.h b/include/IOSOperator.h index eeb1856d..5d2d42aa 100644 --- a/include/IOSOperator.h +++ b/include/IOSOperator.h @@ -32,11 +32,6 @@ public: /** \return Returns 0 if no string is in there. */ virtual const c8* getTextFromClipboard() const = 0; - //! Get the processor speed in megahertz - /** \param MHz The integer variable to store the speed in. - \return True if successful, false if not */ - virtual bool getProcessorSpeedMHz(u32* MHz) const = 0; - //! Get the total and available system RAM /** \param totalBytes: will contain the total system memory in bytes \param availableBytes: will contain the available memory in bytes diff --git a/source/Irrlicht/CIrrDeviceConsole.cpp b/source/Irrlicht/CIrrDeviceConsole.cpp index 8a2414a3..b93867d5 100644 --- a/source/Irrlicht/CIrrDeviceConsole.cpp +++ b/source/Irrlicht/CIrrDeviceConsole.cpp @@ -76,15 +76,12 @@ CIrrDeviceConsole::CIrrDeviceConsole(const SIrrlichtCreationParameters& params) if (CreationParams.Fullscreen) { -// Some mingw versions lack this define, so avoid it in case it does not exist -#if (_WIN32_WINNT >= 0x0501) && defined(CONSOLE_FULLSCREEN_MODE) PCOORD dimensions = 0; if (SetConsoleDisplayMode(WindowsSTDOut, CONSOLE_FULLSCREEN_MODE, dimensions)) { CreationParams.WindowSize.Width = dimensions->X; CreationParams.WindowSize.Width = dimensions->Y; } -#endif } else { diff --git a/source/Irrlicht/CIrrDeviceConsole.h b/source/Irrlicht/CIrrDeviceConsole.h index 43d34591..45ff576b 100644 --- a/source/Irrlicht/CIrrDeviceConsole.h +++ b/source/Irrlicht/CIrrDeviceConsole.h @@ -21,9 +21,7 @@ #if !defined(_IRR_XBOX_PLATFORM_) #include #endif -#if(_WIN32_WINNT >= 0x0500) #define _IRR_WINDOWS_NT_CONSOLE_ -#endif #else #include #endif diff --git a/source/Irrlicht/CIrrDeviceLinux.cpp b/source/Irrlicht/CIrrDeviceLinux.cpp index 1ff2942b..82aa243b 100644 --- a/source/Irrlicht/CIrrDeviceLinux.cpp +++ b/source/Irrlicht/CIrrDeviceLinux.cpp @@ -453,8 +453,7 @@ bool CIrrDeviceLinux::createWindow() switchToFullscreen(); WindowMinimized=false; - // Currently broken in X, see Bug ID 2795321 - // XkbSetDetectableAutoRepeat(XDisplay, True, &AutorepeatSupport); + XkbSetDetectableAutoRepeat(XDisplay, True, &AutorepeatSupport); Window tmp; u32 borderWidth; @@ -633,7 +632,6 @@ bool CIrrDeviceLinux::createInputContext() XIMStyles *im_supported_styles; XGetIMValues(XInputMethod, XNQueryInputStyle, &im_supported_styles, (char*)NULL); XIMStyle bestStyle = 0; - // TODO: If we want to support languages like chinese or japanese as well we probably have to work with callbacks here. XIMStyle supportedStyle = XIMPreeditNothing | XIMStatusNothing; for(int i=0; i < im_supported_styles->count_styles; ++i) { @@ -692,7 +690,6 @@ EKEY_CODE CIrrDeviceLinux::getKeyCode(XEvent &event) SKeyMap mp; mp.X11Key = XkbKeycodeToKeysym(XDisplay, event.xkey.keycode, 0, 0); - // mp.X11Key = XKeycodeToKeysym(XDisplay, event.xkey.keycode, 0); // deprecated, if we still find platforms which need that we have to use some define const s32 idx = KeyMap.binary_search(mp); if (idx != -1) { diff --git a/source/Irrlicht/CIrrDeviceOSX.mm b/source/Irrlicht/CIrrDeviceOSX.mm index c307fd7c..b17cefd2 100644 --- a/source/Irrlicht/CIrrDeviceOSX.mm +++ b/source/Irrlicht/CIrrDeviceOSX.mm @@ -10,9 +10,6 @@ #import #import -#ifndef __MAC_10_6 -#import -#endif #include "CIrrDeviceOSX.h" @@ -38,12 +35,7 @@ #include #include -#ifdef MACOS_10_0_4 -#include -#else -/* The header was moved here in Mac OS X 10.1 */ #include -#endif #include #include @@ -301,8 +293,6 @@ static void getJoystickDeviceInfo (io_object_t hidDevice, CFMutableDictionaryRef #endif // _IRR_COMPILE_WITH_JOYSTICK_EVENTS_ -// only OSX 10.5 seems to not need these defines... -#if !defined(__MAC_10_5) || defined(__MAC_10_6) // Contents from Events.h from Carbon/HIToolbox but we need it with Cocoa too // and for some reason no Cocoa equivalent of these constants seems provided. // So I'm doing like everyone else and using copy-and-paste. @@ -440,7 +430,6 @@ enum { kVK_DownArrow = 0x7D, kVK_UpArrow = 0x7E }; -#endif //------------------------------------------------------------------------------------------ Boolean GetDictionaryBoolean(CFDictionaryRef theDict, const void* key) @@ -629,11 +618,7 @@ CIrrDeviceMacOSX::CIrrDeviceMacOSX(const SIrrlichtCreationParameters& param) CIrrDeviceMacOSX::~CIrrDeviceMacOSX() { [SoftwareDriverTarget release]; -#ifdef __MAC_10_6 [NSApp setPresentationOptions:(NSApplicationPresentationDefault)]; -#else - SetSystemUIMode(kUIModeNormal, kUIOptionAutoShowMenuBar); -#endif closeDevice(); #if defined(_IRR_COMPILE_WITH_JOYSTICK_EVENTS_) for (u32 joystick = 0; joystick < ActiveJoysticks.size(); ++joystick) @@ -668,11 +653,7 @@ bool CIrrDeviceMacOSX::createWindow() Display = CGMainDisplayID(); CGRect displayRect; -#ifdef __MAC_10_6 CGDisplayModeRef displaymode, olddisplaymode; -#else - CFDictionaryRef displaymode, olddisplaymode; -#endif ScreenWidth = (int)CGDisplayPixelsWide(Display); ScreenHeight = (int)CGDisplayPixelsHigh(Display); @@ -707,7 +688,6 @@ bool CIrrDeviceMacOSX::createWindow() { IsFullscreen = true; -#ifdef __MAC_10_6 displaymode = CGDisplayCopyDisplayMode(Display); CFArrayRef Modes = CGDisplayCopyAllDisplayModes(Display, NULL); @@ -734,26 +714,15 @@ bool CIrrDeviceMacOSX::createWindow() break; } } -#else - displaymode = CGDisplayBestModeForParameters(Display,CreationParams.Bits,CreationParams.WindowSize.Width,CreationParams.WindowSize.Height,NULL); -#endif if (displaymode != NULL) { -#ifdef __MAC_10_6 olddisplaymode = CGDisplayCopyDisplayMode(Display); -#else - olddisplaymode = CGDisplayCurrentMode(Display); -#endif error = CGCaptureAllDisplays(); if (error == CGDisplayNoErr) { -#ifdef __MAC_10_6 error = CGDisplaySetDisplayMode(Display, displaymode, NULL); -#else - error = CGDisplaySwitchToMode(Display, displaymode); -#endif if (error == CGDisplayNoErr) { @@ -788,11 +757,7 @@ bool CIrrDeviceMacOSX::createWindow() if (IsFullscreen) //hide menus in fullscreen mode only { -#ifdef __MAC_10_6 [NSApp setPresentationOptions:(NSApplicationPresentationAutoHideDock | NSApplicationPresentationAutoHideMenuBar)]; -#else - SetSystemUIMode(kUIModeAllHidden, kUIOptionAutoShowMenuBar); -#endif } } @@ -874,11 +839,6 @@ void CIrrDeviceMacOSX::createDriver() [(NSView*)CreationParams.WindowId setWantsBestResolutionOpenGLSurface:NO]; [(NSOpenGLContext*)ContextManager->getContext().OpenGLOSX.Context setView:(NSView*)CreationParams.WindowId]; } - -#ifndef __MAC_10_6 - CGLContextObj CGLContext = (CGLContextObj)[(NSOpenGLContext*)ContextManager->getContext().OpenGLOSX.Context CGLContextObj]; - CGLSetFullScreen(CGLContext); -#endif } #else os::Printer::log("No OpenGL support compiled in.", ELL_ERROR); @@ -1279,14 +1239,9 @@ void CIrrDeviceMacOSX::setMouseLocation(int x,int y) c.x = p.x; c.y = p.y; -#ifdef __MAC_10_6 CGEventRef ev = CGEventCreateMouseEvent(NULL, kCGEventMouseMoved, c, kCGMouseButtonLeft); CGEventPost(kCGHIDEventTap, ev); CFRelease(ev); -#else - CGSetLocalEventsSuppressionInterval(0); - CGWarpMouseCursorPosition(c); -#endif } @@ -1797,7 +1752,6 @@ video::IVideoModeList* CIrrDeviceMacOSX::getVideoModeList() CGDirectDisplayID display; display = CGMainDisplayID(); -#ifdef __MAC_10_6 CFArrayRef Modes = CGDisplayCopyAllDisplayModes(display, NULL); for(int i = 0; i < CFArrayGetCount(Modes); ++i) @@ -1825,27 +1779,6 @@ video::IVideoModeList* CIrrDeviceMacOSX::getVideoModeList() VideoModeList->addMode(core::dimension2d(Width, Height), Depth); } } -#else - CFArrayRef availableModes = CGDisplayAvailableModes(display); - unsigned int numberOfAvailableModes = CFArrayGetCount(availableModes); - for (u32 i= 0; i(width, height), - bitsPerPixel); - } -#endif } return VideoModeList; } diff --git a/source/Irrlicht/CIrrDeviceWin32.cpp b/source/Irrlicht/CIrrDeviceWin32.cpp index 09fb7ab1..ed8a3502 100644 --- a/source/Irrlicht/CIrrDeviceWin32.cpp +++ b/source/Irrlicht/CIrrDeviceWin32.cpp @@ -528,166 +528,6 @@ bool SJoystickWin32Control::activateJoysticks(core::array & joyst } } // end namespace irr -// Get the codepage from the locale language id -// Based on the table from http://www.science.co.il/Language/Locale-Codes.asp?s=decimal -static unsigned int LocaleIdToCodepage(unsigned int lcid) -{ - switch ( lcid ) - { - case 1098: // Telugu - case 1095: // Gujarati - case 1094: // Punjabi - case 1103: // Sanskrit - case 1111: // Konkani - case 1114: // Syriac - case 1099: // Kannada - case 1102: // Marathi - case 1125: // Divehi - case 1067: // Armenian - case 1081: // Hindi - case 1079: // Georgian - case 1097: // Tamil - return 0; - case 1054: // Thai - return 874; - case 1041: // Japanese - return 932; - case 2052: // Chinese (PRC) - case 4100: // Chinese (Singapore) - return 936; - case 1042: // Korean - return 949; - case 5124: // Chinese (Macau S.A.R.) - case 3076: // Chinese (Hong Kong S.A.R.) - case 1028: // Chinese (Taiwan) - return 950; - case 1048: // Romanian - case 1060: // Slovenian - case 1038: // Hungarian - case 1051: // Slovak - case 1045: // Polish - case 1052: // Albanian - case 2074: // Serbian (Latin) - case 1050: // Croatian - case 1029: // Czech - return 1250; - case 1104: // Mongolian (Cyrillic) - case 1071: // FYRO Macedonian - case 2115: // Uzbek (Cyrillic) - case 1058: // Ukrainian - case 2092: // Azeri (Cyrillic) - case 1092: // Tatar - case 1087: // Kazakh - case 1059: // Belarusian - case 1088: // Kyrgyz (Cyrillic) - case 1026: // Bulgarian - case 3098: // Serbian (Cyrillic) - case 1049: // Russian - return 1251; - case 8201: // English (Jamaica) - case 3084: // French (Canada) - case 1036: // French (France) - case 5132: // French (Luxembourg) - case 5129: // English (New Zealand) - case 6153: // English (Ireland) - case 1043: // Dutch (Netherlands) - case 9225: // English (Caribbean) - case 4108: // French (Switzerland) - case 4105: // English (Canada) - case 1110: // Galician - case 10249: // English (Belize) - case 3079: // German (Austria) - case 6156: // French (Monaco) - case 12297: // English (Zimbabwe) - case 1069: // Basque - case 2067: // Dutch (Belgium) - case 2060: // French (Belgium) - case 1035: // Finnish - case 1080: // Faroese - case 1031: // German (Germany) - case 3081: // English (Australia) - case 1033: // English (United States) - case 2057: // English (United Kingdom) - case 1027: // Catalan - case 11273: // English (Trinidad) - case 7177: // English (South Africa) - case 1030: // Danish - case 13321: // English (Philippines) - case 15370: // Spanish (Paraguay) - case 9226: // Spanish (Colombia) - case 5130: // Spanish (Costa Rica) - case 7178: // Spanish (Dominican Republic) - case 12298: // Spanish (Ecuador) - case 17418: // Spanish (El Salvador) - case 4106: // Spanish (Guatemala) - case 18442: // Spanish (Honduras) - case 3082: // Spanish (International Sort) - case 13322: // Spanish (Chile) - case 19466: // Spanish (Nicaragua) - case 2058: // Spanish (Mexico) - case 10250: // Spanish (Peru) - case 20490: // Spanish (Puerto Rico) - case 1034: // Spanish (Traditional Sort) - case 14346: // Spanish (Uruguay) - case 8202: // Spanish (Venezuela) - case 1089: // Swahili - case 1053: // Swedish - case 2077: // Swedish (Finland) - case 5127: // German (Liechtenstein) - case 1078: // Afrikaans - case 6154: // Spanish (Panama) - case 4103: // German (Luxembourg) - case 16394: // Spanish (Bolivia) - case 2055: // German (Switzerland) - case 1039: // Icelandic - case 1057: // Indonesian - case 1040: // Italian (Italy) - case 2064: // Italian (Switzerland) - case 2068: // Norwegian (Nynorsk) - case 11274: // Spanish (Argentina) - case 1046: // Portuguese (Brazil) - case 1044: // Norwegian (Bokmal) - case 1086: // Malay (Malaysia) - case 2110: // Malay (Brunei Darussalam) - case 2070: // Portuguese (Portugal) - return 1252; - case 1032: // Greek - return 1253; - case 1091: // Uzbek (Latin) - case 1068: // Azeri (Latin) - case 1055: // Turkish - return 1254; - case 1037: // Hebrew - return 1255; - case 5121: // Arabic (Algeria) - case 15361: // Arabic (Bahrain) - case 9217: // Arabic (Yemen) - case 3073: // Arabic (Egypt) - case 2049: // Arabic (Iraq) - case 11265: // Arabic (Jordan) - case 13313: // Arabic (Kuwait) - case 12289: // Arabic (Lebanon) - case 4097: // Arabic (Libya) - case 6145: // Arabic (Morocco) - case 8193: // Arabic (Oman) - case 16385: // Arabic (Qatar) - case 1025: // Arabic (Saudi Arabia) - case 10241: // Arabic (Syria) - case 14337: // Arabic (U.A.E.) - case 1065: // Farsi - case 1056: // Urdu - case 7169: // Arabic (Tunisia) - return 1256; - case 1061: // Estonian - case 1062: // Latvian - case 1063: // Lithuanian - return 1257; - case 1066: // Vietnamese - return 1258; - } - return 65001; // utf-8 -} - namespace { struct SEnvMapper @@ -699,7 +539,6 @@ namespace irr::core::array EnvMap; HKL KEYBOARD_INPUT_HKL=0; - unsigned int KEYBOARD_INPUT_CODEPAGE = 1252; } irr::CIrrDeviceWin32* getDeviceFromHWnd(HWND hWnd) @@ -718,9 +557,6 @@ irr::CIrrDeviceWin32* getDeviceFromHWnd(HWND hWnd) LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { - #ifndef WM_MOUSEWHEEL - #define WM_MOUSEWHEEL 0x020A - #endif #ifndef WHEEL_DELTA #define WHEEL_DELTA 120 #endif @@ -787,12 +623,10 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) // middle and extra buttons if (wParam & MK_MBUTTON) event.MouseInput.ButtonStates |= irr::EMBSM_MIDDLE; -#if(_WIN32_WINNT >= 0x0500) if (wParam & MK_XBUTTON1) event.MouseInput.ButtonStates |= irr::EMBSM_EXTRA1; if (wParam & MK_XBUTTON2) event.MouseInput.ButtonStates |= irr::EMBSM_EXTRA2; -#endif event.MouseInput.Wheel = 0.f; // wheel @@ -853,22 +687,20 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) event.KeyInput.Key = (irr::EKEY_CODE)wParam; event.KeyInput.PressedDown = (message==WM_KEYDOWN || message == WM_SYSKEYDOWN); - const UINT MY_MAPVK_VSC_TO_VK_EX = 3; // MAPVK_VSC_TO_VK_EX should be in SDK according to MSDN, but isn't in mine. if ( event.KeyInput.Key == irr::KEY_SHIFT ) { - // this will fail on systems before windows NT/2000/XP, not sure _what_ will return there instead. - event.KeyInput.Key = (irr::EKEY_CODE)MapVirtualKey( ((lParam>>16) & 255), MY_MAPVK_VSC_TO_VK_EX ); + event.KeyInput.Key = (irr::EKEY_CODE)MapVirtualKey( ((lParam>>16) & 255), MAPVK_VSC_TO_VK_EX ); } if ( event.KeyInput.Key == irr::KEY_CONTROL ) { - event.KeyInput.Key = (irr::EKEY_CODE)MapVirtualKey( ((lParam>>16) & 255), MY_MAPVK_VSC_TO_VK_EX ); + event.KeyInput.Key = (irr::EKEY_CODE)MapVirtualKey( ((lParam>>16) & 255), MAPVK_VSC_TO_VK_EX ); // some keyboards will just return LEFT for both - left and right keys. So also check extend bit. if (lParam & 0x1000000) event.KeyInput.Key = irr::KEY_RCONTROL; } if ( event.KeyInput.Key == irr::KEY_MENU ) { - event.KeyInput.Key = (irr::EKEY_CODE)MapVirtualKey( ((lParam>>16) & 255), MY_MAPVK_VSC_TO_VK_EX ); + event.KeyInput.Key = (irr::EKEY_CODE)MapVirtualKey( ((lParam>>16) & 255), MAPVK_VSC_TO_VK_EX ); if (lParam & 0x1000000) event.KeyInput.Key = irr::KEY_RMENU; } @@ -878,23 +710,12 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) event.KeyInput.Shift = ((allKeys[VK_SHIFT] & 0x80)!=0); event.KeyInput.Control = ((allKeys[VK_CONTROL] & 0x80)!=0); - // Handle unicode and deadkeys in a way that works since Windows 95 and nt4.0 - // Using ToUnicode instead would be shorter, but would to my knowledge not run on 95 and 98. - WORD keyChars[2]; + // Handle unicode and deadkeys + WCHAR keyChars[2]; UINT scanCode = HIWORD(lParam); - int conversionResult = ToAsciiEx(static_cast(wParam),scanCode,allKeys,keyChars,0,KEYBOARD_INPUT_HKL); + int conversionResult = ToUnicodeEx(static_cast(wParam),scanCode,allKeys,keyChars,2,0,KEYBOARD_INPUT_HKL); if (conversionResult == 1) - { - WORD unicodeChar; - MultiByteToWideChar( - KEYBOARD_INPUT_CODEPAGE, - MB_PRECOMPOSED, // default - (LPCSTR)keyChars, - sizeof(keyChars), - (WCHAR*)&unicodeChar, - 1 ); - event.KeyInput.Char = unicodeChar; - } + event.KeyInput.Char = keyChars[0]; else event.KeyInput.Char = 0; @@ -959,7 +780,6 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) case WM_INPUTLANGCHANGE: // get the new codepage used for keyboard input KEYBOARD_INPUT_HKL = GetKeyboardLayout(0); - KEYBOARD_INPUT_CODEPAGE = LocaleIdToCodepage( LOWORD(KEYBOARD_INPUT_HKL) ); return 0; } return DefWindowProc(hWnd, message, wParam, lParam); @@ -1107,9 +927,7 @@ CIrrDeviceWin32::CIrrDeviceWin32(const SIrrlichtCreationParameters& params) SetForegroundWindow(HWnd); } - // get the codepage used for keyboard input KEYBOARD_INPUT_HKL = GetKeyboardLayout(0); - KEYBOARD_INPUT_CODEPAGE = LocaleIdToCodepage( LOWORD(KEYBOARD_INPUT_HKL) ); // inform driver about the window size etc. resizeIfNecessary(); @@ -1443,229 +1261,17 @@ CIrrDeviceWin32::CCursorControl* CIrrDeviceWin32::getWin32CursorControl() return Win32CursorControl; } - -typedef BOOL (WINAPI *PGPI)(DWORD, DWORD, DWORD, DWORD, PDWORD); -// Needed for old windows apis -// depending on the SDK version and compilers some defines might be available -// or not -#ifndef PRODUCT_ULTIMATE -#define PRODUCT_ULTIMATE 0x00000001 -#define PRODUCT_HOME_BASIC 0x00000002 -#define PRODUCT_HOME_PREMIUM 0x00000003 -#define PRODUCT_ENTERPRISE 0x00000004 -#define PRODUCT_HOME_BASIC_N 0x00000005 -#define PRODUCT_BUSINESS 0x00000006 -#define PRODUCT_STARTER 0x0000000B -#endif -#ifndef PRODUCT_ULTIMATE_N -#define PRODUCT_BUSINESS_N 0x00000010 -#define PRODUCT_HOME_PREMIUM_N 0x0000001A -#define PRODUCT_ENTERPRISE_N 0x0000001B -#define PRODUCT_ULTIMATE_N 0x0000001C -#endif -#ifndef PRODUCT_STARTER_N -#define PRODUCT_STARTER_N 0x0000002F -#endif -#ifndef PRODUCT_PROFESSIONAL -#define PRODUCT_PROFESSIONAL 0x00000030 -#define PRODUCT_PROFESSIONAL_N 0x00000031 -#endif -#ifndef PRODUCT_ULTIMATE_E -#define PRODUCT_STARTER_E 0x00000042 -#define PRODUCT_HOME_BASIC_E 0x00000043 -#define PRODUCT_HOME_PREMIUM_E 0x00000044 -#define PRODUCT_PROFESSIONAL_E 0x00000045 -#define PRODUCT_ENTERPRISE_E 0x00000046 -#define PRODUCT_ULTIMATE_E 0x00000047 -#endif - void CIrrDeviceWin32::getWindowsVersion(core::stringc& out) { - OSVERSIONINFOEX osvi; - PGPI pGPI; - BOOL bOsVersionInfoEx; + OSVERSIONINFO osvi; - ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX)); - osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); + ZeroMemory(&osvi, sizeof(OSVERSIONINFO)); + osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&osvi); - bOsVersionInfoEx = GetVersionEx((OSVERSIONINFO*) &osvi); - if (!bOsVersionInfoEx) - { - osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - if (! GetVersionEx((OSVERSIONINFO *) &osvi)) - return; - } - - switch (osvi.dwPlatformId) - { - case VER_PLATFORM_WIN32_NT: - if (osvi.dwMajorVersion <= 4) - out.append("Microsoft Windows NT "); - else - if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0) - out.append("Microsoft Windows 2000 "); - else - if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1) - out.append("Microsoft Windows XP "); - else - if (osvi.dwMajorVersion == 6 ) - { - if (osvi.dwMinorVersion == 0) - { - if (osvi.wProductType == VER_NT_WORKSTATION) - out.append("Microsoft Windows Vista "); - else - out.append("Microsoft Windows Server 2008 "); - } - else if (osvi.dwMinorVersion == 1) - { - if (osvi.wProductType == VER_NT_WORKSTATION) - out.append("Microsoft Windows 7 "); - else - out.append("Microsoft Windows Server 2008 R2 "); - } - else if (osvi.dwMinorVersion == 2) - { - out.append("Microsoft Windows 8 or later "); - } - } - - if (bOsVersionInfoEx) - { - if (osvi.dwMajorVersion == 6) - { - DWORD dwType; - pGPI = (PGPI)GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "GetProductInfo"); - pGPI(osvi.dwMajorVersion, osvi.dwMinorVersion, 0, 0, &dwType); - - switch (dwType) - { - case PRODUCT_ULTIMATE: - case PRODUCT_ULTIMATE_E: - case PRODUCT_ULTIMATE_N: - out.append("Ultimate Edition "); - break; - case PRODUCT_PROFESSIONAL: - case PRODUCT_PROFESSIONAL_E: - case PRODUCT_PROFESSIONAL_N: - out.append("Professional Edition "); - break; - case PRODUCT_HOME_BASIC: - case PRODUCT_HOME_BASIC_E: - case PRODUCT_HOME_BASIC_N: - out.append("Home Basic Edition "); - break; - case PRODUCT_HOME_PREMIUM: - case PRODUCT_HOME_PREMIUM_E: - case PRODUCT_HOME_PREMIUM_N: - out.append("Home Premium Edition "); - break; - case PRODUCT_ENTERPRISE: - case PRODUCT_ENTERPRISE_E: - case PRODUCT_ENTERPRISE_N: - out.append("Enterprise Edition "); - break; - case PRODUCT_BUSINESS: - case PRODUCT_BUSINESS_N: - out.append("Business Edition "); - break; - case PRODUCT_STARTER: - case PRODUCT_STARTER_E: - case PRODUCT_STARTER_N: - out.append("Starter Edition "); - break; - } - } -#ifdef VER_SUITE_ENTERPRISE - else - if (osvi.wProductType == VER_NT_WORKSTATION) - { -#ifndef __BORLANDC__ - if( osvi.wSuiteMask & VER_SUITE_PERSONAL ) - out.append("Personal "); - else - out.append("Professional "); -#endif - } - else if (osvi.wProductType == VER_NT_SERVER) - { - if( osvi.wSuiteMask & VER_SUITE_DATACENTER ) - out.append("DataCenter Server "); - else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE ) - out.append("Advanced Server "); - else - out.append("Server "); - } -#endif - } - else - { - HKEY hKey; - char szProductType[80]; - DWORD dwBufLen; - - RegOpenKeyEx( HKEY_LOCAL_MACHINE, - __TEXT("SYSTEM\\CurrentControlSet\\Control\\ProductOptions"), - 0, KEY_QUERY_VALUE, &hKey ); - RegQueryValueEx( hKey, __TEXT("ProductType"), NULL, NULL, - (LPBYTE) szProductType, &dwBufLen); - RegCloseKey( hKey ); - - - if (irr::core::stringc("WINNT").equals_ignore_case(szProductType)) - out.append("Professional "); - if (irr::core::stringc("LANMANNT").equals_ignore_case(szProductType)) - out.append("Server "); - if (irr::core::stringc("SERVERNT").equals_ignore_case(szProductType)) - out.append("Advanced Server "); - } - - // Display version, service pack (if any), and build number. - - char tmp[255]; - - if (osvi.dwMajorVersion <= 4 ) - { - sprintf(tmp, "version %lu.%lu %s (Build %lu)", - osvi.dwMajorVersion, - osvi.dwMinorVersion, - irr::core::stringc(osvi.szCSDVersion).c_str(), - osvi.dwBuildNumber & 0xFFFF); - } - else - { - sprintf(tmp, "%s (Build %lu)", irr::core::stringc(osvi.szCSDVersion).c_str(), - osvi.dwBuildNumber & 0xFFFF); - } - - out.append(tmp); - break; - - case VER_PLATFORM_WIN32_WINDOWS: - - if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0) - { - out.append("Microsoft Windows 95 "); - if ( osvi.szCSDVersion[1] == 'C' || osvi.szCSDVersion[1] == 'B' ) - out.append("OSR2 " ); - } - - if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10) - { - out.append("Microsoft Windows 98 "); - if ( osvi.szCSDVersion[1] == 'A' ) - out.append( "SE " ); - } - - if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90) - out.append("Microsoft Windows Me "); - - break; - - case VER_PLATFORM_WIN32s: - out.append("Microsoft Win32s "); - break; - } + char tmp[255]; + snprintf(tmp, sizeof(tmp), "Microsoft Windows %lu.%lu %s", osvi.dwMajorVersion, osvi.dwMinorVersion, osvi.szCSDVersion); + out.append(tmp); } //! Notifies the device, that it has been resized @@ -1867,63 +1473,6 @@ void CIrrDeviceWin32::clearSystemMessages() {} } -// shows last error in a messagebox to help internal debugging. -void CIrrDeviceWin32::ReportLastWinApiError() -{ - // (based on code from ovidiucucu from http://www.codeguru.com/forum/showthread.php?t=318721) - LPCTSTR pszCaption = __TEXT("Windows SDK Error Report"); - DWORD dwError = GetLastError(); - - if(NOERROR == dwError) - { - MessageBox(NULL, __TEXT("No error"), pszCaption, MB_OK); - } - else - { - const DWORD dwFormatControl = FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_IGNORE_INSERTS | - FORMAT_MESSAGE_FROM_SYSTEM; - - LPVOID pTextBuffer = NULL; - DWORD dwCount = FormatMessage(dwFormatControl, - NULL, - dwError, - 0, - (LPTSTR) &pTextBuffer, - 0, - NULL); - if(0 != dwCount) - { - MessageBox(NULL, (LPCTSTR)pTextBuffer, pszCaption, MB_OK|MB_ICONERROR); - LocalFree(pTextBuffer); - } - else - { - MessageBox(NULL, __TEXT("Unknown error"), pszCaption, MB_OK|MB_ICONERROR); - } - } -} - -// Same function Windows offers in VersionHelpers.h, but we can't use that as it's not available in older sdk's (minimum is SDK 8.1) -bool CIrrDeviceWin32::isWindowsVistaOrGreater() -{ -#if (_WIN32_WINNT >= 0x0500) - OSVERSIONINFOEX osvi; - ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX)); - osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); - osvi.dwMajorVersion = 6; // Windows Vista - - if ( !GetVersionEx((OSVERSIONINFO*)&osvi) ) - { - return false; - } - - return VerifyVersionInfo(&osvi, VER_MAJORVERSION, VerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL)) ? true : false; -#else - return false; -#endif -} - // Convert an Irrlicht texture to a Windows cursor // Based on http://www.codeguru.com/cpp/w-p/win32/cursors/article.php/c4529/ HCURSOR CIrrDeviceWin32::TextureToCursor(HWND hwnd, irr::video::ITexture * tex, const core::rect& sourceRect, const core::position2d &hotspot) diff --git a/source/Irrlicht/CIrrDeviceWin32.h b/source/Irrlicht/CIrrDeviceWin32.h index fd4d2318..6da7e8d1 100644 --- a/source/Irrlicht/CIrrDeviceWin32.h +++ b/source/Irrlicht/CIrrDeviceWin32.h @@ -117,13 +117,6 @@ namespace irr //! Switch to fullscreen bool switchToFullScreen(); - //! Check for and show last Windows API error to help internal debugging. - //! Does call GetLastError and on errors formats the error text and displays it in a messagebox. - static void ReportLastWinApiError(); - - //! Same function Windows offers in VersionHelpers.h, but we can't use that as it's not available before SDK 8.1 - static bool isWindowsVistaOrGreater(); - // convert an Irrlicht texture to a windows cursor HCURSOR TextureToCursor(HWND hwnd, irr::video::ITexture * tex, const core::rect& sourceRect, const core::position2d &hotspot); @@ -292,9 +285,8 @@ namespace irr if (!fullscreen) { s32 paddingBorder = 0; - #if defined (SM_CXPADDEDBORDER) - if (CIrrDeviceWin32::isWindowsVistaOrGreater()) - paddingBorder = GetSystemMetrics(SM_CXPADDEDBORDER); + #ifdef SM_CXPADDEDBORDER + paddingBorder = GetSystemMetrics(SM_CXPADDEDBORDER); #endif if (resizable) diff --git a/source/Irrlicht/COSOperator.cpp b/source/Irrlicht/COSOperator.cpp index 6cef827f..0867b3d4 100644 --- a/source/Irrlicht/COSOperator.cpp +++ b/source/Irrlicht/COSOperator.cpp @@ -145,73 +145,10 @@ const c8* COSOperator::getTextFromClipboard() const } -bool COSOperator::getProcessorSpeedMHz(u32* MHz) const -{ - if (MHz) - *MHz=0; -#if defined(_IRR_WINDOWS_API_) && !defined(_WIN32_WCE ) && !defined (_IRR_XBOX_PLATFORM_) - LONG Error; - - HKEY Key; - Error = RegOpenKeyEx(HKEY_LOCAL_MACHINE, - __TEXT("HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0"), - 0, KEY_READ, &Key); - - if(Error != ERROR_SUCCESS) - return false; - - DWORD Speed = 0; - DWORD Size = sizeof(Speed); - Error = RegQueryValueEx(Key, __TEXT("~MHz"), NULL, NULL, (LPBYTE)&Speed, &Size); - - RegCloseKey(Key); - - if (Error != ERROR_SUCCESS) - return false; - else if (MHz) - *MHz = Speed; - return true; - -#elif defined(_IRR_OSX_PLATFORM_) - struct clockinfo CpuClock; - size_t Size = sizeof(clockinfo); - - if (!sysctlbyname("kern.clockrate", &CpuClock, &Size, NULL, 0)) - return false; - else if (MHz) - *MHz = CpuClock.hz; - return true; -#else - // read from "/proc/cpuinfo" - FILE* file = fopen("/proc/cpuinfo", "r"); - if (file) - { - char buffer[1024]; - size_t r = fread(buffer, 1, 1023, file); - buffer[r] = 0; - buffer[1023]=0; - core::stringc str(buffer); - s32 pos = str.find("cpu MHz"); - if (pos != -1) - { - pos = str.findNext(':', pos); - if (pos != -1) - { - while ( str[++pos] == ' ' ); - *MHz = core::fast_atof(str.c_str()+pos); - } - } - fclose(file); - } - return (MHz && *MHz != 0); -#endif -} - bool COSOperator::getSystemMemory(u32* Total, u32* Avail) const { #if defined(_IRR_WINDOWS_API_) && !defined (_IRR_XBOX_PLATFORM_) - #if (_WIN32_WINNT >= 0x0500) MEMORYSTATUSEX MemoryStatusEx; MemoryStatusEx.dwLength = sizeof(MEMORYSTATUSEX); @@ -223,19 +160,6 @@ bool COSOperator::getSystemMemory(u32* Total, u32* Avail) const if (Avail) *Avail = (u32)(MemoryStatusEx.ullAvailPhys>>10); return true; - #else - MEMORYSTATUS MemoryStatus; - MemoryStatus.dwLength = sizeof(MEMORYSTATUS); - - // cannot fail - GlobalMemoryStatus(&MemoryStatus); - - if (Total) - *Total = (u32)(MemoryStatus.dwTotalPhys>>10); - if (Avail) - *Avail = (u32)(MemoryStatus.dwAvailPhys>>10); - return true; - #endif #elif defined(_IRR_POSIX_API_) && !defined(__FreeBSD__) #if defined(_SC_PHYS_PAGES) && defined(_SC_AVPHYS_PAGES) diff --git a/source/Irrlicht/COSOperator.h b/source/Irrlicht/COSOperator.h index d913b863..e76ba01a 100644 --- a/source/Irrlicht/COSOperator.h +++ b/source/Irrlicht/COSOperator.h @@ -33,11 +33,6 @@ public: //! \return Returns 0 if no string is in there. virtual const c8* getTextFromClipboard() const _IRR_OVERRIDE_; - //! gets the processor speed in megahertz - //! \param Mhz: - //! \return Returns true if successful, false if not - virtual bool getProcessorSpeedMHz(u32* MHz) const _IRR_OVERRIDE_; - //! gets the total and available system RAM in kB //! \param Total: will contain the total system memory //! \param Avail: will contain the available memory