From 6a792f06359e791c36d2e3fa288e7e62920627ca Mon Sep 17 00:00:00 2001 From: Amar Takhar Date: Sun, 27 Sep 2009 01:47:11 +0000 Subject: [PATCH] Add support for OSX to the reporter, the base is from the BSD version which works seamlessly with the exception of different sysctl names. (not updated) Originally committed to SVN as r3587. --- aegisub/reporter/Makefile.am | 4 ++ aegisub/reporter/include/platform.h | 2 +- aegisub/reporter/platform.cpp | 15 +++++ aegisub/reporter/platform_unix_osx.cpp | 92 ++++++++++++++++++++++++++ aegisub/reporter/platform_unix_osx.h | 45 +++++++++++++ aegisub/reporter/report.cpp | 6 +- 6 files changed, 160 insertions(+), 4 deletions(-) create mode 100644 aegisub/reporter/platform_unix_osx.cpp create mode 100644 aegisub/reporter/platform_unix_osx.h diff --git a/aegisub/reporter/Makefile.am b/aegisub/reporter/Makefile.am index a51c2e159..ef5f70c9a 100644 --- a/aegisub/reporter/Makefile.am +++ b/aegisub/reporter/Makefile.am @@ -38,6 +38,10 @@ if BUILD_LINUX reporter_2_2_SOURCES += platform_unix_linux.cpp endif +if BUILD_DARWIN +reporter_2_2_SOURCES += platform_unix_osx.cpp +endif + reporter_2_2_SOURCES += \ *.h \ diff --git a/aegisub/reporter/include/platform.h b/aegisub/reporter/include/platform.h index 05d607173..d4a41a4c7 100644 --- a/aegisub/reporter/include/platform.h +++ b/aegisub/reporter/include/platform.h @@ -253,7 +253,7 @@ public: /// @name OS X //@{ -#ifdef __OSX__ +#ifdef __APPLE__ /// OS patch level /// @return Patch level diff --git a/aegisub/reporter/platform.cpp b/aegisub/reporter/platform.cpp index 5b2515a76..b336e15c7 100644 --- a/aegisub/reporter/platform.cpp +++ b/aegisub/reporter/platform.cpp @@ -28,6 +28,7 @@ #include "platform_unix.h" #include "platform_unix_bsd.h" #include "platform_unix_linux.h" +#include "platform_unix_osx.h" /// @brief Constructor. Platform* Platform::GetPlatform() { @@ -37,6 +38,8 @@ Platform* Platform::GetPlatform() { Platform *p = new PlatformUnixBSD; # elif defined(__LINUX__) Platform *p = new PlatformUnixLinux; +# elif defined(__APPLE__) + Platform *p = new PlatformUnixOSX; # else Platform *p = new PlatformUnix; # endif @@ -114,3 +117,15 @@ wxString Platform::Signature() { wxString Platform::DesktopEnvironment() { return ""; } + +wxString Platform::PatchLevel() { + return ""; +} + +wxString Platform::QuickTimeExt() { + return ""; +} + +wxString Platform::HardwareModel() { + return ""; +} diff --git a/aegisub/reporter/platform_unix_osx.cpp b/aegisub/reporter/platform_unix_osx.cpp new file mode 100644 index 000000000..3b4b1ceb2 --- /dev/null +++ b/aegisub/reporter/platform_unix_osx.cpp @@ -0,0 +1,92 @@ +// Copyright (c) 2009, Amar Takhar +// +// Permission to use, copy, modify, and distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// $Id$ + +/// @file platform_unix_bsd.cpp +/// @brief BSD Platform extensions. +/// @ingroup unix + +#ifndef R_PRECOMP +#include +#endif + +extern "C" { +#include +#include +} + +#include "include/platform.h" +#include "platform_unix.h" +#include "platform_unix_osx.h" + + +wxString PlatformUnixOSX::CPUId() { + char id[300]; + size_t len = sizeof(id); + sysctlbyname("hw.model", &id, &len, NULL, 0); + return wxString::Format("%s", id); +}; + +wxString PlatformUnixOSX::CPUSpeed() { + return ""; +}; + +wxString PlatformUnixOSX::CPUCores() { + return ""; +}; + +wxString PlatformUnixOSX::CPUCount() { + int proc; + size_t len = sizeof(proc); + sysctlbyname("hw.ncpu", &proc, &len, NULL, 0); + return wxString::Format("%d", proc); +}; + +wxString PlatformUnixOSX::CPUFeatures() { + return ""; +}; + +wxString PlatformUnixOSX::CPUFeatures2() { + return ""; +}; + +wxString PlatformUnixOSX::Memory() { + uint64_t memory; + size_t len = sizeof(memory); + sysctlbyname("hw.physmem", &memory, &len, NULL, 0); + return wxString::Format("%d", memory); + return ""; +}; + +wxString PlatformUnixOSX::Video() { + return ""; +}; + +wxString PlatformUnixOSX::UnixLibraries() { + return ""; +}; + +wxString PlatformUnixOSX::PatchLevel() { + return ""; +} + +wxString PlatformUnixOSX::QuickTimeExt() { + return ""; +} + +wxString PlatformUnixOSX::HardwareModel() { + return ""; +} + diff --git a/aegisub/reporter/platform_unix_osx.h b/aegisub/reporter/platform_unix_osx.h new file mode 100644 index 000000000..761fe619e --- /dev/null +++ b/aegisub/reporter/platform_unix_osx.h @@ -0,0 +1,45 @@ +// Copyright (c) 2009, Amar Takhar +// +// Permission to use, copy, modify, and distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// $Id$ + +/// @file platform_unix_bsd.h +/// @see platform_unix_bsd.cpp +/// @ingroup unix + +class Platform; + +/// @brief BSD values. +class PlatformUnixOSX : public PlatformUnix { +public: + PlatformUnixOSX() {}; + virtual ~PlatformUnixOSX() {}; + + // Hardware + virtual wxString CPUId(); + virtual wxString CPUSpeed(); + virtual wxString CPUCores(); + virtual wxString CPUCount(); + virtual wxString CPUFeatures(); + virtual wxString CPUFeatures2(); + virtual wxString Memory(); + virtual wxString Video(); + + virtual wxString PatchLevel(); + virtual wxString QuickTimeExt(); + virtual wxString HardwareModel(); + + // Unix Specific + virtual wxString UnixLibraries(); +}; diff --git a/aegisub/reporter/report.cpp b/aegisub/reporter/report.cpp index a38c6808e..21cbab6e9 100644 --- a/aegisub/reporter/report.cpp +++ b/aegisub/reporter/report.cpp @@ -119,9 +119,9 @@ Report::XMLReport Report::ReportCreate() { #ifdef __APPLE__ doc.osx = new wxXmlNode(wxXML_ELEMENT_NODE, "osx"); doc.report->AddChild(doc.osx); - Add(doc.osx, "patch", p->PatchLevel); - Add(doc.osx, "quicktimeext", p->QuickTimeExt); - Add(doc.osx, "model", p->HardwareModel); + Add(doc.osx, "patch", p->PatchLevel()); + Add(doc.osx, "quicktimeext", p->QuickTimeExt()); + Add(doc.osx, "model", p->HardwareModel()); #endif