mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
User survey: detect the machine the app is running on
We build 32bit Windows binaries - but we really want to know if the OS is x86_64 or i386. This little hack should give us that information. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
5149bc0df8
commit
fd22e8123b
3 changed files with 43 additions and 2 deletions
|
@ -14,6 +14,7 @@
|
||||||
UserSurvey::UserSurvey(QWidget *parent) : QDialog(parent),
|
UserSurvey::UserSurvey(QWidget *parent) : QDialog(parent),
|
||||||
ui(new Ui::UserSurvey)
|
ui(new Ui::UserSurvey)
|
||||||
{
|
{
|
||||||
|
QString osArch, arch;
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
QShortcut *closeKey = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_W), this);
|
QShortcut *closeKey = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_W), this);
|
||||||
connect(closeKey, SIGNAL(activated()), this, SLOT(close()));
|
connect(closeKey, SIGNAL(activated()), this, SLOT(close()));
|
||||||
|
@ -25,8 +26,16 @@ UserSurvey::UserSurvey(QWidget *parent) : QDialog(parent),
|
||||||
os = QString("ssrfVers=%1").arg(VERSION_STRING);
|
os = QString("ssrfVers=%1").arg(VERSION_STRING);
|
||||||
sysInfo.append(tr("\nOperating System: %1").arg(SubsurfaceSysInfo::prettyOsName()));
|
sysInfo.append(tr("\nOperating System: %1").arg(SubsurfaceSysInfo::prettyOsName()));
|
||||||
os.append(QString("&prettyOsName=%1").arg(SubsurfaceSysInfo::prettyOsName()));
|
os.append(QString("&prettyOsName=%1").arg(SubsurfaceSysInfo::prettyOsName()));
|
||||||
sysInfo.append(tr("\nCPU Architecture: %1").arg(SubsurfaceSysInfo::cpuArchitecture()));
|
arch = SubsurfaceSysInfo::cpuArchitecture();
|
||||||
os.append(QString("&cpuArch=%1").arg(SubsurfaceSysInfo::cpuArchitecture()));
|
sysInfo.append(tr("\nCPU Architecture: %1").arg(arch));
|
||||||
|
os.append(QString("&appCpuArch=%1").arg(arch));
|
||||||
|
if (arch == "i386") {
|
||||||
|
osArch = SubsurfaceSysInfo::osArch();
|
||||||
|
if (!osArch.isEmpty()) {
|
||||||
|
sysInfo.append(tr("\nOS CPU Architecture %1").arg(osArch));
|
||||||
|
os.append(QString("&osCpuArch=%1").arg(osArch));
|
||||||
|
}
|
||||||
|
}
|
||||||
sysInfo.append(tr("\nLanguage: %1").arg(uiLanguage(NULL)));
|
sysInfo.append(tr("\nLanguage: %1").arg(uiLanguage(NULL)));
|
||||||
os.append(QString("&uiLang=%1").arg(uiLanguage(NULL)));
|
os.append(QString("&uiLang=%1").arg(uiLanguage(NULL)));
|
||||||
ui->system->setPlainText(sysInfo);
|
ui->system->setPlainText(sysInfo);
|
||||||
|
|
|
@ -442,3 +442,33 @@ QString SubsurfaceSysInfo::prettyOsName()
|
||||||
return unknownText();
|
return unknownText();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// detect if the OS we are running on is 64 or 32bit
|
||||||
|
// we only care when building on Intel for 32bit
|
||||||
|
QString SubsurfaceSysInfo::osArch()
|
||||||
|
{
|
||||||
|
QString res = "";
|
||||||
|
#if defined(Q_PROCESSOR_X86_32)
|
||||||
|
#if defined(Q_OS_UNIX)
|
||||||
|
struct utsname u;
|
||||||
|
if (uname(&u) != -1) {
|
||||||
|
res = u.machine;
|
||||||
|
}
|
||||||
|
#elif defined(Q_OS_WIN)
|
||||||
|
|
||||||
|
/* this code is from
|
||||||
|
* http://mark.koli.ch/reliably-checking-os-bitness-32-or-64-bit-on-windows-with-a-tiny-c-app
|
||||||
|
* there is no license given, but 5 lines of code should be fine to reuse unless explicitly forbidden */
|
||||||
|
typedef BOOL (WINAPI *IW64PFP)(HANDLE, BOOL *);
|
||||||
|
BOOL os64 = FALSE;
|
||||||
|
IW64PFP IW64P = (IW64PFP)GetProcAddress(
|
||||||
|
GetModuleHandle((LPCSTR)"kernel32"), "IsWow64Process");
|
||||||
|
|
||||||
|
if(IW64P != NULL){
|
||||||
|
IW64P(GetCurrentProcess(), &os64);
|
||||||
|
}
|
||||||
|
res = os64 ? "x86_64" : "i386";
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
|
@ -212,7 +212,9 @@ public:
|
||||||
static QString osKernelVersion();
|
static QString osKernelVersion();
|
||||||
static QString osVersion();
|
static QString osVersion();
|
||||||
static QString prettyOsName();
|
static QString prettyOsName();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
static QString osArch();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue