Add `-l` flag to enable logging

This commit is contained in:
Jack Andersen 2017-11-18 21:10:54 -10:00
parent 172a0049cc
commit 3522d757fc
8 changed files with 46 additions and 6 deletions

View File

@ -4,6 +4,7 @@
#include "hecl/CVarManager.hpp"
#include "Runtime/CBasics.hpp"
#include "ViewManager.hpp"
#include "hecl/hecl.hpp"
static logvisor::Module AthenaLog("Athena");
static void AthenaExc(athena::error::Level level, const char* file,
@ -125,20 +126,33 @@ struct Application : boo::IApplicationCallback
static hecl::SystemChar CwdBuf[1024];
hecl::SystemString ExeDir;
void SetupBasics()
static void SetupBasics(bool logging)
{
logvisor::RegisterStandardExceptions();
if (logging)
logvisor::RegisterConsoleLogger();
atSetExceptionHandler(AthenaExc);
}
static bool IsClientLoggingEnabled(int argc, const boo::SystemChar** argv)
{
bool logging = false;
for (int i = 1; i < argc; ++i)
if (!hecl::StrNCmp(argv[i], _S("-l"), 2))
{
logging = true;
break;
}
return logging;
}
#if _WIN32
int wmain(int argc, const boo::SystemChar** argv)
#else
int main(int argc, const boo::SystemChar** argv)
#endif
{
SetupBasics();
SetupBasics(IsClientLoggingEnabled(argc, argv));
if (hecl::SystemChar* cwd = hecl::Getcwd(CwdBuf, 1024))
{
@ -182,6 +196,7 @@ int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE, LPWSTR lpCmdLine, int)
for (int i=0 ; i<argc ; ++i)
booArgv[i+1] = argv[i];
if (IsClientLoggingEnabled(argc+1, booArgv))
logvisor::CreateWin32Console();
return wmain(argc+1, booArgv);
}

View File

@ -1,5 +1,6 @@
#include "CDvdFile.hpp"
#include "CDvdRequest.hpp"
#include "CStopwatch.hpp"
namespace urde
{

View File

@ -1,5 +1,6 @@
#include "CFactoryMgr.hpp"
#include "IObj.hpp"
#include "CStopwatch.hpp"
namespace urde
{

View File

@ -65,6 +65,7 @@ add_library(RuntimeCommon
${WEAPON_SOURCES}
ITweak.hpp
IMain.hpp
CStopwatch.hpp
CGameAllocator.hpp CGameAllocator.cpp
CMemoryCardSys.hpp CMemoryCardSys.cpp
CScannableObjectInfo.hpp CScannableObjectInfo.cpp

View File

@ -1,5 +1,6 @@
#include "CResFactory.hpp"
#include "CSimplePool.hpp"
#include "CStopwatch.hpp"
namespace urde
{

21
Runtime/CStopwatch.hpp Normal file
View File

@ -0,0 +1,21 @@
#ifndef __URDE_CSTOPWATCH_HPP__
#define __URDE_CSTOPWATCH_HPP__
#include <chrono>
namespace urde
{
class CStopwatch
{
std::chrono::steady_clock::time_point m_start;
public:
CStopwatch() : m_start(std::chrono::steady_clock::now()) {}
void report(const char* name) const
{
printf("%s %f\n", name, std::chrono::duration_cast<std::chrono::microseconds>(
std::chrono::steady_clock::now() - m_start).count() / 1000000.f);
}
};
}
#endif // __URDE_CSTOPWATCH_HPP__

2
hecl

@ -1 +1 @@
Subproject commit fd8b53d626cf1204c8d6dea80f64573afc8e784a
Subproject commit 5f21d60814dcd2dbb5d58db7e78b5efb04435c39

2
nod

@ -1 +1 @@
Subproject commit b5916af70270185fb6aba5db8f670859483ffa4f
Subproject commit e20fce1e6f45b5dd2740fa4544a9f8471a1d52c0