void Pcsx2App::EnableAllLogging() { AffinityAssert_AllowFrom_MainUI(); const bool logBoxOpen = (m_ptr_ProgramLog != NULL); const IConsoleWriter* newHandler = NULL; if( emuLog ) { if( !m_StdoutRedirHandle ) m_StdoutRedirHandle = NewPipeRedir(stdout); if( !m_StderrRedirHandle ) m_StderrRedirHandle = NewPipeRedir(stderr); newHandler = logBoxOpen ? (IConsoleWriter*)&ConsoleWriter_WindowAndFile : (IConsoleWriter*)&ConsoleWriter_File; } else { if( logBoxOpen ) { if( !m_StdoutRedirHandle ) m_StdoutRedirHandle = NewPipeRedir(stdout); if( !m_StderrRedirHandle ) m_StderrRedirHandle = NewPipeRedir(stderr); newHandler = &ConsoleWriter_Window; } else newHandler = &ConsoleWriter_Stdout; } Console_SetActiveHandler( *newHandler ); }
// Used to disable the emuLog disk logger, typically used when disabling or re-initializing the // emuLog file handle. Call SetConsoleLogging to re-enable the disk logger when finished. void Pcsx2App::DisableDiskLogging() const { AffinityAssert_AllowFrom_MainUI(); const bool logBoxOpen = (GetProgramLog() != NULL); Console_SetActiveHandler( logBoxOpen ? (IConsoleWriter&)ConsoleWriter_Window : (IConsoleWriter&)ConsoleWriter_Stdout ); // Semi-hack: It's possible, however very unlikely, that a secondary thread could attempt // to write to the logfile just before we disable logging, and would thus have a pending write // operation to emuLog file handle at the same time we're trying to re-initialize it. The CRT // has some guards of its own, and PCSX2 itself typically suspends the "log happy" threads // when changing settings, so the chance for problems is low. We minimize it further here // by sleeping off 5ms, which should allow any pending log-to-disk events to finish up. // // (the most correct solution would be a mutex lock in the Disk logger itself, but for now I // am going to try and keep the logger lock-free and use this semi-hack instead). Threading::Sleep( 5 ); }
void Pcsx2App::DispatchVmSettingsEvent( IniInterface& ini ) { if( !AffinityAssert_AllowFrom_MainUI() ) return; m_evtsrc_AppStatus.Dispatch( AppSettingsEventInfo( ini, ini.IsSaving() ? AppStatus_VmSettingsSaved : AppStatus_VmSettingsLoaded ) ); }
void Pcsx2App::DispatchEvent( AppEventType evt ) { if( !AffinityAssert_AllowFrom_MainUI() ) return; m_evtsrc_AppStatus.Dispatch( AppEventInfo( evt ) ); }
void Pcsx2App::DispatchEvent( PluginEventType evt ) { if( !AffinityAssert_AllowFrom_MainUI() ) return; m_evtsrc_CorePluginStatus.Dispatch( evt ); }
TraceLogFilters& SetTraceConfig() { //DbgCon.WriteLn( "Direct modification of EmuConfig.TraceLog detected" ); AffinityAssert_AllowFrom_MainUI(); return const_cast<TraceLogFilters&>(EmuConfig.Trace); }
// Provides an accessor for quick modification of Gamefix options. // Used by loadGameSettings() to set gamefixes via database at game startup. Pcsx2Config::GamefixOptions& SetGameFixConfig() { //DbgCon.WriteLn( "Direct modification of EmuConfig.Gamefixes detected" ); AffinityAssert_AllowFrom_MainUI(); return const_cast<Pcsx2Config::GamefixOptions&>(EmuConfig.Gamefixes); }
// Provides an accessor for quick modification of Recompiler options. // Used by loadGameSettings() to set clamp modes via database at game startup. Pcsx2Config::RecompilerOptions& SetRecompilerConfig() { //DbgCon.WriteLn( "Direct modification of EmuConfig.Gamefixes detected" ); AffinityAssert_AllowFrom_MainUI(); return const_cast<Pcsx2Config::RecompilerOptions&>(EmuConfig.Cpu.Recompiler); }
void Pcsx2App::DisableWindowLogging() const { AffinityAssert_AllowFrom_MainUI(); Console_SetActiveHandler( (emuLog!=NULL) ? (IConsoleWriter&)ConsoleWriter_File : (IConsoleWriter&)ConsoleWriter_Stdout ); }