vcl/opengl/win/WinDeviceInfo.cxx | 229 +++++++++++++++++++++++++-------------- vcl/opengl/x11/X11DeviceInfo.cxx | 114 ++++++++++++------- 2 files changed, 222 insertions(+), 121 deletions(-)
New commits: commit 1096ca46a23fc4df30865c243e10881157fe4840 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jun 3 17:44:24 2015 +0200 more style fixes Change-Id: Iadf157f3d2673047e2d81c74847b16d12478ca65 diff --git a/vcl/opengl/x11/X11DeviceInfo.cxx b/vcl/opengl/x11/X11DeviceInfo.cxx index e896f05..f60f9c1 100644 --- a/vcl/opengl/x11/X11DeviceInfo.cxx +++ b/vcl/opengl/x11/X11DeviceInfo.cxx @@ -66,14 +66,17 @@ char* strtok_wrapper(const char* aDelims, char** aStr) char* ret = const_cast<char*>(strspnp_wrapper(aDelims, *aStr)); - if (!*ret) { + if (!*ret) + { *aStr = ret; return nullptr; } char* i = ret; - do { - for (const char* d = aDelims; *d != '\0'; ++d) { + do + { + for (const char* d = aDelims; *d != '\0'; ++d) + { if (*i == *d) { *i = '\0'; *aStr = ++i; commit 5ebc2673cc3337d4e6656abdfb5e18ac169d3cbd Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jun 3 17:39:10 2015 +0200 that is not a TODO anymore, we actually block OpenGL in RDP connections Change-Id: I782e93e6106b3940e7e83c615072beebca1c0965 diff --git a/vcl/opengl/win/WinDeviceInfo.cxx b/vcl/opengl/win/WinDeviceInfo.cxx index 86672fe..151476d 100644 --- a/vcl/opengl/win/WinDeviceInfo.cxx +++ b/vcl/opengl/win/WinDeviceInfo.cxx @@ -793,7 +793,7 @@ void WinOpenGLDeviceInfo::GetData() if (maDeviceID.isEmpty() && maDeviceString == "RDPUDD Chained DD") { - // TODO: moggi: we need to block RDP as it does not provide OpenGL 2.1+ + // we need to block RDP as it does not provide OpenGL 2.1+ mbRDP = true; SAL_WARN("vcl.opengl", "RDP => blocked"); return; commit 4d1faeec4513ee602dc1daafaebc1c4212819a7a Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jun 3 17:36:40 2015 +0200 fix comment Change-Id: I1d6fc43447c3c98e21d1d0752aa621c9ab2a92a7 diff --git a/vcl/opengl/win/WinDeviceInfo.cxx b/vcl/opengl/win/WinDeviceInfo.cxx index ac7911c..86672fe 100644 --- a/vcl/opengl/win/WinDeviceInfo.cxx +++ b/vcl/opengl/win/WinDeviceInfo.cxx @@ -86,11 +86,11 @@ void GetDLLVersion(const sal_Unicode* aDLLPath, OUString& aVersion) } /* -* * Compute the length of an array with constant length. (Use of this method -* * with a non-array pointer will not compile.) -* * -* * Beware of the implicit trailing '\0' when using this with string constants. -* */ + * Compute the length of an array with constant length. (Use of this method + * with a non-array pointer will not compile.) + * + * Beware of the implicit trailing '\0' when using this with string constants. +*/ template<typename T, size_t N> size_t ArrayLength(T (&aArr)[N]) { commit 2d06511010ea800e62c076c2583d72eccc795691 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jun 3 17:35:44 2015 +0200 document that these are references to mozilla bugs Change-Id: Ie84924ee77805ce4b4f6d5a7e77213ce2d51877f diff --git a/vcl/opengl/win/WinDeviceInfo.cxx b/vcl/opengl/win/WinDeviceInfo.cxx index 7e80390..ac7911c 100644 --- a/vcl/opengl/win/WinDeviceInfo.cxx +++ b/vcl/opengl/win/WinDeviceInfo.cxx @@ -1001,7 +1001,7 @@ void WinOpenGLDeviceInfo::GetData() mbHasDriverVersionMismatch = false; if (maAdapterVendorID == GetDeviceVendor(wgl::VendorIntel)) { - // we've had big crashers (bugs 590373 and 595364) apparently correlated + // we've had big crashers (moz#590373 and moz#595364) apparently correlated // with bad Intel driver installations where the DriverVersion reported // by the registry was not the version of the DLL. OUString aDLLFileName("igd10umd32.dll"); @@ -1031,8 +1031,6 @@ void WinOpenGLDeviceInfo::GetData() } } - - // Macro for assigning a device vendor id to a string. #define DECLARE_VENDOR_ID(name, deviceId) \ case name: \ @@ -1102,7 +1100,7 @@ void WinOpenGLDeviceInfo::FillBlacklist() wgl::DRIVER_LESS_THAN, wgl::V(8,62,0,0), "9.6" ); /* - * Bug 783517 - crashes in AMD driver on Windows 8 + * moz#783517 - crashes in AMD driver on Windows 8 */ APPEND_TO_DRIVER_BLOCKLIST_RANGE( wgl::DRIVER_OS_WINDOWS_8, GetDeviceVendor(wgl::VendorATI), wgl::DriverInfo::allDevices, @@ -1113,8 +1111,8 @@ void WinOpenGLDeviceInfo::FillBlacklist() /* OpenGL on any ATI/AMD hardware is discouraged * See: - * bug 619773 - WebGL: Crash with blue screen : "NMI: Parity Check / Memory Parity Error" - * bugs 584403, 584404, 620924 - crashes in atioglxx + * bug moz#619773 - WebGL: Crash with blue screen : "NMI: Parity Check / Memory Parity Error" + * bugs moz#584403, moz#584404, moz#620924 - crashes in atioglxx * + many complaints about incorrect rendering */ APPEND_TO_DRIVER_BLOCKLIST2( wgl::DRIVER_OS_ALL, @@ -1134,7 +1132,7 @@ void WinOpenGLDeviceInfo::FillBlacklist() * Intel entries */ - /* The driver versions used here come from bug 594877. They might not + /* The driver versions used here come from moz#594877. They might not * be particularly relevant anymore. */ #define IMPLEMENT_INTEL_DRIVER_BLOCKLIST(winVer, devFamily, driverVer) \ @@ -1151,7 +1149,7 @@ void WinOpenGLDeviceInfo::FillBlacklist() // StretchRect seems to suffer from precision issues which leads to artifacting // during content drawing starting with at least version 6.14.10.5082 - // and going until 6.14.10.5218. See bug 919454 and bug 949275 for more info. + // and going until 6.14.10.5218. See moz#919454 and mox#949275 for more info. APPEND_TO_DRIVER_BLOCKLIST_RANGE(wgl::DRIVER_OS_WINDOWS_XP, GetDeviceVendor(wgl::VendorIntel), const_cast<wgl::DriverInfo::DeviceFamilyVector*>(wgl::DriverInfo::GetDeviceFamily(wgl::IntelGMAX4500HD)), @@ -1181,7 +1179,7 @@ void WinOpenGLDeviceInfo::FillBlacklist() /** * Disable acceleration on Intel HD 3000 for graphics drivers <= 8.15.10.2321. - * See bug 1018278 and bug 1060736. + * See bug moz#1018278 and bug moz#1060736. */ APPEND_TO_DRIVER_BLOCKLIST( wgl::DRIVER_OS_ALL, GetDeviceVendor(wgl::VendorIntel), (wgl::DriverInfo::DeviceFamilyVector*) wgl::DriverInfo::GetDeviceFamily(wgl::IntelHD3000), commit b19ec43a426b4b69ccbb0778c9e6a81109aa65a0 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jun 3 17:32:06 2015 +0200 more style clean-up Change-Id: I46727514629103d8a97140483eca26135929a688 diff --git a/vcl/opengl/win/WinDeviceInfo.cxx b/vcl/opengl/win/WinDeviceInfo.cxx index 852cfba..7e80390 100644 --- a/vcl/opengl/win/WinDeviceInfo.cxx +++ b/vcl/opengl/win/WinDeviceInfo.cxx @@ -28,7 +28,8 @@ std::vector<wgl::DriverInfo> WinOpenGLDeviceInfo::maDriverInfo; maDriverInfo.push_back(wgl::DriverInfo(os, vendor, devices, driverComparator, driverVersion, true)) #define APPEND_TO_DRIVER_BLOCKLIST_RANGE(os, vendor, devices, driverComparator, driverVersion, driverVersionMax, suggestedVersion) \ - do { \ + do \ + { \ assert(driverComparator == wgl::DRIVER_BETWEEN_EXCLUSIVE || \ driverComparator == wgl::DRIVER_BETWEEN_INCLUSIVE || \ driverComparator == wgl::DRIVER_BETWEEN_INCLUSIVE_START); \ @@ -110,21 +111,26 @@ bool GetKeyValue(const WCHAR* keyLocation, const WCHAR* keyName, OUString& destS bool retval = true; result = RegOpenKeyExW(HKEY_LOCAL_MACHINE, keyLocation, 0, KEY_QUERY_VALUE, &key); - if (result != ERROR_SUCCESS) { + if (result != ERROR_SUCCESS) + { return false; } - switch (type) { + switch (type) + { case REG_DWORD: { // We only use this for vram size dwcbData = sizeof(dValue); result = RegQueryValueExW(key, keyName, nullptr, &resultType, (LPBYTE)&dValue, &dwcbData); - if (result == ERROR_SUCCESS && resultType == REG_DWORD) { + if (result == ERROR_SUCCESS && resultType == REG_DWORD) + { dValue = dValue / 1024 / 1024; destString += OUString::number(int32_t(dValue)); - } else { + } + else + { retval = false; } break; @@ -137,17 +143,23 @@ bool GetKeyValue(const WCHAR* keyLocation, const WCHAR* keyName, OUString& destS result = RegQueryValueExW(key, keyName, nullptr, &resultType, (LPBYTE)wCharValue, &dwcbData); - if (result == ERROR_SUCCESS && resultType == REG_MULTI_SZ) { + if (result == ERROR_SUCCESS && resultType == REG_MULTI_SZ) + { // This bit here could probably be cleaner. bool isValid = false; DWORD strLen = dwcbData/sizeof(wCharValue[0]); - for (DWORD i = 0; i < strLen; i++) { - if (wCharValue[i] == '\0') { - if (i < strLen - 1 && wCharValue[i + 1] == '\0') { + for (DWORD i = 0; i < strLen; i++) + { + if (wCharValue[i] == '\0') + { + if (i < strLen - 1 && wCharValue[i + 1] == '\0') + { isValid = true; break; - } else { + } + else + { wCharValue[i] = ' '; } } @@ -159,7 +171,9 @@ bool GetKeyValue(const WCHAR* keyLocation, const WCHAR* keyName, OUString& destS if (isValid) destString = OUString(wCharValue); - } else { + } + else + { retval = false; } @@ -174,10 +188,12 @@ bool GetKeyValue(const WCHAR* keyLocation, const WCHAR* keyName, OUString& destS // The driver ID is a string like PCI\VEN_15AD&DEV_0405&SUBSYS_040515AD, possibly // followed by &REV_XXXX. We uppercase the string, and strip the &REV_ part // from it, if found. -void normalizeDriverId(OUString& driverid) { +void normalizeDriverId(OUString& driverid) +{ driverid = driverid.toAsciiUpperCase(); int32_t rev = driverid.indexOf("&REV_"); - if (rev != -1) { + if (rev != -1) + { driverid = driverid.copy(0, rev - 1); } } @@ -189,7 +205,8 @@ uint32_t ParseIDFromDeviceID(const OUString &key, const char *prefix, int length OUString id = key.toAsciiUpperCase(); OUString aPrefix = OUString::fromUtf8(prefix); int32_t start = id.indexOf(aPrefix); - if (start != -1) { + if (start != -1) + { id = id.copy(start + aPrefix.getLength(), length); } return id.toUInt32(16); @@ -211,7 +228,8 @@ enum { wgl::OperatingSystem WindowsVersionToOperatingSystem(int32_t aWindowsVersion) { - switch(aWindowsVersion) { + switch(aWindowsVersion) + { case kWindowsXP: return wgl::DRIVER_OS_WINDOWS_XP; case kWindowsServer2003: @@ -237,14 +255,18 @@ int32_t WindowsOSVersion() OSVERSIONINFO vinfo; - if (winVersion == kWindowsUnknown) { + if (winVersion == kWindowsUnknown) + { vinfo.dwOSVersionInfoSize = sizeof (vinfo); #pragma warning(push) #pragma warning(disable:4996) - if (!GetVersionEx(&vinfo)) { + if (!GetVersionEx(&vinfo)) + { #pragma warning(pop) winVersion = kWindowsUnknown; - } else { + } + else + { winVersion = int32_t(vinfo.dwMajorVersion << 16) + vinfo.dwMinorVersion; } } @@ -259,9 +281,12 @@ int32_t WindowsOSVersion() // larger than .978 which would become 9780. void PadDriverDecimal(char *aString) { - for (int i = 0; i < 4; i++) { - if (!aString[i]) { - for (int c = i; c < 4; c++) { + for (int i = 0; i < 4; i++) + { + if (!aString[i]) + { + for (int c = i; c < 4; c++) + { aString[c] = '0'; } break; @@ -279,19 +304,23 @@ bool SplitDriverVersion(const char *aSource, char *aAStr, char *aBStr, char *aCS unsigned destIdx = 0; unsigned destPos = 0; - for (int i = 0; i < len; i++) { - if (destIdx > ArrayLength(dest)) { + for (int i = 0; i < len; i++) + { + if (destIdx > ArrayLength(dest)) + { // Invalid format found. Ensure we don't access dest beyond bounds. return false; } - if (aSource[i] == '.') { + if (aSource[i] == '.') + { dest[destIdx++][destPos] = 0; destPos = 0; continue; } - if (destPos > 3) { + if (destPos > 3) + { // Ignore more than 4 chars. Ensure we never access dest[destIdx] // beyond its bounds. continue; @@ -303,7 +332,8 @@ bool SplitDriverVersion(const char *aSource, char *aAStr, char *aBStr, char *aCS // Add last terminator. dest[destIdx][destPos] = 0; - if (destIdx != ArrayLength(dest) - 1) { + if (destIdx != ArrayLength(dest) - 1) + { return false; } return true; @@ -416,10 +446,13 @@ DriverInfo::DriverInfo(const DriverInfo& aOrig) { //If we're managing the lifetime of the device family, we have to make a // copy of the original's device family. - if (aOrig.mbDeleteDevices && aOrig.mpDevices) { + if (aOrig.mbDeleteDevices && aOrig.mpDevices) + { mpDevices = new DeviceFamilyVector; *mpDevices = *aOrig.mpDevices; - } else { + } + else + { mpDevices = aOrig.mpDevices; } @@ -449,7 +482,8 @@ const DriverInfo::DeviceFamilyVector* DriverInfo::GetDeviceFamily(DeviceFamily i mpDeviceFamilies[id] = new wgl::DriverInfo::DeviceFamilyVector; wgl::DriverInfo::DeviceFamilyVector* deviceFamily = mpDeviceFamilies[id]; - switch (id) { + switch (id) + { case IntelGMA500: APPEND_DEVICE(0x8108); /* IntelGMA500_1 */ APPEND_DEVICE(0x8109); /* IntelGMA500_2 */ @@ -598,37 +632,45 @@ bool WinOpenGLDeviceInfo::FindBlocklistedDeviceInList() wgl::OperatingSystem eOS = WindowsVersionToOperatingSystem(mnWindowsVersion); bool match = false; uint32_t i = 0; - for (; i < maDriverInfo.size(); i++) { + for (; i < maDriverInfo.size(); i++) + { if (maDriverInfo[i].meOperatingSystem != wgl::DRIVER_OS_ALL && maDriverInfo[i].meOperatingSystem != eOS) { continue; } - if (maDriverInfo[i].mnOperatingSystemVersion && maDriverInfo[i].mnOperatingSystemVersion != mnWindowsVersion) { + if (maDriverInfo[i].mnOperatingSystemVersion && maDriverInfo[i].mnOperatingSystemVersion != mnWindowsVersion) + { continue; } if (!maDriverInfo[i].maAdapterVendor.equalsIgnoreAsciiCase(GetDeviceVendor(wgl::VendorAll)) && - !maDriverInfo[i].maAdapterVendor.equalsIgnoreAsciiCase(maAdapterVendorID)) { + !maDriverInfo[i].maAdapterVendor.equalsIgnoreAsciiCase(maAdapterVendorID)) + { continue; } - if (maDriverInfo[i].mpDevices != wgl::DriverInfo::allDevices && maDriverInfo[i].mpDevices->size()) { + if (maDriverInfo[i].mpDevices != wgl::DriverInfo::allDevices && maDriverInfo[i].mpDevices->size()) + { bool deviceMatches = false; - for (uint32_t j = 0; j < maDriverInfo[i].mpDevices->size(); j++) { - if ((*maDriverInfo[i].mpDevices)[j].equalsIgnoreAsciiCase(maAdapterDeviceID)) { + for (uint32_t j = 0; j < maDriverInfo[i].mpDevices->size(); j++) + { + if ((*maDriverInfo[i].mpDevices)[j].equalsIgnoreAsciiCase(maAdapterDeviceID)) + { deviceMatches = true; break; } } - if (!deviceMatches) { + if (!deviceMatches) + { continue; } } - switch (maDriverInfo[i].meComparisonOp) { + switch (maDriverInfo[i].meComparisonOp) + { case wgl::DRIVER_LESS_THAN: match = driverVersion < maDriverInfo[i].mnDriverVersion; break; @@ -665,7 +707,8 @@ bool WinOpenGLDeviceInfo::FindBlocklistedDeviceInList() break; } - if (match || maDriverInfo[i].mnDriverVersion == wgl::DriverInfo::allDriverVersions) { + if (match || maDriverInfo[i].mnDriverVersion == wgl::DriverInfo::allDriverVersions) + { // white listed drivers if (maDriverInfo[i].mbWhitelisted) { @@ -697,7 +740,6 @@ bool WinOpenGLDeviceInfo::isDeviceBlocked() // the static list after that. This order is used so that we can later escape // out of static blocks (i.e. if we were wrong or something was patched, we // can back out our static block without doing a release). - if (mbRDP) { SAL_WARN("vcl.opengl", "all OpenGL blocked for RDP sessions"); @@ -715,8 +757,10 @@ void WinOpenGLDeviceInfo::GetData() mnWindowsVersion = WindowsOSVersion(); int deviceIndex = 0; - while (EnumDisplayDevicesW(nullptr, deviceIndex, &displayDevice, 0)) { - if (displayDevice.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE) { + while (EnumDisplayDevicesW(nullptr, deviceIndex, &displayDevice, 0)) + { + if (displayDevice.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE) + { break; } deviceIndex++; @@ -724,7 +768,8 @@ void WinOpenGLDeviceInfo::GetData() // make sure the string is nullptr terminated if (wcsnlen(displayDevice.DeviceKey, ArrayLength(displayDevice.DeviceKey)) - == ArrayLength(displayDevice.DeviceKey)) { + == ArrayLength(displayDevice.DeviceKey)) + { // we did not find a nullptr SAL_WARN("vcl.opengl", "no null pointer"); return; @@ -758,7 +803,8 @@ void WinOpenGLDeviceInfo::GetData() HDEVINFO devinfo = SetupDiGetClassDevsW(nullptr, maDeviceID.getStr(), nullptr, DIGCF_PRESENT | DIGCF_PROFILE | DIGCF_ALLCLASSES); - if (devinfo != INVALID_HANDLE_VALUE) { + if (devinfo != INVALID_HANDLE_VALUE) + { HKEY key; LONG result; WCHAR value[255]; @@ -769,7 +815,8 @@ void WinOpenGLDeviceInfo::GetData() devinfoData.cbSize = sizeof(devinfoData); OUString aDriverKeyPre("System\\CurrentControlSet\\Control\\Class\\"); /* enumerate device information elements in the device information set */ - while (SetupDiEnumDeviceInfo(devinfo, memberIndex++, &devinfoData)) { + while (SetupDiEnumDeviceInfo(devinfo, memberIndex++, &devinfoData)) + { /* get a string that identifies the device's driver key */ if (SetupDiGetDeviceRegistryPropertyW(devinfo, &devinfoData, @@ -777,27 +824,35 @@ void WinOpenGLDeviceInfo::GetData() nullptr, (PBYTE)value, sizeof(value), - nullptr)) { + nullptr)) + { OUString driverKey(aDriverKeyPre); driverKey += value; result = RegOpenKeyExW(HKEY_LOCAL_MACHINE, driverKey.getStr(), 0, KEY_QUERY_VALUE, &key); - if (result == ERROR_SUCCESS) { + if (result == ERROR_SUCCESS) + { /* we've found the driver we're looking for */ dwcbData = sizeof(value); result = RegQueryValueExW(key, L"DriverVersion", nullptr, nullptr, (LPBYTE)value, &dwcbData); - if (result == ERROR_SUCCESS) { + if (result == ERROR_SUCCESS) + { maDriverVersion = OUString(value); - } else { + } + else + { // If the entry wasn't found, assume the worst (0.0.0.0). maDriverVersion = OUString("0.0.0.0"); } dwcbData = sizeof(value); result = RegQueryValueExW(key, L"DriverDate", nullptr, nullptr, (LPBYTE)value, &dwcbData); - if (result == ERROR_SUCCESS) { + if (result == ERROR_SUCCESS) + { maDriverDate = value; - } else { + } + else + { // Again, assume the worst maDriverDate = OUString("01-01-1970"); } @@ -824,12 +879,14 @@ void WinOpenGLDeviceInfo::GetData() CLSID GUID_DISPLAY_DEVICE_ARRIVAL; HRESULT hresult = CLSIDFromString(L"{1CA05180-A699-450A-9A0C-DE4FBE3DDD89}", &GUID_DISPLAY_DEVICE_ARRIVAL); - if (hresult == NOERROR) { + if (hresult == NOERROR) + { devinfo = SetupDiGetClassDevsW(&GUID_DISPLAY_DEVICE_ARRIVAL, nullptr, nullptr, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE); - if (devinfo != INVALID_HANDLE_VALUE) { + if (devinfo != INVALID_HANDLE_VALUE) + { HKEY key; LONG result; WCHAR value[255]; @@ -847,7 +904,8 @@ void WinOpenGLDeviceInfo::GetData() OUString aDriverKeyPre("System\\CurrentControlSet\\Control\\Class\\"); /* enumerate device information elements in the device information set */ - while (SetupDiEnumDeviceInfo(devinfo, memberIndex++, &devinfoData)) { + while (SetupDiEnumDeviceInfo(devinfo, memberIndex++, &devinfoData)) + { /* get a string that identifies the device's driver key */ if (SetupDiGetDeviceRegistryPropertyW(devinfo, &devinfoData, @@ -855,15 +913,18 @@ void WinOpenGLDeviceInfo::GetData() nullptr, (PBYTE)value, sizeof(value), - nullptr)) { + nullptr)) + { OUString driverKey2(aDriverKeyPre); driverKey2 += value; result = RegOpenKeyExW(HKEY_LOCAL_MACHINE, driverKey2.getStr(), 0, KEY_QUERY_VALUE, &key); - if (result == ERROR_SUCCESS) { + if (result == ERROR_SUCCESS) + { dwcbData = sizeof(value); result = RegQueryValueExW(key, L"MatchingDeviceId", nullptr, nullptr, (LPBYTE)value, &dwcbData); - if (result != ERROR_SUCCESS) { + if (result != ERROR_SUCCESS) + { continue; } aDeviceID2 = value; @@ -874,7 +935,8 @@ void WinOpenGLDeviceInfo::GetData() adapterDeviceID2 = ParseIDFromDeviceID(aDeviceID2, "&DEV_", 4); appendIntegerWithPadding(aAdapterDeviceID2String, adapterDeviceID2, 4); if (maAdapterVendorID == aAdapterVendorID2String && - maAdapterDeviceID == aAdapterDeviceID2String) { + maAdapterDeviceID == aAdapterDeviceID2String) + { RegCloseKey(key); continue; } @@ -882,14 +944,16 @@ void WinOpenGLDeviceInfo::GetData() // If this device is missing driver information, it is unlikely to // be a real display adapter. if (!GetKeyValue(driverKey2.getStr(), L"InstalledDisplayDrivers", - aAdapterDriver2, REG_MULTI_SZ)) { + aAdapterDriver2, REG_MULTI_SZ)) + { RegCloseKey(key); continue; } dwcbData = sizeof(value); result = RegQueryValueExW(key, L"DriverVersion", nullptr, nullptr, (LPBYTE)value, &dwcbData); - if (result != ERROR_SUCCESS) { + if (result != ERROR_SUCCESS) + { RegCloseKey(key); continue; } @@ -897,7 +961,8 @@ void WinOpenGLDeviceInfo::GetData() dwcbData = sizeof(value); result = RegQueryValueExW(key, L"DriverDate", nullptr, nullptr, (LPBYTE)value, &dwcbData); - if (result != ERROR_SUCCESS) { + if (result != ERROR_SUCCESS) + { RegCloseKey(key); continue; } @@ -905,13 +970,15 @@ void WinOpenGLDeviceInfo::GetData() dwcbData = sizeof(value); result = RegQueryValueExW(key, L"Device Description", nullptr, nullptr, (LPBYTE)value, &dwcbData); - if (result != ERROR_SUCCESS) { + if (result != ERROR_SUCCESS) + { dwcbData = sizeof(value); result = RegQueryValueExW(key, L"DriverDesc", nullptr, nullptr, (LPBYTE)value, &dwcbData); } RegCloseKey(key); - if (result == ERROR_SUCCESS) { + if (result == ERROR_SUCCESS) + { mbHasDualGPU = true; maDeviceString2 = value; maDeviceID2 = aDeviceID2; @@ -932,7 +999,8 @@ void WinOpenGLDeviceInfo::GetData() } mbHasDriverVersionMismatch = false; - if (maAdapterVendorID == GetDeviceVendor(wgl::VendorIntel)) { + if (maAdapterVendorID == GetDeviceVendor(wgl::VendorIntel)) + { // we've had big crashers (bugs 590373 and 595364) apparently correlated // with bad Intel driver installations where the DriverVersion reported // by the registry was not the version of the DLL. @@ -956,7 +1024,8 @@ void WinOpenGLDeviceInfo::GetData() if (dllNumericVersion != driverNumericVersion && dllNumericVersion2 != driverNumericVersion && (driverNumericVersion < knownSafeMismatchVersion || - std::max(dllNumericVersion, dllNumericVersion2) < knownSafeMismatchVersion)) { + std::max(dllNumericVersion, dllNumericVersion2) < knownSafeMismatchVersion)) + { mbHasDriverVersionMismatch = true; } } @@ -979,7 +1048,8 @@ OUString WinOpenGLDeviceInfo::GetDeviceVendor(wgl::DeviceVendor id) mpDeviceVendors[id] = new OUString(); - switch (id) { + switch (id) + { DECLARE_VENDOR_ID(wgl::VendorAll, ""); DECLARE_VENDOR_ID(wgl::VendorIntel, "0x8086"); DECLARE_VENDOR_ID(wgl::VendorNVIDIA, "0x10de"); @@ -1121,7 +1191,6 @@ void WinOpenGLDeviceInfo::FillBlacklist() APPEND_TO_DRIVER_BLOCKLIST( wgl::DRIVER_OS_ALL, GetDeviceVendor(wgl::VendorMicrosoft), wgl::DriverInfo::allDevices, wgl::DRIVER_LESS_THAN, wgl::V(6,2,0,0), "< 6.2.0.0" ); - } commit 20b867347cddc186b6f5a834613580fe96cb58a1 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jun 3 17:05:29 2015 +0200 adapt coding style We will not update with a new version from mozilla. Change-Id: Icf9571e1efecee18a19760b2eb3041e3d9e6f108 diff --git a/vcl/opengl/x11/X11DeviceInfo.cxx b/vcl/opengl/x11/X11DeviceInfo.cxx index 9c1e901..e896f05 100644 --- a/vcl/opengl/x11/X11DeviceInfo.cxx +++ b/vcl/opengl/x11/X11DeviceInfo.cxx @@ -42,13 +42,16 @@ const char* strspnp_wrapper(const char* aDelims, const char* aStr) { const char* d; - do { - for (d = aDelims; *d != '\0'; ++d) { - if (*aStr == *d) { - ++aStr; - break; + do + { + for (d = aDelims; *d != '\0'; ++d) + { + if (*aStr == *d) + { + ++aStr; + break; + } } - } } while (*d); return aStr; @@ -56,7 +59,8 @@ strspnp_wrapper(const char* aDelims, const char* aStr) char* strtok_wrapper(const char* aDelims, char** aStr) { - if (!*aStr) { + if (!*aStr) + { return nullptr; } @@ -141,13 +145,18 @@ void X11OpenGLDeviceInfo::GetData() bool wait_for_glxtest_process = true; bool waiting_for_glxtest_process_failed = false; int waitpid_errno = 0; - while(wait_for_glxtest_process) { + while(wait_for_glxtest_process) + { wait_for_glxtest_process = false; - if (waitpid(glx::glxtest_pid, &glxtest_status, 0) == -1) { + if (waitpid(glx::glxtest_pid, &glxtest_status, 0) == -1) + { waitpid_errno = errno; - if (waitpid_errno == EINTR) { + if (waitpid_errno == EINTR) + { wait_for_glxtest_process = true; - } else { + } + else + { // Bug moz#718629 // ECHILD happens when the glxtest process got reaped got reaped after a PR_CreateProcess // as per bug moz#227246. This shouldn't matter, as we still seem to get the data @@ -168,8 +177,10 @@ void X11OpenGLDeviceInfo::GetData() OString textureFromPixmap; OString *stringToFill = nullptr; char *bufptr = buf; - if (!error) { - while(true) { + if (!error) + { + while(true) + { char *line = strtok_wrapper("\n", &bufptr); if (!line) break; @@ -207,7 +218,8 @@ void X11OpenGLDeviceInfo::GetData() // the actual driver version numbers should be expected to be found (whereToReadVersionNumbers) const char *whereToReadVersionNumbers = nullptr; const char *Mesa_in_version_string = strstr(maVersion.getStr(), "Mesa"); - if (Mesa_in_version_string) { + if (Mesa_in_version_string) + { mbIsMesa = true; // with Mesa, the version string contains "Mesa major.minor" and that's all the version information we get: // there is no actual driver version info. @@ -220,7 +232,9 @@ void X11OpenGLDeviceInfo::GetData() mbIsLlvmpipe = true; if (strcasestr(maRenderer.getStr(), "software rasterizer")) mbIsOldSwrast = true; - } else if (strstr(maVendor.getStr(), "NVIDIA Corporation")) { + } + else if (strstr(maVendor.getStr(), "NVIDIA Corporation")) + { mbIsNVIDIA = true; // with the NVIDIA driver, the version string contains "NVIDIA major.minor" // note that here the vendor and version strings behave differently, that's why we don't put this above @@ -228,7 +242,9 @@ void X11OpenGLDeviceInfo::GetData() const char *NVIDIA_in_version_string = strstr(maVersion.getStr(), "NVIDIA"); if (NVIDIA_in_version_string) whereToReadVersionNumbers = NVIDIA_in_version_string + strlen("NVIDIA"); - } else if (strstr(maVendor.getStr(), "ATI Technologies Inc")) { + } + else if (strstr(maVendor.getStr(), "ATI Technologies Inc")) + { mbIsFGLRX = true; // with the FGLRX driver, the version string only gives a OpenGL version :/ so let's return that. // that can at least give a rough idea of how old the driver is. @@ -236,7 +252,8 @@ void X11OpenGLDeviceInfo::GetData() } // read major.minor version numbers of the driver (not to be confused with the OpenGL version) - if (whereToReadVersionNumbers) { + if (whereToReadVersionNumbers) + { // copy into writable buffer, for tokenization strncpy(buf, whereToReadVersionNumbers, buf_size-1); buf[buf_size-1] = 0; @@ -245,10 +262,12 @@ void X11OpenGLDeviceInfo::GetData() // now try to read major.minor version numbers. In case of failure, gracefully exit: these numbers have // been initialized as 0 anyways char *token = strtok_wrapper(".", &bufptr); - if (token) { + if (token) + { mnMajorVersion = strtol(token, 0, 10); token = strtok_wrapper(".", &bufptr); - if (token) { + if (token) + { mnMinorVersion = strtol(token, 0, 10); token = strtok_wrapper(".", &bufptr); if (token) @@ -270,12 +289,15 @@ bool X11OpenGLDeviceInfo::isDeviceBlocked() SAL_INFO("vcl.opengl", "OS: " << maOS); SAL_INFO("vcl.opengl", "OSRelease: " << maOSRelease); - if (mbIsMesa) { - if (mbIsNouveau && version(mnMajorVersion, mnMinorVersion) < version(8,0)) { + if (mbIsMesa) + { + if (mbIsNouveau && version(mnMajorVersion, mnMinorVersion) < version(8,0)) + { SAL_WARN("vcl.opengl", "blocked driver version: old nouveau driver (requires mesa 8.0+)"); return true; } - else if (version(mnMajorVersion, mnMinorVersion, mnRevisionVersion) < version(7,10,3)) { + else if (version(mnMajorVersion, mnMinorVersion, mnRevisionVersion) < version(7,10,3)) + { SAL_WARN("vcl.opengl", "blocked driver version: requires at least mesa 7.10.3"); return true; } @@ -284,26 +306,33 @@ bool X11OpenGLDeviceInfo::isDeviceBlocked() SAL_WARN("vcl.opengl", "blocked driver version: my broken intel driver Mesa 9.0.2"); return true; } - else if (mbIsOldSwrast) { + else if (mbIsOldSwrast) + { SAL_WARN("vcl.opengl", "blocked driver version: software rasterizer"); return true; } - else if (mbIsLlvmpipe && version(mnMajorVersion, mnMinorVersion) < version(9, 1)) { + else if (mbIsLlvmpipe && version(mnMajorVersion, mnMinorVersion) < version(9, 1)) + { // bug moz#791905, Mesa bug 57733, fixed in Mesa 9.1 according to // https://bugs.freedesktop.org/show_bug.cgi?id=57733#c3 SAL_WARN("vcl.opengl", "blocked driver version: fdo#57733"); return true; } - - } else if (mbIsNVIDIA) { - if (version(mnMajorVersion, mnMinorVersion, mnRevisionVersion) < version(257,21)) { + } + else if (mbIsNVIDIA) + { + if (version(mnMajorVersion, mnMinorVersion, mnRevisionVersion) < version(257,21)) + { SAL_WARN("vcl.opengl", "blocked driver version: nvidia requires at least 257.21"); return true; } - } else if (mbIsFGLRX) { + } + else if (mbIsFGLRX) + { // FGLRX does not report a driver version number, so we have the OpenGL version instead. // by requiring OpenGL 3, we effectively require recent drivers. - if (version(mnMajorVersion, mnMinorVersion, mnRevisionVersion) < version(3, 0)) { + if (version(mnMajorVersion, mnMinorVersion, mnRevisionVersion) < version(3, 0)) + { SAL_WARN("vcl.opengl", "blocked driver version: require at least OpenGL 3 for fglrx"); return true; } @@ -311,11 +340,14 @@ bool X11OpenGLDeviceInfo::isDeviceBlocked() bool unknownOS = maOS.isEmpty() || maOSRelease.isEmpty(); bool badOS = maOS.indexOf("Linux") != -1 && maOSRelease.indexOf("2.6.32") != -1; - if (unknownOS || badOS) { + if (unknownOS || badOS) + { SAL_WARN("vcl.opengl", "blocked OS version with fglrx"); return true; } - } else { + } + else + { // like on windows, let's block unknown vendors. Think of virtual machines. // Also, this case is hit whenever the GLXtest probe failed to get driver info or crashed. SAL_WARN("vcl.opengl", "unknown vendor => blocked"); commit 03aa4f88cf6a8993b2659f2060606577cb445c9e Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jun 3 16:54:36 2015 +0200 document that it is a reference to a mozilla bug Change-Id: Ic57a0785db05908ffd9faef30544646d2e70ee5a diff --git a/vcl/opengl/x11/X11DeviceInfo.cxx b/vcl/opengl/x11/X11DeviceInfo.cxx index 74e84c6..9c1e901 100644 --- a/vcl/opengl/x11/X11DeviceInfo.cxx +++ b/vcl/opengl/x11/X11DeviceInfo.cxx @@ -116,9 +116,8 @@ void X11OpenGLDeviceInfo::GetData() if (!glx::glxtest_pipe) return; - // to understand this function, see bug 639842. We retrieve the OpenGL driver information in a + // to understand this function, see bug moz#639842. We retrieve the OpenGL driver information in a // separate process to protect against bad drivers. - enum { buf_size = 1024 }; char buf[buf_size]; ssize_t bytesread = read(glx::glxtest_pipe, @@ -149,9 +148,9 @@ void X11OpenGLDeviceInfo::GetData() if (waitpid_errno == EINTR) { wait_for_glxtest_process = true; } else { - // Bug 718629 + // Bug moz#718629 // ECHILD happens when the glxtest process got reaped got reaped after a PR_CreateProcess - // as per bug 227246. This shouldn't matter, as we still seem to get the data + // as per bug moz#227246. This shouldn't matter, as we still seem to get the data // from the pipe, and if we didn't, the outcome would be to blacklist anyway. waiting_for_glxtest_process_failed = (waitpid_errno != ECHILD); } @@ -290,7 +289,7 @@ bool X11OpenGLDeviceInfo::isDeviceBlocked() return true; } else if (mbIsLlvmpipe && version(mnMajorVersion, mnMinorVersion) < version(9, 1)) { - // bug 791905, Mesa bug 57733, fixed in Mesa 9.1 according to + // bug moz#791905, Mesa bug 57733, fixed in Mesa 9.1 according to // https://bugs.freedesktop.org/show_bug.cgi?id=57733#c3 SAL_WARN("vcl.opengl", "blocked driver version: fdo#57733"); return true; @@ -308,7 +307,7 @@ bool X11OpenGLDeviceInfo::isDeviceBlocked() SAL_WARN("vcl.opengl", "blocked driver version: require at least OpenGL 3 for fglrx"); return true; } - // Bug 724640: FGLRX + Linux 2.6.32 is a crashy combo + // Bug moz#724640: FGLRX + Linux 2.6.32 is a crashy combo bool unknownOS = maOS.isEmpty() || maOSRelease.isEmpty(); bool badOS = maOS.indexOf("Linux") != -1 && maOSRelease.indexOf("2.6.32") != -1; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits