summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorJohn Peterson <jpeterson57@gmail.com>2008-11-18 02:52:50 +0000
committerJohn Peterson <jpeterson57@gmail.com>2008-11-18 02:52:50 +0000
commit24cce4938f04f0c53afbe1af216fab17d55ceebd (patch)
treeba0afa404035982acc10fb86dad5f9225f616796 /Source/Core
parenta26865be8889578cc7a59a0b2e9c4b175f74ecb7 (diff)
Added unify option to Log manager that basically disables the verbosity levels for those who wish that
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1202 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/Src/LogManager.cpp63
-rw-r--r--Source/Core/Core/Src/LogManager.h3
-rw-r--r--Source/Core/DebuggerWX/Src/LogWindow.cpp92
3 files changed, 128 insertions, 30 deletions
diff --git a/Source/Core/Core/Src/LogManager.cpp b/Source/Core/Core/Src/LogManager.cpp
index 0f06dd070f..f4a1d10120 100644
--- a/Source/Core/Core/Src/LogManager.cpp
+++ b/Source/Core/Core/Src/LogManager.cpp
@@ -261,7 +261,9 @@ void LogManager::Log(LogTypes::LOG_TYPE _type, const char *_fmt, ...)
const char *eol = "\n";
if (Index > 0)
{
+ //sprintf(Msg2, "%i | %i %02i:%02i:%03i: %x %s (%s, %08x) : %s%s",
sprintf(Msg2, "%i %02i:%02i:%03i: %x %s (%s, %08x) : %s%s",
+ //v,
++count,
datetime.GetMinute(), datetime.GetSecond(), datetime.GetMillisecond(),
PowerPC::ppcState.DebugCount,
@@ -271,35 +273,70 @@ void LogManager::Log(LogTypes::LOG_TYPE _type, const char *_fmt, ...)
}
// ==========================================================================================
- // Level 0 verbosity logs will be written to all verbosity levels. Given that logging is enabled
- // for that level. Level 1 verbosity will only be written to level 1, 2, 3 and so on.
+ /* Here we have two options
+ 1. Verbosity mode where level 0 verbosity logs will be written to all verbosity
+ levels. Given that logging is enabled for that level. Level 1 verbosity will
+ only be written to level 1, 2, 3 and so on.
+ 2. Unify mode where everything is written to the last message struct and the
+ last file */
// ---------------
- int id;
- for (int i = LogManager::VERBOSITY_LEVELS; i >= v ; i--)
+
+ // Check if we should do a unified write to a single file
+ if(m_LogSettings->bUnify)
{
// prepare the right id
- id = i*100 + type;
+ int id = VERBOSITY_LEVELS*100 + type;
+ int ver = VERBOSITY_LEVELS;
// write to memory
- m_Messages[i][m_nextMessages[i]].Set((LogTypes::LOG_TYPE)id, v, Msg2);
+ m_Messages[ver][m_nextMessages[ver]].Set((LogTypes::LOG_TYPE)id, v, Msg2);
// ----------------------------------------------------------------------------------------
- // write to file
+ // Write to file
// ---------------
if (m_Log[id]->m_pFile && m_Log[id]->m_bLogToFile)
fprintf(m_Log[id]->m_pFile, "%s", Msg2);
- if (m_Log[i*100 + LogTypes::MASTER_LOG] && m_Log[i*100 + LogTypes::MASTER_LOG]->m_pFile
- && LogManager::m_LogSettings->bWriteMaster)
- fprintf(m_Log[i*100 + LogTypes::MASTER_LOG]->m_pFile, "%s", Msg2);
+ if (m_Log[ver*100 + LogTypes::MASTER_LOG] && m_Log[ver*100 + LogTypes::MASTER_LOG]->m_pFile
+ && m_LogSettings->bWriteMaster)
+ fprintf(m_Log[ver*100 + LogTypes::MASTER_LOG]->m_pFile, "%s", Msg2);
printf("%s", Msg2); // write to console screen
// this limits the memory space used for the memory logs to MAX_MESSAGES rows
- m_nextMessages[i]++;
- if (m_nextMessages[i] >= MAX_MESSAGES)
- m_nextMessages[i] = 0;
+ m_nextMessages[ver]++;
+ if (m_nextMessages[ver] >= MAX_MESSAGES)
+ m_nextMessages[ver] = 0;
// ---------------
}
+ else // write to separate files and structs
+ {
+ int id;
+ for (int i = VERBOSITY_LEVELS; i >= v ; i--)
+ {
+ // prepare the right id
+ id = i*100 + type;
+
+ // write to memory
+ m_Messages[i][m_nextMessages[i]].Set((LogTypes::LOG_TYPE)id, v, Msg2);
+
+ // ----------------------------------------------------------------------------------------
+ // Write to file
+ // ---------------
+ if (m_Log[id]->m_pFile && m_Log[id]->m_bLogToFile)
+ fprintf(m_Log[id]->m_pFile, "%s", Msg2);
+ if (m_Log[i*100 + LogTypes::MASTER_LOG] && m_Log[i*100 + LogTypes::MASTER_LOG]->m_pFile
+ && m_LogSettings->bWriteMaster)
+ fprintf(m_Log[i*100 + LogTypes::MASTER_LOG]->m_pFile, "%s", Msg2);
+
+ printf("%s", Msg2); // write to console screen
+
+ // this limits the memory space used for the memory logs to MAX_MESSAGES rows
+ m_nextMessages[i]++;
+ if (m_nextMessages[i] >= MAX_MESSAGES)
+ m_nextMessages[i] = 0;
+ // ---------------
+ }
+ }
m_bDirty = true; // tell LogWindow that the log has been updated
}
diff --git a/Source/Core/Core/Src/LogManager.h b/Source/Core/Core/Src/LogManager.h
index ac6fc36fc1..d2a60113fc 100644
--- a/Source/Core/Core/Src/LogManager.h
+++ b/Source/Core/Core/Src/LogManager.h
@@ -52,7 +52,8 @@ struct CDebugger_LogSettings
{
int m_iVerbosity; // verbosity level 0 - 2
bool bResolve;
- bool bWriteMaster;
+ bool bWriteMaster;
+ bool bUnify;
// constructor
CDebugger_LogSettings();
diff --git a/Source/Core/DebuggerWX/Src/LogWindow.cpp b/Source/Core/DebuggerWX/Src/LogWindow.cpp
index 9e0f9c4263..e7c2970d2b 100644
--- a/Source/Core/DebuggerWX/Src/LogWindow.cpp
+++ b/Source/Core/DebuggerWX/Src/LogWindow.cpp
@@ -62,6 +62,7 @@ CLogWindow::CLogWindow(wxWindow* parent)
wxStaticBoxSizer * m_optionsSizer = new wxStaticBoxSizer(wxVERTICAL, this, wxT("Settings"));
m_options = new wxCheckListBox(this, IDM_OPTIONS, wxDefaultPosition, wxDefaultSize,
0, NULL, wxNO_BORDER);
+ m_options->Append(wxT("Unify"));
m_options->Append(wxT("Resolve symbols"));
m_options->Append(wxT("Write master"));
m_options->Append(wxT("Show unique"));
@@ -143,12 +144,21 @@ void CLogWindow::Load(IniFile& _IniFile)
LogManager::m_LogSettings->m_iVerbosity = v;
// load options
+ _IniFile.Get("LogWindow", "Unify", &LogManager::m_LogSettings->bUnify, false);
_IniFile.Get("LogWindow", "ResolveSymbols", &LogManager::m_LogSettings->bResolve, false);
_IniFile.Get("LogWindow", "WriteMaster", &LogManager::m_LogSettings->bWriteMaster, false);
_IniFile.Get("LogWindow", "OnlyUnique", &bOnlyUnique, false);
- m_options->Check(0, LogManager::m_LogSettings->bResolve);
- m_options->Check(1, LogManager::m_LogSettings->bWriteMaster);
- m_options->Check(2, bOnlyUnique);
+ m_options->Check(0, LogManager::m_LogSettings->bUnify);
+ m_options->Check(1, LogManager::m_LogSettings->bResolve);
+ m_options->Check(2, LogManager::m_LogSettings->bWriteMaster);
+ m_options->Check(3, bOnlyUnique);
+
+ if(LogManager::m_LogSettings->bUnify)
+ {
+ m_RadioBox[0]->SetSelection(LogManager::VERBOSITY_LEVELS);
+ LogManager::m_LogSettings->m_iVerbosity = LogManager::VERBOSITY_LEVELS;
+ m_RadioBox[0]->Disable();
+ }
}
void CLogWindow::OnSubmit(wxCommandEvent& event)
@@ -248,12 +258,42 @@ void CLogWindow::OnOptionsCheck(wxCommandEvent& event)
{
IniFile ini;
ini.Load(DEBUGGER_CONFIG_FILE);
- LogManager::m_LogSettings->bResolve = m_options->IsChecked(0);
- LogManager::m_LogSettings->bWriteMaster = m_options->IsChecked(1);
- bOnlyUnique = m_options->IsChecked(2);
- ini.Set("LogWindow", "ResolveSymbols", m_options->IsChecked(0));
- ini.Set("LogWindow", "WriteMaster", m_options->IsChecked(1));
- ini.Set("LogWindow", "OnlyUnique", m_options->IsChecked(2));
+
+ // Unified case
+ if(m_options->IsChecked(0) && Core::GetState() != Core::CORE_UNINITIALIZED)
+ {
+ m_RadioBox[0]->SetSelection(LogManager::VERBOSITY_LEVELS);
+ LogManager::m_LogSettings->m_iVerbosity = LogManager::VERBOSITY_LEVELS;
+ m_RadioBox[0]->Disable();
+
+ for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; i++)
+ {
+ for (int j = 0; j <= LogManager::VERBOSITY_LEVELS; j++)
+ {
+ // update groups to enabled or disabled
+ bool Enabled = m_checks->IsChecked(i); // get all from the current i
+ LogManager::m_Log[i + 100*j]->m_bEnable = Enabled;
+ LogManager::m_Log[i + 100*j]->m_bShowInLog = Enabled;
+
+ // update all verbosity levels to this level's Enabled
+ ini.Set("LogManager", LogManager::m_Log[i + 100*j]->m_szShortName, Enabled);
+ }
+ }
+ }
+ else
+ {
+ m_RadioBox[0]->Enable(true);
+ }
+
+ LogManager::m_LogSettings->bUnify = m_options->IsChecked(0);
+ LogManager::m_LogSettings->bResolve = m_options->IsChecked(1);
+ LogManager::m_LogSettings->bWriteMaster = m_options->IsChecked(2);
+ bOnlyUnique = m_options->IsChecked(3);
+
+ ini.Set("LogWindow", "Unify", m_options->IsChecked(0));
+ ini.Set("LogWindow", "ResolveSymbols", m_options->IsChecked(1));
+ ini.Set("LogWindow", "WriteMaster", m_options->IsChecked(2));
+ ini.Set("LogWindow", "OnlyUnique", m_options->IsChecked(3));
ini.Save(DEBUGGER_CONFIG_FILE);
if (Core::GetState() != Core::CORE_UNINITIALIZED) UpdateLog();
}
@@ -271,16 +311,36 @@ void CLogWindow::OnLogCheck(wxCommandEvent& event)
IniFile ini;
ini.Load(DEBUGGER_CONFIG_FILE);
- int v = LogManager::m_LogSettings->m_iVerbosity;
+ int v = LogManager::m_LogSettings->m_iVerbosity; // current radio button
+ int uni = LogManager::m_LogSettings->bUnify;
- for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; i++)
+ // Unified case
+ if(uni)
+ {
+ for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; i++)
+ {
+ for (int j = 0; j <= LogManager::VERBOSITY_LEVELS; j++)
+ {
+ // update groups to enabled or disabled
+ bool Enabled = m_checks->IsChecked(i); // get all from the current i
+ LogManager::m_Log[i + 100*j]->m_bEnable = Enabled;
+ LogManager::m_Log[i + 100*j]->m_bShowInLog = Enabled;
+
+ ini.Set("LogManager", LogManager::m_Log[i + 100*v]->m_szShortName, Enabled);
+ }
+ }
+ }
+ else
{
- // update groups to enabled or disabled
- bool Enabled = m_checks->IsChecked(i);
- LogManager::m_Log[i + 100*v]->m_bEnable = Enabled;
- LogManager::m_Log[i + 100*v]->m_bShowInLog = Enabled;
+ for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; i++)
+ {
+ // update groups to enabled or disabled
+ bool Enabled = m_checks->IsChecked(i);
+ LogManager::m_Log[i + 100*v]->m_bEnable = Enabled;
+ LogManager::m_Log[i + 100*v]->m_bShowInLog = Enabled;
- ini.Set("LogManager", LogManager::m_Log[i + 100*v]->m_szShortName, Enabled);
+ ini.Set("LogManager", LogManager::m_Log[i + 100*v]->m_szShortName, Enabled);
+ }
}
ini.Save(DEBUGGER_CONFIG_FILE);