Logs.cpp: more code moved to main.cpp

This commit is contained in:
Nekotekina 2020-03-06 22:29:16 +03:00
parent 2209be5216
commit 66b0b78055
3 changed files with 112 additions and 91 deletions

View file

@ -33,6 +33,7 @@ DYNAMIC_IMPORT("ntdll.dll", NtSetTimerResolution, NTSTATUS(ULONG DesiredResoluti
#include <dispatch/dispatch.h>
#endif
#include "Utilities/sysinfo.h"
#include "rpcs3_version.h"
#include "Emu/System.h"
#include <thread>
@ -45,11 +46,6 @@ inline auto tr(Args&&... args)
return QObject::tr(std::forward<Args>(args)...);
}
namespace logs
{
void set_init();
}
static semaphore<> s_init{0};
static semaphore<> s_qt_init{0};
static semaphore<> s_qt_mutex{};
@ -220,7 +216,6 @@ int main(int argc, char** argv)
if (!instance_lock)
{
QApplication app0{argc, argv};
s_qt_init.unlock();
if (fs::g_tls_error == fs::error::acces)
@ -248,8 +243,43 @@ int main(int argc, char** argv)
return 1;
}
std::unique_ptr<logs::listener> log_file;
{
// Check free space
fs::device_stat stats{};
if (!fs::statfs(fs::get_cache_dir(), stats) || stats.avail_free < 128 * 1024 * 1024)
{
QApplication app0{argc, argv};
s_qt_init.unlock();
logs::set_init();
report_fatal_error(fmt::format("Not enough free space (%f KB)", stats.avail_free / 1000000.));
return 1;
}
// Limit log size to ~25% of free space
log_file = logs::make_file_listener(fs::get_cache_dir() + "RPCS3.log", stats.avail_free / 4);
}
{
const std::string firmware_version = utils::get_firmware_version();
const std::string firmware_string = firmware_version.empty() ? "" : (" | Firmware version: " + firmware_version);
// Write initial message
logs::stored_message ver;
ver.m.ch = nullptr;
ver.m.sev = logs::level::always;
ver.stamp = 0;
ver.text = fmt::format("RPCS3 v%s | %s%s\n%s", rpcs3::get_version().to_string(), rpcs3::get_branch(), firmware_string, utils::get_system_info());
// Write OS version
logs::stored_message os;
os.m.ch = nullptr;
os.m.sev = logs::level::notice;
os.stamp = 0;
os.text = utils::get_OS_version();
logs::set_init({std::move(ver), std::move(os)});
}
#ifdef __linux__
struct ::rlimit rlim;