wxgui: improve single-threaded plugin enumerator for Linux (still a bit buggy)

git-svn-id: http://pcsx2.googlecode.com/svn/branches/wxgui@1743 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
Jake.Stine 2009-09-05 09:21:59 +00:00
parent 0fa673fdd2
commit 93e1d87a22
7 changed files with 546 additions and 518 deletions

View File

@ -50,6 +50,8 @@ namespace Threading
// your sister, and then cheating on her with your daughter.
PersistentThread::~PersistentThread()
{
if( !m_running ) return;
wxASSERT( !IsSelf() ); // not allowed from our own thread.
if( !_InterlockedExchange( &m_detached, true ) )
@ -62,9 +64,7 @@ namespace Threading
// This function should not be called from the owner thread.
void PersistentThread::Start()
{
wxASSERT( !IsSelf() ); // not allowed from our own thread.
if( m_running ) return;
if( pthread_create( &m_thread, NULL, _internal_callback, this ) != 0 )
throw Exception::ThreadCreationError();
@ -74,8 +74,10 @@ namespace Threading
// This function should not be called from the owner thread.
void PersistentThread::Detach()
{
wxASSERT( !IsSelf() ); // not allowed from our own thread.
if( !m_running ) return;
if( _InterlockedExchange( &m_detached, true ) ) return;
wxASSERT( !IsSelf() ); // not allowed from our own thread.
pthread_detach( m_thread );
}
@ -92,7 +94,6 @@ namespace Threading
//
void PersistentThread::Cancel( bool isBlocking )
{
wxASSERT( !IsSelf() );
if( _InterlockedExchange( &m_detached, true ) )
{
if( m_running )
@ -100,6 +101,7 @@ namespace Threading
return;
}
wxASSERT( !IsSelf() );
pthread_cancel( m_thread );
if( isBlocking )
@ -120,8 +122,6 @@ namespace Threading
//
sptr PersistentThread::Block()
{
DevAssert( !IsSelf(), "Thread deadlock detected; Block() should never be called by the owner thread." );
if( _InterlockedExchange( &m_detached, true ) )
{
// already detached: if we're still running then its an invalid operation
@ -132,11 +132,12 @@ namespace Threading
}
else
{
DevAssert( !IsSelf(), "Thread deadlock detected; Block() should never be called by the owner thread." );
pthread_join( m_thread, (void**)&m_returncode );
return m_returncode;
}
}
bool PersistentThread::IsSelf() const
{
return pthread_self() == m_thread;

View File

@ -1,416 +1,410 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="pcsx2" />
<Option platforms="Windows;Unix;" />
<Option pch_mode="2" />
<Option compiler="gcc" />
<Build>
<Target title="Debug">
<Option platforms="Windows;Unix;" />
<Option output="$(SvnRootDir)/bin/pcsx2-dbg" prefix_auto="1" extension_auto="1" />
<Option working_dir="$(SvnRootDir)/bin/" />
<Option object_output="./.objs/debug" />
<Option type="0" />
<Option compiler="gcc" />
<Compiler>
<Add option="-g" />
<Add option="`wx-config --version=2.8 --static=no --unicode=yes --debug=yes --cflags`" />
<Add option="-DPCSX2_DEVBUILD" />
<Add option="-DPCSX2_DEBUG" />
</Compiler>
<ResourceCompiler>
<Add directory="$(ProjectRootDir)/gui" />
</ResourceCompiler>
<Linker>
<Add option="`wx-config --version=2.8 --static=no --unicode=yes --debug=yes --libs`" />
<Add library="$(SvnRootDir)/deps/debug/zlib.a" />
<Add library="$(SvnRootDir)/deps/debug/libx86emitter.a" />
<Add library="$(SvnRootDir)/deps/debug/libUtilities.a" />
</Linker>
</Target>
<Target title="Devel">
<Option platforms="Windows;Unix;" />
<Option output="$(SvnRootDir)/bin/pcsx2-dev" prefix_auto="1" extension_auto="1" />
<Option working_dir="$(SvnRootDir)/bin/" />
<Option object_output="./.objs/devel" />
<Option type="0" />
<Option compiler="gcc" />
<Compiler>
<Add option="-O2" />
<Add option="-W" />
<Add option="`wx-config --version=2.8 --static=no --unicode=yes --debug=yes --cflags`" />
<Add option="-DNDEBUG" />
<Add option="-DPCSX2_DEVBUILD" />
</Compiler>
<ResourceCompiler>
<Add directory="$(ProjectRootDir)/gui" />
</ResourceCompiler>
<Linker>
<Add option="`wx-config --version=2.8 --static=no --unicode=yes --debug=yes --libs`" />
<Add library="$(SvnRootDir)/deps/devel/zlib.a" />
<Add library="$(SvnRootDir)/deps/devel/libx86emitter.a" />
<Add library="$(SvnRootDir)/deps/devel/libUtilities.a" />
</Linker>
</Target>
<Target title="Release">
<Option platforms="Windows;Unix;" />
<Option output="$(SvnRootDir)/bin/pcsx2" prefix_auto="1" extension_auto="1" />
<Option working_dir="$(SvnRootDir)/bin/" />
<Option object_output="./.objs/release" />
<Option type="0" />
<Option compiler="gcc" />
<Compiler>
<Add option="-O2" />
<Add option="`wx-config --version=2.8 --static=no --unicode=yes --debug=no --cflags`" />
<Add option="-DNDEBUG" />
</Compiler>
<ResourceCompiler>
<Add directory="$(ProjectRootDir)/gui" />
</ResourceCompiler>
<Linker>
<Add option="-s" />
<Add option="`wx-config --version=2.8 --static=no --unicode=yes --debug=no --libs`" />
<Add library="$(SvnRootDir)/deps/release/zlib.a" />
<Add library="$(SvnRootDir)/deps/release/libx86emitter.a" />
<Add library="$(SvnRootDir)/deps/release/libUtilities.a" />
</Linker>
</Target>
<Environment>
<Variable name="SvnRootDir" value="../../" />
<Variable name="ProjectRootDir" value='&quot;$(SvnRootDir)/pcsx2/&quot;' />
<Variable name="CommonDir" value='&quot;$(SvnRootDir)/common/&quot;' />
</Environment>
</Build>
<Compiler>
<Add option="-march=athlon" />
<Add option="-march=pentium4" />
<Add option="-march=i686" />
<Add option="-march=i586" />
<Add option="-Wno-format" />
<Add option="-Wno-unused-parameter" />
<Add option="-Wno-unused-value" />
<Add option="-Wunused-variable" />
<Add option="-fno-guess-branch-probability" />
<Add option="-fno-dse" />
<Add option="-fno-tree-dse" />
<Add option="-pipe -msse -msse2" />
<Add option="-DWX_PRECOMP" />
<Add directory="$(SvnRootDir)/common/include/" />
<Add directory="$(SvnRootDir)/3rdparty/" />
<Add directory="$(ProjectRootDir)" />
<Add directory="$(ProjectRootDir)/gui" />
<Add directory="$(ProjectRootDir)/x86" />
</Compiler>
<Linker>
<Add option="-Xlinker -zmuldefs" />
</Linker>
<Unit filename="../../common/include/PS2Edefs.h" />
<Unit filename="../../common/include/PS2Etypes.h" />
<Unit filename="../../common/include/Pcsx2Api.h" />
<Unit filename="../../common/include/Pcsx2Config.h" />
<Unit filename="../../common/include/Pcsx2Defs.h" />
<Unit filename="../../common/include/Pcsx2Types.h" />
<Unit filename="../../common/include/PluginCallbacks.h" />
<Unit filename="../../common/include/wx/folderdesc.txt" />
<Unit filename="../../common/include/wx/scopedarray.h" />
<Unit filename="../../common/include/wx/scopedptr.h" />
<Unit filename="../CDVD/CDVD.cpp" />
<Unit filename="../CDVD/CDVD.h" />
<Unit filename="../CDVD/CDVD_internal.h" />
<Unit filename="../CDVD/CDVDaccess.cpp" />
<Unit filename="../CDVD/CDVDaccess.h" />
<Unit filename="../CDVD/CDVDisoReader.cpp" />
<Unit filename="../CDVD/CDVDisoReader.h" />
<Unit filename="../CDVD/CdRom.cpp" />
<Unit filename="../CDVD/CdRom.h" />
<Unit filename="../CDVD/IsoFScdvd.h" />
<Unit filename="../CDVD/IsoFSdrv.cpp" />
<Unit filename="../CDVD/IsoFSdrv.h" />
<Unit filename="../CDVD/IsoFStools.cpp" />
<Unit filename="../CDVD/IsoFStools.h" />
<Unit filename="../CDVD/IsoFileFormats.cpp" />
<Unit filename="../CDVD/IsoFileFormats.h" />
<Unit filename="../CDVD/IsoFileTools.cpp" />
<Unit filename="../CDVD/IsoFileTools.h" />
<Unit filename="../CDVD/IsoFileTools.h.save" />
<Unit filename="../CDVD/Makefile.am" />
<Unit filename="../COP0.cpp" />
<Unit filename="../COP2.cpp" />
<Unit filename="../Cache.cpp" />
<Unit filename="../Cache.h" />
<Unit filename="../Common.h" />
<Unit filename="../Config.h" />
<Unit filename="../Counters.cpp" />
<Unit filename="../Counters.h" />
<Unit filename="../DebugTools/Debug.h" />
<Unit filename="../DebugTools/DisASM.h" />
<Unit filename="../DebugTools/DisR3000A.cpp" />
<Unit filename="../DebugTools/DisR5900.cpp" />
<Unit filename="../DebugTools/DisR5900asm.cpp" />
<Unit filename="../DebugTools/DisVU0Micro.cpp" />
<Unit filename="../DebugTools/DisVU1Micro.cpp" />
<Unit filename="../DebugTools/DisVUmicro.h" />
<Unit filename="../DebugTools/DisVUops.h" />
<Unit filename="../Docs/ChangeLog.txt" />
<Unit filename="../Docs/License.txt" />
<Unit filename="../Docs/PS2Edefs.txt" />
<Unit filename="../Docs/RemoteDebugging.txt" />
<Unit filename="../Docs/devblog.txt" />
<Unit filename="../Docs/readme 0.9.4.txt" />
<Unit filename="../Docs/readme Playground.txt" />
<Unit filename="../Dump.cpp" />
<Unit filename="../Dump.h" />
<Unit filename="../Elfheader.cpp" />
<Unit filename="../Elfheader.h" />
<Unit filename="../FPU.cpp" />
<Unit filename="../FiFo.cpp" />
<Unit filename="../GS.cpp" />
<Unit filename="../GS.h" />
<Unit filename="../Gif.cpp" />
<Unit filename="../HashMap.h" />
<Unit filename="../HashTools.cpp" />
<Unit filename="../HostGui.h" />
<Unit filename="../Hw.cpp" />
<Unit filename="../Hw.h" />
<Unit filename="../HwRead.cpp" />
<Unit filename="../HwWrite.cpp" />
<Unit filename="../IPU/IPU.cpp" />
<Unit filename="../IPU/IPU.h" />
<Unit filename="../IPU/acoroutine.S" />
<Unit filename="../IPU/coroutine.cpp" />
<Unit filename="../IPU/coroutine.h" />
<Unit filename="../IPU/mpeg2lib/Idct.cpp" />
<Unit filename="../IPU/mpeg2lib/Mpeg.cpp" />
<Unit filename="../IPU/mpeg2lib/Mpeg.h" />
<Unit filename="../IPU/mpeg2lib/Vlc.h" />
<Unit filename="../IPU/yuv2rgb.cpp" />
<Unit filename="../IPU/yuv2rgb.h" />
<Unit filename="../Interpreter.cpp" />
<Unit filename="../IopBios.cpp" />
<Unit filename="../IopBios.h" />
<Unit filename="../IopBios2.h" />
<Unit filename="../IopCommon.h" />
<Unit filename="../IopCounters.cpp" />
<Unit filename="../IopCounters.h" />
<Unit filename="../IopDma.cpp" />
<Unit filename="../IopDma.h" />
<Unit filename="../IopHw.cpp" />
<Unit filename="../IopHw.h" />
<Unit filename="../IopMem.cpp" />
<Unit filename="../IopMem.h" />
<Unit filename="../IopSio2.cpp" />
<Unit filename="../IopSio2.h" />
<Unit filename="LnxHostSys.cpp" />
<Unit filename="../MMI.cpp" />
<Unit filename="../MTGS.cpp" />
<Unit filename="../Memory.cpp" />
<Unit filename="../Memory.h" />
<Unit filename="../MemoryCard.cpp" />
<Unit filename="../MemoryCard.h" />
<Unit filename="../Misc.cpp" />
<Unit filename="../Misc.h" />
<Unit filename="../NakedAsm.h" />
<Unit filename="../Patch.cpp" />
<Unit filename="../Patch.h" />
<Unit filename="../PathUtils.cpp" />
<Unit filename="../Paths.h" />
<Unit filename="../Pcsx2Config.cpp" />
<Unit filename="../PluginManager.cpp" />
<Unit filename="../Plugins.h" />
<Unit filename="../PrecompiledHeader.h" />
<Unit filename="../R3000A.cpp" />
<Unit filename="../R3000A.h" />
<Unit filename="../R3000AInterpreter.cpp" />
<Unit filename="../R3000AOpcodeTables.cpp" />
<Unit filename="../R5900.cpp" />
<Unit filename="../R5900.h" />
<Unit filename="../R5900Exceptions.h" />
<Unit filename="../R5900OpcodeImpl.cpp" />
<Unit filename="../R5900OpcodeTables.cpp" />
<Unit filename="../R5900OpcodeTables.h" />
<Unit filename="../RecoverySystem.cpp" />
<Unit filename="../SPR.cpp" />
<Unit filename="../SPR.h" />
<Unit filename="../SamplProf.h" />
<Unit filename="../SaveState.cpp" />
<Unit filename="../SaveState.h" />
<Unit filename="../Sif.cpp" />
<Unit filename="../Sif.h" />
<Unit filename="../Sifcmd.h" />
<Unit filename="../Sio.cpp" />
<Unit filename="../Sio.h" />
<Unit filename="../SourceLog.cpp" />
<Unit filename="../Stats.cpp" />
<Unit filename="../Stats.h" />
<Unit filename="../StringUtils.h" />
<Unit filename="../System.cpp" />
<Unit filename="../System.h" />
<Unit filename="../Utilities/AsciiFile.h" />
<Unit filename="../Utilities/FileUtils.cpp" />
<Unit filename="../Utilities/folderdesc.txt" />
<Unit filename="../VU.h" />
<Unit filename="../VU0.cpp" />
<Unit filename="../VU0micro.cpp" />
<Unit filename="../VU0microInterp.cpp" />
<Unit filename="../VU1micro.cpp" />
<Unit filename="../VU1microInterp.cpp" />
<Unit filename="../VUflags.cpp" />
<Unit filename="../VUflags.h" />
<Unit filename="../VUmicro.h" />
<Unit filename="../VUmicroMem.cpp" />
<Unit filename="../VUops.cpp" />
<Unit filename="../VUops.h" />
<Unit filename="../Vif.cpp" />
<Unit filename="../Vif.h" />
<Unit filename="../VifDma.cpp" />
<Unit filename="../VifDma.h" />
<Unit filename="../gui/AdvancedDialog.cpp" />
<Unit filename="../gui/AdvancedDialog.h" />
<Unit filename="../gui/App.h" />
<Unit filename="../gui/AppAssert.cpp" />
<Unit filename="../gui/AppConfig.cpp" />
<Unit filename="../gui/AppConfig.h" />
<Unit filename="../gui/AppRes.cpp" />
<Unit filename="../gui/CheckedStaticBox.cpp" />
<Unit filename="../gui/CheckedStaticBox.h" />
<Unit filename="../gui/ConsoleLogger.cpp" />
<Unit filename="../gui/ConsoleLogger.h" />
<Unit filename="../gui/Dialogs/AboutBoxDialog.cpp" />
<Unit filename="../gui/Dialogs/ConfigurationDialog.cpp" />
<Unit filename="../gui/Dialogs/ConfigurationDialog.h" />
<Unit filename="../gui/Dialogs/FirstTimeWizard.cpp" />
<Unit filename="../gui/Dialogs/ImportSettingsDialog.cpp" />
<Unit filename="../gui/Dialogs/LogOptionsDialog.cpp" />
<Unit filename="../gui/Dialogs/LogOptionsDialog.h" />
<Unit filename="../gui/Dialogs/ModalPopups.h" />
<Unit filename="../gui/Dialogs/PickUserModeDialog.cpp" />
<Unit filename="../gui/HostGui.cpp" />
<Unit filename="../gui/IniInterface.cpp" />
<Unit filename="../gui/IniInterface.h" />
<Unit filename="../gui/MainFrame.cpp" />
<Unit filename="../gui/MainFrame.h" />
<Unit filename="../gui/MainMenuClicks.cpp" />
<Unit filename="../gui/Panels/AudioPanel.cpp" />
<Unit filename="../gui/Panels/BiosSelectorPanel.cpp" />
<Unit filename="../gui/Panels/ConfigurationPanels.h" />
<Unit filename="../gui/Panels/CpuPanel.cpp" />
<Unit filename="../gui/Panels/DirPickerPanel.cpp" />
<Unit filename="../gui/Panels/GameFixesPanel.cpp" />
<Unit filename="../gui/Panels/MiscPanelStuff.cpp" />
<Unit filename="../gui/Panels/PathsPanel.cpp" />
<Unit filename="../gui/Panels/PluginSelectorPanel.cpp" />
<Unit filename="../gui/Panels/SpeedhacksPanel.cpp" />
<Unit filename="../gui/Panels/VideoPanel.cpp" />
<Unit filename="../gui/Plugins.cpp" />
<Unit filename="../gui/Resources/AppIcon.h" />
<Unit filename="../gui/Resources/BackgroundLogo.h" />
<Unit filename="../gui/Resources/ConfigIcon_Cpu.h" />
<Unit filename="../gui/Resources/ConfigIcon_Gamefixes.h" />
<Unit filename="../gui/Resources/ConfigIcon_Paths.h" />
<Unit filename="../gui/Resources/ConfigIcon_Plugins.h" />
<Unit filename="../gui/Resources/ConfigIcon_Speedhacks.h" />
<Unit filename="../gui/Resources/ConfigIcon_Video.h" />
<Unit filename="../gui/Resources/EmbeddedImage.h" />
<Unit filename="../gui/Resources/ps2_silver.h" />
<Unit filename="../gui/Saveslots.cpp" />
<Unit filename="../gui/i18n.cpp" />
<Unit filename="../gui/i18n.h" />
<Unit filename="../gui/main.cpp" />
<Unit filename="../gui/wxHelpers.cpp" />
<Unit filename="../gui/wxHelpers.h" />
<Unit filename="../pcsxAbout.bmp" />
<Unit filename="../ps2/BiosTools.cpp" />
<Unit filename="../ps2/BiosTools.h" />
<Unit filename="../ps2/CoreEmuThread.cpp" />
<Unit filename="../ps2/CoreEmuThread.h" />
<Unit filename="../ps2/Iop/IopHwRead.cpp" />
<Unit filename="../ps2/Iop/IopHwWrite.cpp" />
<Unit filename="../ps2/Iop/IopHw_Internal.h" />
<Unit filename="../tinyxml/tinystr.cpp" />
<Unit filename="../tinyxml/tinystr.h" />
<Unit filename="../tinyxml/tinyxml.cpp" />
<Unit filename="../tinyxml/tinyxml.h" />
<Unit filename="../tinyxml/tinyxmlerror.cpp" />
<Unit filename="../tinyxml/tinyxmlparser.cpp" />
<Unit filename="../vtlb.cpp" />
<Unit filename="../vtlb.h" />
<Unit filename="../x86/BaseblockEx.cpp" />
<Unit filename="../x86/BaseblockEx.h" />
<Unit filename="../x86/aR3000A.S" />
<Unit filename="../x86/aVUzerorec.S" />
<Unit filename="../x86/aVif.S" />
<Unit filename="../x86/iCOP0.cpp" />
<Unit filename="../x86/iCOP0.h" />
<Unit filename="../x86/iCOP2.cpp" />
<Unit filename="../x86/iCore.cpp" />
<Unit filename="../x86/iCore.h" />
<Unit filename="../x86/iFPU.cpp" />
<Unit filename="../x86/iFPU.h" />
<Unit filename="../x86/iFPUd.cpp" />
<Unit filename="../x86/iMMI.cpp" />
<Unit filename="../x86/iMMI.h" />
<Unit filename="../x86/iMisc.cpp" />
<Unit filename="../x86/iR3000A.cpp" />
<Unit filename="../x86/iR3000A.h" />
<Unit filename="../x86/iR3000Atables.cpp" />
<Unit filename="../x86/iR5900.h" />
<Unit filename="../x86/iR5900Arit.h" />
<Unit filename="../x86/iR5900AritImm.h" />
<Unit filename="../x86/iR5900Branch.h" />
<Unit filename="../x86/iR5900Jump.h" />
<Unit filename="../x86/iR5900LoadStore.h" />
<Unit filename="../x86/iR5900Misc.cpp" />
<Unit filename="../x86/iR5900Move.h" />
<Unit filename="../x86/iR5900MultDiv.h" />
<Unit filename="../x86/iR5900Shift.h" />
<Unit filename="../x86/iVU0micro.cpp" />
<Unit filename="../x86/iVU1micro.cpp" />
<Unit filename="../x86/iVif.cpp" />
<Unit filename="../x86/ir5900tables.cpp" />
<Unit filename="../x86/ix86-32/aR5900-32.S" />
<Unit filename="../x86/ix86-32/iCore-32.cpp" />
<Unit filename="../x86/ix86-32/iR5900-32.cpp" />
<Unit filename="../x86/ix86-32/iR5900Arit.cpp" />
<Unit filename="../x86/ix86-32/iR5900AritImm.cpp" />
<Unit filename="../x86/ix86-32/iR5900Branch.cpp" />
<Unit filename="../x86/ix86-32/iR5900Jump.cpp" />
<Unit filename="../x86/ix86-32/iR5900LoadStore.cpp" />
<Unit filename="../x86/ix86-32/iR5900Move.cpp" />
<Unit filename="../x86/ix86-32/iR5900MultDiv.cpp" />
<Unit filename="../x86/ix86-32/iR5900Shift.cpp" />
<Unit filename="../x86/ix86-32/iR5900Templates.cpp" />
<Unit filename="../x86/ix86-32/recVTLB.cpp" />
<Unit filename="../x86/microVU.cpp" />
<Unit filename="../x86/microVU.h" />
<Unit filename="../x86/microVU_Alloc.inl" />
<Unit filename="../x86/microVU_Analyze.inl" />
<Unit filename="../x86/microVU_Compile.inl" />
<Unit filename="../x86/microVU_Execute.inl" />
<Unit filename="../x86/microVU_Flags.inl" />
<Unit filename="../x86/microVU_IR.h" />
<Unit filename="../x86/microVU_Log.inl" />
<Unit filename="../x86/microVU_Lower.inl" />
<Unit filename="../x86/microVU_Misc.h" />
<Unit filename="../x86/microVU_Misc.inl" />
<Unit filename="../x86/microVU_Tables.inl" />
<Unit filename="../x86/microVU_Upper.inl" />
<Unit filename="../x86/sVU_Debug.h" />
<Unit filename="../x86/sVU_Lower.cpp" />
<Unit filename="../x86/sVU_Micro.cpp" />
<Unit filename="../x86/sVU_Micro.h" />
<Unit filename="../x86/sVU_Upper.cpp" />
<Unit filename="../x86/sVU_zerorec.cpp" />
<Unit filename="../x86/sVU_zerorec.h" />
<Unit filename="../xmlpatchloader.cpp" />
<Extensions>
<envvars />
<code_completion>
<search_path add="/usr/include/wx-2.8" />
</code_completion>
<lib_finder disable_auto="1" />
<debugger />
</Extensions>
</Project>
</CodeBlocks_project_file>
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="pcsx2" />
<Option platforms="Windows;Unix;" />
<Option pch_mode="2" />
<Option compiler="gcc" />
<Build>
<Target title="Debug">
<Option platforms="Windows;Unix;" />
<Option output="$(SvnRootDir)/bin/pcsx2-dbg" prefix_auto="1" extension_auto="1" />
<Option working_dir="$(SvnRootDir)/bin/" />
<Option object_output="./.objs/debug" />
<Option type="0" />
<Option compiler="gcc" />
<Compiler>
<Add option="-g" />
<Add option="`wx-config --version=2.8 --static=no --unicode=yes --debug=yes --cflags`" />
<Add option="-DPCSX2_DEVBUILD" />
<Add option="-DPCSX2_DEBUG" />
</Compiler>
<ResourceCompiler>
<Add directory="$(ProjectRootDir)/gui" />
</ResourceCompiler>
<Linker>
<Add option="`wx-config --version=2.8 --static=no --unicode=yes --debug=yes --libs`" />
<Add library="$(SvnRootDir)/deps/debug/zlib.a" />
<Add library="$(SvnRootDir)/deps/debug/libx86emitter.a" />
<Add library="$(SvnRootDir)/deps/debug/libUtilities.a" />
</Linker>
</Target>
<Target title="Devel">
<Option platforms="Windows;Unix;" />
<Option output="$(SvnRootDir)/bin/pcsx2-dev" prefix_auto="1" extension_auto="1" />
<Option working_dir="$(SvnRootDir)/bin/" />
<Option object_output="./.objs/devel" />
<Option type="0" />
<Option compiler="gcc" />
<Compiler>
<Add option="-O2" />
<Add option="-W" />
<Add option="`wx-config --version=2.8 --static=no --unicode=yes --debug=yes --cflags`" />
<Add option="-DNDEBUG" />
<Add option="-DPCSX2_DEVBUILD" />
</Compiler>
<ResourceCompiler>
<Add directory="$(ProjectRootDir)/gui" />
</ResourceCompiler>
<Linker>
<Add option="`wx-config --version=2.8 --static=no --unicode=yes --debug=yes --libs`" />
<Add library="$(SvnRootDir)/deps/devel/zlib.a" />
<Add library="$(SvnRootDir)/deps/devel/libx86emitter.a" />
<Add library="$(SvnRootDir)/deps/devel/libUtilities.a" />
</Linker>
</Target>
<Target title="Release">
<Option platforms="Windows;Unix;" />
<Option output="$(SvnRootDir)/bin/pcsx2" prefix_auto="1" extension_auto="1" />
<Option working_dir="$(SvnRootDir)/bin/" />
<Option object_output="./.objs/release" />
<Option type="0" />
<Option compiler="gcc" />
<Compiler>
<Add option="-O2" />
<Add option="`wx-config --version=2.8 --static=no --unicode=yes --debug=no --cflags`" />
<Add option="-DNDEBUG" />
</Compiler>
<ResourceCompiler>
<Add directory="$(ProjectRootDir)/gui" />
</ResourceCompiler>
<Linker>
<Add option="-s" />
<Add option="`wx-config --version=2.8 --static=no --unicode=yes --debug=no --libs`" />
<Add library="$(SvnRootDir)/deps/release/zlib.a" />
<Add library="$(SvnRootDir)/deps/release/libx86emitter.a" />
<Add library="$(SvnRootDir)/deps/release/libUtilities.a" />
</Linker>
</Target>
<Environment>
<Variable name="SvnRootDir" value="../../" />
<Variable name="ProjectRootDir" value='&quot;$(SvnRootDir)/pcsx2/&quot;' />
<Variable name="CommonDir" value='&quot;$(SvnRootDir)/common/&quot;' />
</Environment>
</Build>
<Compiler>
<Add option="-march=athlon" />
<Add option="-march=pentium4" />
<Add option="-march=i686" />
<Add option="-march=i586" />
<Add option="-Wno-format" />
<Add option="-Wno-unused-parameter" />
<Add option="-Wno-unused-value" />
<Add option="-Wunused-variable" />
<Add option="-fno-guess-branch-probability" />
<Add option="-fno-dse" />
<Add option="-fno-tree-dse" />
<Add option="-pipe -msse -msse2" />
<Add option="-DWX_PRECOMP" />
<Add directory="$(SvnRootDir)/common/include/" />
<Add directory="$(SvnRootDir)/3rdparty/" />
<Add directory="$(ProjectRootDir)" />
<Add directory="$(ProjectRootDir)/gui" />
<Add directory="$(ProjectRootDir)/x86" />
</Compiler>
<Linker>
<Add option="-Xlinker -zmuldefs" />
</Linker>
<Unit filename="../../common/include/PS2Edefs.h" />
<Unit filename="../../common/include/PS2Etypes.h" />
<Unit filename="../../common/include/Pcsx2Api.h" />
<Unit filename="../../common/include/Pcsx2Config.h" />
<Unit filename="../../common/include/Pcsx2Defs.h" />
<Unit filename="../../common/include/Pcsx2Types.h" />
<Unit filename="../../common/include/PluginCallbacks.h" />
<Unit filename="../../common/include/wx/folderdesc.txt" />
<Unit filename="../../common/include/wx/scopedarray.h" />
<Unit filename="../../common/include/wx/scopedptr.h" />
<Unit filename="../CDVD/CDVD.cpp" />
<Unit filename="../CDVD/CDVD.h" />
<Unit filename="../CDVD/CDVD_internal.h" />
<Unit filename="../CDVD/CDVDaccess.cpp" />
<Unit filename="../CDVD/CDVDaccess.h" />
<Unit filename="../CDVD/CDVDisoReader.cpp" />
<Unit filename="../CDVD/CDVDisoReader.h" />
<Unit filename="../CDVD/CdRom.cpp" />
<Unit filename="../CDVD/CdRom.h" />
<Unit filename="../CDVD/IsoFScdvd.h" />
<Unit filename="../CDVD/IsoFSdrv.cpp" />
<Unit filename="../CDVD/IsoFSdrv.h" />
<Unit filename="../CDVD/IsoFStools.cpp" />
<Unit filename="../CDVD/IsoFStools.h" />
<Unit filename="../CDVD/IsoFileFormats.cpp" />
<Unit filename="../CDVD/IsoFileFormats.h" />
<Unit filename="../CDVD/IsoFileTools.cpp" />
<Unit filename="../CDVD/IsoFileTools.h" />
<Unit filename="../COP0.cpp" />
<Unit filename="../COP2.cpp" />
<Unit filename="../Cache.cpp" />
<Unit filename="../Cache.h" />
<Unit filename="../Common.h" />
<Unit filename="../Config.h" />
<Unit filename="../Counters.cpp" />
<Unit filename="../Counters.h" />
<Unit filename="../DebugTools/Debug.h" />
<Unit filename="../DebugTools/DisASM.h" />
<Unit filename="../DebugTools/DisR3000A.cpp" />
<Unit filename="../DebugTools/DisR5900.cpp" />
<Unit filename="../DebugTools/DisR5900asm.cpp" />
<Unit filename="../DebugTools/DisVU0Micro.cpp" />
<Unit filename="../DebugTools/DisVU1Micro.cpp" />
<Unit filename="../DebugTools/DisVUmicro.h" />
<Unit filename="../DebugTools/DisVUops.h" />
<Unit filename="../Docs/ChangeLog.txt" />
<Unit filename="../Docs/License.txt" />
<Unit filename="../Docs/devblog.txt" />
<Unit filename="../Dump.cpp" />
<Unit filename="../Dump.h" />
<Unit filename="../Elfheader.cpp" />
<Unit filename="../Elfheader.h" />
<Unit filename="../FPU.cpp" />
<Unit filename="../FiFo.cpp" />
<Unit filename="../GS.cpp" />
<Unit filename="../GS.h" />
<Unit filename="../Gif.cpp" />
<Unit filename="../HashMap.h" />
<Unit filename="../HashTools.cpp" />
<Unit filename="../HostGui.h" />
<Unit filename="../Hw.cpp" />
<Unit filename="../Hw.h" />
<Unit filename="../HwRead.cpp" />
<Unit filename="../HwWrite.cpp" />
<Unit filename="../IPU/IPU.cpp" />
<Unit filename="../IPU/IPU.h" />
<Unit filename="../IPU/acoroutine.S" />
<Unit filename="../IPU/coroutine.cpp" />
<Unit filename="../IPU/coroutine.h" />
<Unit filename="../IPU/mpeg2lib/Idct.cpp" />
<Unit filename="../IPU/mpeg2lib/Mpeg.cpp" />
<Unit filename="../IPU/mpeg2lib/Mpeg.h" />
<Unit filename="../IPU/mpeg2lib/Vlc.h" />
<Unit filename="../IPU/yuv2rgb.cpp" />
<Unit filename="../IPU/yuv2rgb.h" />
<Unit filename="../Interpreter.cpp" />
<Unit filename="../IopBios.cpp" />
<Unit filename="../IopBios.h" />
<Unit filename="../IopBios2.h" />
<Unit filename="../IopCommon.h" />
<Unit filename="../IopCounters.cpp" />
<Unit filename="../IopCounters.h" />
<Unit filename="../IopDma.cpp" />
<Unit filename="../IopDma.h" />
<Unit filename="../IopHw.cpp" />
<Unit filename="../IopHw.h" />
<Unit filename="../IopMem.cpp" />
<Unit filename="../IopMem.h" />
<Unit filename="../IopSio2.cpp" />
<Unit filename="../IopSio2.h" />
<Unit filename="LnxHostSys.cpp" />
<Unit filename="../MMI.cpp" />
<Unit filename="../MTGS.cpp" />
<Unit filename="../Memory.cpp" />
<Unit filename="../Memory.h" />
<Unit filename="../MemoryCard.cpp" />
<Unit filename="../MemoryCard.h" />
<Unit filename="../Misc.cpp" />
<Unit filename="../Misc.h" />
<Unit filename="../NakedAsm.h" />
<Unit filename="../Patch.cpp" />
<Unit filename="../Patch.h" />
<Unit filename="../PathUtils.cpp" />
<Unit filename="../Paths.h" />
<Unit filename="../Pcsx2Config.cpp" />
<Unit filename="../PluginManager.cpp" />
<Unit filename="../Plugins.h" />
<Unit filename="../PrecompiledHeader.h" />
<Unit filename="../R3000A.cpp" />
<Unit filename="../R3000A.h" />
<Unit filename="../R3000AInterpreter.cpp" />
<Unit filename="../R3000AOpcodeTables.cpp" />
<Unit filename="../R5900.cpp" />
<Unit filename="../R5900.h" />
<Unit filename="../R5900Exceptions.h" />
<Unit filename="../R5900OpcodeImpl.cpp" />
<Unit filename="../R5900OpcodeTables.cpp" />
<Unit filename="../R5900OpcodeTables.h" />
<Unit filename="../RecoverySystem.cpp" />
<Unit filename="../SPR.cpp" />
<Unit filename="../SPR.h" />
<Unit filename="../SamplProf.h" />
<Unit filename="../SaveState.cpp" />
<Unit filename="../SaveState.h" />
<Unit filename="../Sif.cpp" />
<Unit filename="../Sif.h" />
<Unit filename="../Sifcmd.h" />
<Unit filename="../Sio.cpp" />
<Unit filename="../Sio.h" />
<Unit filename="../SourceLog.cpp" />
<Unit filename="../Stats.cpp" />
<Unit filename="../Stats.h" />
<Unit filename="../StringUtils.h" />
<Unit filename="../System.cpp" />
<Unit filename="../System.h" />
<Unit filename="../Utilities/AsciiFile.h" />
<Unit filename="../Utilities/FileUtils.cpp" />
<Unit filename="../Utilities/folderdesc.txt" />
<Unit filename="../VU.h" />
<Unit filename="../VU0.cpp" />
<Unit filename="../VU0micro.cpp" />
<Unit filename="../VU0microInterp.cpp" />
<Unit filename="../VU1micro.cpp" />
<Unit filename="../VU1microInterp.cpp" />
<Unit filename="../VUflags.cpp" />
<Unit filename="../VUflags.h" />
<Unit filename="../VUmicro.h" />
<Unit filename="../VUmicroMem.cpp" />
<Unit filename="../VUops.cpp" />
<Unit filename="../VUops.h" />
<Unit filename="../Vif.cpp" />
<Unit filename="../Vif.h" />
<Unit filename="../VifDma.cpp" />
<Unit filename="../VifDma.h" />
<Unit filename="../gui/AdvancedDialog.cpp" />
<Unit filename="../gui/AdvancedDialog.h" />
<Unit filename="../gui/App.h" />
<Unit filename="../gui/AppAssert.cpp" />
<Unit filename="../gui/AppConfig.cpp" />
<Unit filename="../gui/AppConfig.h" />
<Unit filename="../gui/AppRes.cpp" />
<Unit filename="../gui/CheckedStaticBox.cpp" />
<Unit filename="../gui/CheckedStaticBox.h" />
<Unit filename="../gui/ConsoleLogger.cpp" />
<Unit filename="../gui/ConsoleLogger.h" />
<Unit filename="../gui/Dialogs/AboutBoxDialog.cpp" />
<Unit filename="../gui/Dialogs/ConfigurationDialog.cpp" />
<Unit filename="../gui/Dialogs/ConfigurationDialog.h" />
<Unit filename="../gui/Dialogs/FirstTimeWizard.cpp" />
<Unit filename="../gui/Dialogs/ImportSettingsDialog.cpp" />
<Unit filename="../gui/Dialogs/LogOptionsDialog.cpp" />
<Unit filename="../gui/Dialogs/LogOptionsDialog.h" />
<Unit filename="../gui/Dialogs/ModalPopups.h" />
<Unit filename="../gui/Dialogs/PickUserModeDialog.cpp" />
<Unit filename="../gui/HostGui.cpp" />
<Unit filename="../gui/IniInterface.cpp" />
<Unit filename="../gui/IniInterface.h" />
<Unit filename="../gui/MainFrame.cpp" />
<Unit filename="../gui/MainFrame.h" />
<Unit filename="../gui/MainMenuClicks.cpp" />
<Unit filename="../gui/Panels/AudioPanel.cpp" />
<Unit filename="../gui/Panels/BiosSelectorPanel.cpp" />
<Unit filename="../gui/Panels/ConfigurationPanels.h" />
<Unit filename="../gui/Panels/CpuPanel.cpp" />
<Unit filename="../gui/Panels/DirPickerPanel.cpp" />
<Unit filename="../gui/Panels/GameFixesPanel.cpp" />
<Unit filename="../gui/Panels/MiscPanelStuff.cpp" />
<Unit filename="../gui/Panels/PathsPanel.cpp" />
<Unit filename="../gui/Panels/PluginSelectorPanel.cpp" />
<Unit filename="../gui/Panels/SpeedhacksPanel.cpp" />
<Unit filename="../gui/Panels/VideoPanel.cpp" />
<Unit filename="../gui/Plugins.cpp" />
<Unit filename="../gui/Resources/AppIcon.h" />
<Unit filename="../gui/Resources/BackgroundLogo.h" />
<Unit filename="../gui/Resources/ConfigIcon_Cpu.h" />
<Unit filename="../gui/Resources/ConfigIcon_Gamefixes.h" />
<Unit filename="../gui/Resources/ConfigIcon_Paths.h" />
<Unit filename="../gui/Resources/ConfigIcon_Plugins.h" />
<Unit filename="../gui/Resources/ConfigIcon_Speedhacks.h" />
<Unit filename="../gui/Resources/ConfigIcon_Video.h" />
<Unit filename="../gui/Resources/EmbeddedImage.h" />
<Unit filename="../gui/Resources/ps2_silver.h" />
<Unit filename="../gui/Saveslots.cpp" />
<Unit filename="../gui/i18n.cpp" />
<Unit filename="../gui/i18n.h" />
<Unit filename="../gui/main.cpp" />
<Unit filename="../gui/wxHelpers.cpp" />
<Unit filename="../gui/wxHelpers.h" />
<Unit filename="../pcsxAbout.bmp" />
<Unit filename="../ps2/BiosTools.cpp" />
<Unit filename="../ps2/BiosTools.h" />
<Unit filename="../ps2/CoreEmuThread.cpp" />
<Unit filename="../ps2/CoreEmuThread.h" />
<Unit filename="../ps2/Iop/IopHwRead.cpp" />
<Unit filename="../ps2/Iop/IopHwWrite.cpp" />
<Unit filename="../ps2/Iop/IopHw_Internal.h" />
<Unit filename="../tinyxml/tinystr.cpp" />
<Unit filename="../tinyxml/tinystr.h" />
<Unit filename="../tinyxml/tinyxml.cpp" />
<Unit filename="../tinyxml/tinyxml.h" />
<Unit filename="../tinyxml/tinyxmlerror.cpp" />
<Unit filename="../tinyxml/tinyxmlparser.cpp" />
<Unit filename="../vtlb.cpp" />
<Unit filename="../vtlb.h" />
<Unit filename="../x86/BaseblockEx.cpp" />
<Unit filename="../x86/BaseblockEx.h" />
<Unit filename="../x86/aR3000A.S" />
<Unit filename="../x86/aVUzerorec.S" />
<Unit filename="../x86/aVif.S" />
<Unit filename="../x86/iCOP0.cpp" />
<Unit filename="../x86/iCOP0.h" />
<Unit filename="../x86/iCOP2.cpp" />
<Unit filename="../x86/iCore.cpp" />
<Unit filename="../x86/iCore.h" />
<Unit filename="../x86/iFPU.cpp" />
<Unit filename="../x86/iFPU.h" />
<Unit filename="../x86/iFPUd.cpp" />
<Unit filename="../x86/iMMI.cpp" />
<Unit filename="../x86/iMMI.h" />
<Unit filename="../x86/iMisc.cpp" />
<Unit filename="../x86/iR3000A.cpp" />
<Unit filename="../x86/iR3000A.h" />
<Unit filename="../x86/iR3000Atables.cpp" />
<Unit filename="../x86/iR5900.h" />
<Unit filename="../x86/iR5900Arit.h" />
<Unit filename="../x86/iR5900AritImm.h" />
<Unit filename="../x86/iR5900Branch.h" />
<Unit filename="../x86/iR5900Jump.h" />
<Unit filename="../x86/iR5900LoadStore.h" />
<Unit filename="../x86/iR5900Misc.cpp" />
<Unit filename="../x86/iR5900Move.h" />
<Unit filename="../x86/iR5900MultDiv.h" />
<Unit filename="../x86/iR5900Shift.h" />
<Unit filename="../x86/iVU0micro.cpp" />
<Unit filename="../x86/iVU1micro.cpp" />
<Unit filename="../x86/iVif.cpp" />
<Unit filename="../x86/ir5900tables.cpp" />
<Unit filename="../x86/ix86-32/aR5900-32.S" />
<Unit filename="../x86/ix86-32/iCore-32.cpp" />
<Unit filename="../x86/ix86-32/iR5900-32.cpp" />
<Unit filename="../x86/ix86-32/iR5900Arit.cpp" />
<Unit filename="../x86/ix86-32/iR5900AritImm.cpp" />
<Unit filename="../x86/ix86-32/iR5900Branch.cpp" />
<Unit filename="../x86/ix86-32/iR5900Jump.cpp" />
<Unit filename="../x86/ix86-32/iR5900LoadStore.cpp" />
<Unit filename="../x86/ix86-32/iR5900Move.cpp" />
<Unit filename="../x86/ix86-32/iR5900MultDiv.cpp" />
<Unit filename="../x86/ix86-32/iR5900Shift.cpp" />
<Unit filename="../x86/ix86-32/iR5900Templates.cpp" />
<Unit filename="../x86/ix86-32/recVTLB.cpp" />
<Unit filename="../x86/microVU.cpp" />
<Unit filename="../x86/microVU.h" />
<Unit filename="../x86/microVU_Alloc.inl" />
<Unit filename="../x86/microVU_Analyze.inl" />
<Unit filename="../x86/microVU_Compile.inl" />
<Unit filename="../x86/microVU_Execute.inl" />
<Unit filename="../x86/microVU_Flags.inl" />
<Unit filename="../x86/microVU_IR.h" />
<Unit filename="../x86/microVU_Log.inl" />
<Unit filename="../x86/microVU_Lower.inl" />
<Unit filename="../x86/microVU_Misc.h" />
<Unit filename="../x86/microVU_Misc.inl" />
<Unit filename="../x86/microVU_Tables.inl" />
<Unit filename="../x86/microVU_Upper.inl" />
<Unit filename="../x86/sVU_Debug.h" />
<Unit filename="../x86/sVU_Lower.cpp" />
<Unit filename="../x86/sVU_Micro.cpp" />
<Unit filename="../x86/sVU_Micro.h" />
<Unit filename="../x86/sVU_Upper.cpp" />
<Unit filename="../x86/sVU_zerorec.cpp" />
<Unit filename="../x86/sVU_zerorec.h" />
<Unit filename="../xmlpatchloader.cpp" />
<Extensions>
<envvars />
<code_completion>
<search_path add="/usr/include/wx-2.8" />
</code_completion>
<lib_finder disable_auto="1" />
<debugger />
</Extensions>
</Project>
</CodeBlocks_project_file>

View File

@ -603,7 +603,7 @@ PluginManager::PluginManager( const wxString (&folders)[PluginId_Count] )
// Bind Optional Functions
// (leave pointer null and do not generate error)
}
// Hack for PAD's stupid parameter passed on Init
PADinit = (_PADinit)m_info[PluginId_PAD].CommonBindings.Init;
m_info[PluginId_PAD].CommonBindings.Init = _hack_PADinit;
@ -613,7 +613,7 @@ PluginManager::~PluginManager()
{
Close();
Shutdown();
// All library unloading done automatically.
}
@ -627,7 +627,7 @@ void PluginManager::BindCommon( PluginsEnum_t pid )
while( current->MethodName != NULL )
{
*target = (VoidMethod*)m_info[pid].Lib.GetSymbol( current->GetMethodName( pid ) );
if( *target == NULL )
*target = current->Fallback;
@ -636,7 +636,7 @@ void PluginManager::BindCommon( PluginsEnum_t pid )
throw Exception::PluginLoadError( pid, m_info[pid].Filename,
wxLt( "Configured plugin is not a PCSX2 plugin, or is for an older unsupported version of PCSX2." ) );
}
target++;
current++;
}
@ -759,7 +759,7 @@ static bool OpenPlugin_FW()
void PluginManager::Open( PluginsEnum_t pid )
{
if( m_info[pid].IsOpened ) return;
// Each Open needs to be called explicitly. >_<
bool result = true;
@ -793,7 +793,7 @@ void PluginManager::Close( PluginsEnum_t pid )
if( pid == PluginId_GS )
{
if( mtgsThread == NULL ) return;
if( !mtgsThread->IsSelf() )
{
// force-close PAD before GS, because the PAD depends on the GS window.
@ -853,7 +853,7 @@ void PluginManager::Shutdown()
// Shutdown plugins in reverse order (probably doesn't matter...
// ... but what the heck, right?)
for( int i=PluginId_Count-1; i>=0; --i )
{
const PluginsEnum_t pid = tbl_PluginInfo[i].id;
@ -916,7 +916,7 @@ PluginManager* PluginManager_Create( const wxString (&folders)[PluginId_Count] )
PluginManager* PluginManager_Create( const wxChar* (&folders)[PluginId_Count] )
{
wxString passins[PluginId_Count];
const PluginInfo* pi = tbl_PluginInfo-1;
while( ++pi, pi->shortname != NULL )
passins[pi->id] = folders[pi->id];

View File

@ -105,7 +105,7 @@ void pxLogConsole::DoLog( wxLogLevel level, const wxChar *szString, time_t t )
sptr ConsoleTestThread::ExecuteTask()
{
static int numtrack = 0;
while( !m_done )
{
// Two lines, both formatted, and varied colors. This makes for a fairly realistic
@ -195,7 +195,7 @@ void ConsoleLogFrame::ColorArray::Cleanup()
{
// The contents of m_table were created with placement new, and must be
// disposed of manually:
for( int i=0; i<8; ++i )
m_table[i].~wxTextAttr();
}
@ -259,7 +259,7 @@ ConsoleLogFrame::ConsoleLogFrame( MainEmuFrame *parent, const wxString& title, A
wxMenu& menuAppear = *new wxMenu();
menuAppear.Append( wxID_ANY, _("Always on Top"),
_("When checked the log window will be visible over other foreground windows."), wxITEM_CHECK );
menuAppear.Append( wxID_ANY, _("Font Size"), &menuFontSizes );
menuAppear.Append( wxID_ANY, _("Font Size"), &menuFontSizes );
pMenuBar->Append(&menuLog, _("&Log"));
pMenuBar->Append(&menuAppear, _("&Appearance"));
@ -290,7 +290,7 @@ ConsoleLogFrame::ConsoleLogFrame( MainEmuFrame *parent, const wxString& title, A
Connect( wxEVT_SetTitleText, wxCommandEventHandler(ConsoleLogFrame::OnSetTitle) );
Connect( wxEVT_DockConsole, wxCommandEventHandler(ConsoleLogFrame::OnDockedMove) );
Connect( wxEVT_SemaphoreWait, wxCommandEventHandler(ConsoleLogFrame::OnSemaphoreWait) );
if( m_threadlogger != NULL )
m_threadlogger->Start();
}
@ -324,7 +324,7 @@ void ConsoleLogFrame::Write( const wxString& text )
#endif
m_TextCtrl.AppendText( text );
// cap at 256k for now...
// fixme - 256k runs well on win32 but appears to be very sluggish on linux. Might
// need platform dependent defaults here. - air
@ -463,9 +463,9 @@ void ConsoleLogFrame::OnFontSize( wxMenuEvent& evt )
case MenuID_FontSize_Large: ptsize = 10; break;
case MenuID_FontSize_Huge: ptsize = 12; break;
}
if( ptsize == m_conf.FontSize ) return;
m_conf.FontSize = ptsize;
m_ColorTable.SetFont( ptsize );
m_TextCtrl.SetDefaultStyle( m_ColorTable[m_curcolor] );
@ -530,13 +530,13 @@ void ConsoleLogFrame::CountMessage()
// Thread Safety note: This function expects to be called from the Main GUI thread
// only. If called from a thread other than Main, it will generate an assertion failure.
//
//
void ConsoleLogFrame::DoMessage()
{
wxASSERT_MSG( wxThread::IsMain(), L"DoMessage must only be called from the main gui thread!" );
int cur = _InterlockedDecrement( &m_msgcounter );
// We need to freeze the control if there are more than 2 pending messages,
// otherwise the redraw of the console will prevent it from ever being able to
// catch up with the rate the queue is being filled, and the whole app could
@ -641,7 +641,7 @@ namespace Console
return false;
}
bool __fastcall WriteLn( const char* fmt )
{
const wxString fmtline( wxString::FromAscii( fmt ) + L"\n" );
@ -652,7 +652,7 @@ namespace Console
// Implementation note: I've duplicated Write+Newline behavior here to avoid polluting
// the message pump with lots of erroneous messages (Newlines can be bound into Write message).
wxCommandEvent evt( wxEVT_LOG_Write );
evt.SetString( fmtline );
evt.SetExtraLong( th_CurrentColor );
@ -700,7 +700,7 @@ static int pxMessageDialog( const wxString& content, const wxString& caption, lo
// 2) Issue the popup with wxSTAY_ON_TOP specified so that the user will see it.
//
// And in either case the emulation should be paused/suspended for the user.
return wxMessageDialog( NULL, content, caption, flags ).ShowModal();
}
@ -766,7 +766,7 @@ public:
void DoTheDialog()
{
int result;
if( m_id == pxEVT_MSGBOX )
result = pxMessageDialog( m_Content, m_Title, m_Flags );
else
@ -799,7 +799,7 @@ namespace Msgbox
instdat.WaitForMe.WaitNoCancel(); // Important! disable cancellation since we're using local stack vars.
return instdat.result;
}
void OnEvent( pxMessageBoxEvent& evt )
{
evt.DoTheDialog();
@ -844,7 +844,7 @@ namespace Msgbox
return wxID_YES == ThreadedMessageBox( text, caption, icon );
}
}
// [TODO] : This should probably be a fancier looking dialog box with the stacktrace
// displayed inside a wxTextCtrl.
static int CallStack( const wxString& errormsg, const wxString& stacktrace, const wxString& prompt, const wxString& caption, int buttons )
@ -862,10 +862,10 @@ namespace Msgbox
return ThreadedMessageBox( text, caption, buttons, pxEVT_CallStackBox );
}
}
int Assertion( const wxString& text, const wxString& stacktrace )
{
return CallStack( text, stacktrace,
return CallStack( text, stacktrace,
L"\nDo you want to stop the program?"
L"\nOr press [Cancel] to suppress further assertions.",
L"PCSX2 Assertion Failure",
@ -877,5 +877,5 @@ namespace Msgbox
{
CallStack( src.FormatDisplayMessage(), src.FormatDiagnosticMessage(), wxEmptyString, L"PCSX2 Unhandled Exception", wxOK );
}
}

View File

@ -22,12 +22,12 @@
#include <wx/stdpaths.h>
using namespace wxHelpers;
using namespace Panels;
Dialogs::PickUserModeDialog::PickUserModeDialog( wxWindow* parent, int id ) :
wxDialogWithHelpers( parent, id, _("PCSX2 First Time configuration"), false )
, m_panel_usersel( new Panels::UsermodeSelectionPanel( *this, 620, false ) )
, m_panel_langsel( new Panels::LanguageSelectionPanel( *this, 620 ) )
, m_panel_usersel( new UsermodeSelectionPanel( *this, 620, false ) )
, m_panel_langsel( new LanguageSelectionPanel( *this, 620 ) )
{
wxBoxSizer& s_main = *new wxBoxSizer( wxVERTICAL );
@ -46,7 +46,7 @@ Dialogs::PickUserModeDialog::PickUserModeDialog( wxWindow* parent, int id ) :
void Dialogs::PickUserModeDialog::OnOk_Click( wxCommandEvent& evt )
{
if( Panels::g_ApplyState.ApplyAll(true) )
if( g_ApplyState.ApplyAll() )
{
Close();
evt.Skip();

View File

@ -70,7 +70,7 @@ namespace Exception
BaseException::InitBaseEx( msg_eng, msg_xlt );
m_Panel = thispanel;
}
Panels::BaseApplicableConfigPanel* GetPanel()
{
return m_Panel;
@ -88,7 +88,7 @@ namespace Panels
PanelApplyList_t PanelList;
// Current book page being initialized. Any apply objects created will use
// this page as their "go here on error" page. (used to take the user to the
// this page as their "go here on error" page. (used to take the user to the
// page with the option that failed apply validation).
int CurOwnerPage;
@ -98,14 +98,14 @@ namespace Panels
// Crappy hack to handle the UseAdminMode option, which can't be part of AppConfig
// because AppConfig depends on this value to initialize itself.
bool UseAdminMode;
StaticApplyState() :
PanelList()
, CurOwnerPage( wxID_NONE )
, ParentBook( NULL )
{
}
void SetCurrentPage( int page )
{
CurOwnerPage = page;
@ -115,7 +115,7 @@ namespace Panels
{
CurOwnerPage = wxID_NONE;
}
void StartBook( wxBookCtrlBase* book );
void StartWizard();
bool ApplyAll( bool saveOnSuccess=true );
@ -132,7 +132,7 @@ namespace Panels
// Thread Safety: None. This class is only safe when used from the GUI thread, as it uses
// static vars and assumes that only one ApplicableConfig system is available to the
// user at any time (ie, a singular modal dialog).
//
//
class BaseApplicableConfigPanel : public wxPanelWithHelpers
{
protected:
@ -145,7 +145,7 @@ namespace Panels
g_ApplyState.PanelList.remove( this );
}
BaseApplicableConfigPanel( wxWindow* parent, int idealWidth ) :
BaseApplicableConfigPanel( wxWindow* parent, int idealWidth ) :
wxPanelWithHelpers( parent, idealWidth )
, m_OwnerPage( g_ApplyState.CurOwnerPage )
, m_OwnerBook( g_ApplyState.ParentBook )
@ -155,7 +155,7 @@ namespace Panels
int GetOwnerPage() const { return m_OwnerPage; }
wxBookCtrlBase* GetOwnerBook() { return m_OwnerBook; }
void SetFocusToMe()
{
if( (m_OwnerBook == NULL) || (m_OwnerPage == wxID_NONE) ) return;
@ -212,7 +212,7 @@ namespace Panels
wxRadioButton* m_Option_RecIOP;
wxRadioButton* m_Option_mVU0;
wxRadioButton* m_Option_mVU1;
wxRadioButton* m_Option_sVU0;
wxRadioButton* m_Option_sVU1;
@ -220,7 +220,7 @@ namespace Panels
CpuPanel( wxWindow& parent, int idealWidth );
void Apply( AppConfig& conf );
};
//////////////////////////////////////////////////////////////////////////////////////////
//
class VideoPanel : public BaseApplicableConfigPanel
@ -231,7 +231,7 @@ namespace Panels
VideoPanel( wxWindow& parent, int idealWidth );
void Apply( AppConfig& conf );
};
//////////////////////////////////////////////////////////////////////////////////////////
//
class SpeedHacksPanel : public BaseApplicableConfigPanel
@ -241,7 +241,7 @@ namespace Panels
wxSlider* m_slider_vustealer;
wxStaticText* m_msg_eecycle;
wxStaticText* m_msg_vustealer;
wxCheckBox* m_check_intc;
wxCheckBox* m_check_b1fc0;
wxCheckBox* m_check_IOPx2;
@ -286,7 +286,7 @@ namespace Panels
void Apply( AppConfig& conf );
void Reset();
wxDirName GetPath() const { return wxDirName( m_pickerCtrl->GetPath() ); }
DirPickerPanel& SetStaticDesc( const wxString& msg );
protected:
@ -294,7 +294,7 @@ namespace Panels
void Explore_Click( wxCommandEvent &event );
void UpdateCheckStatus( bool someNoteworthyBoolean );
};
//////////////////////////////////////////////////////////////////////////////////////////
//
class SettingsDirPickerPanel : public DirPickerPanel
@ -331,7 +331,7 @@ namespace Panels
class BaseSelectorPanel: public BaseApplicableConfigPanel
{
protected:
public:
virtual ~BaseSelectorPanel();
BaseSelectorPanel( wxWindow& parent, int idealWidth );
@ -345,7 +345,7 @@ namespace Panels
virtual void DoRefresh()=0;
virtual bool ValidateEnumerationStatus()=0;
};
//////////////////////////////////////////////////////////////////////////////////////////
//
class BiosSelectorPanel : public BaseSelectorPanel
@ -354,7 +354,7 @@ namespace Panels
wxListBox& m_ComboBox;
DirPickerPanel& m_FolderPicker;
wxArrayString* m_BiosList;
public:
BiosSelectorPanel( wxWindow& parent, int idealWidth );
virtual ~BiosSelectorPanel();
@ -392,7 +392,7 @@ namespace Panels
{
}
};
class EnumThread : public Threading::PersistentThread
{
public:
@ -400,15 +400,18 @@ namespace Panels
protected:
PluginSelectorPanel& m_master;
volatile bool m_cancel;
volatile bool m_cancel;
public:
virtual ~EnumThread();
EnumThread( PluginSelectorPanel& master );
void Cancel();
void DoNextPlugin( int evtidx );
protected:
sptr ExecuteTask();
};
// This panel contains all of the plugin combo boxes. We stick them
// on a panel together so that we can hide/show the whole mess easily.
class ComboBoxPanel : public wxPanelWithHelpers
@ -431,10 +434,10 @@ namespace Panels
wxGauge& m_gauge;
wxStaticText& m_label;
int m_progress;
public:
StatusPanel( wxWindow* parent );
void SetGaugeLength( int len );
void AdvanceProgress( const wxString& msg );
void Reset();
@ -465,7 +468,7 @@ namespace Panels
virtual void DoRefresh();
virtual bool ValidateEnumerationStatus();
int FileCount() const { return m_FileList->Count(); }
const wxString& GetFilename( int i ) const { return (*m_FileList)[i]; }
friend class EnumThread;

View File

@ -26,7 +26,12 @@
#include <wx/dir.h>
// Allows us to force-disable threading for debugging/troubleshooting
static const bool DisableThreading = true;
static const bool DisableThreading =
#ifdef __LINUX__
true; // linux appears to have threading issues with loadlibrary.
#else
false;
#endif
using namespace wxHelpers;
using namespace Threading;
@ -287,12 +292,20 @@ void Panels::PluginSelectorPanel::Apply( AppConfig& conf )
void Panels::PluginSelectorPanel::CancelRefresh()
{
if (!DisableThreading) safe_delete( m_EnumeratorThread );
safe_delete( m_EnumeratorThread );
safe_delete( m_FileList );
}
void Panels::PluginSelectorPanel::DoRefresh()
{
m_ComponentBoxes.Reset();
if( m_FileList == NULL )
{
wxCommandEvent evt;
OnEnumComplete( evt );
return;
}
// Disable all controls until enumeration is complete.
// Show status bar for plugin enumeration.
@ -307,19 +320,13 @@ void Panels::PluginSelectorPanel::DoRefresh()
m_StatusPanel.Show();
// Use a thread to load plugins.
if (!DisableThreading) safe_delete( m_EnumeratorThread );
safe_delete( m_EnumeratorThread );
m_EnumeratorThread = new EnumThread( *this );
if( DisableThreading )
{
m_ComponentBoxes.Reset();
m_EnumeratorThread->ExecuteTask();
}
m_EnumeratorThread->DoNextPlugin( 0 );
else
{
m_EnumeratorThread->Start();
m_ComponentBoxes.Reset();
}
}
bool Panels::PluginSelectorPanel::ValidateEnumerationStatus()
@ -338,6 +345,12 @@ bool Panels::PluginSelectorPanel::ValidateEnumerationStatus()
if( (m_FileList == NULL) || (*pluginlist != *m_FileList) )
validated = false;
if( pluggers == 0 )
{
safe_delete( m_FileList );
return validated;
}
delete m_FileList;
m_FileList = pluginlist.release();
@ -363,7 +376,7 @@ void Panels::PluginSelectorPanel::OnConfigure_Clicked( wxCommandEvent& evt )
void Panels::PluginSelectorPanel::OnEnumComplete( wxCommandEvent& evt )
{
if (!DisableThreading) safe_delete( m_EnumeratorThread );
safe_delete( m_EnumeratorThread );
// fixme: Default plugins should be picked based on the timestamp of the DLL or something?
// (for now we just force it to selection zero if nothing's selected)
@ -388,7 +401,20 @@ void Panels::PluginSelectorPanel::OnProgress( wxCommandEvent& evt )
{
if( m_FileList == NULL ) return;
size_t evtidx = evt.GetExtraLong();
const size_t evtidx = evt.GetExtraLong();
if( DisableThreading )
{
const int nextidx = evtidx+1;
if( nextidx == m_FileList->Count() )
{
wxCommandEvent done( wxEVT_EnumerationFinished );
GetEventHandler()->AddPendingEvent( done );
}
else
m_EnumeratorThread->DoNextPlugin( nextidx );
}
m_StatusPanel.AdvanceProgress( (evtidx < m_FileList->Count()-1) ?
(*m_FileList)[evtidx + 1] : wxString(_("Completing tasks..."))
);
@ -449,6 +475,39 @@ void Panels::PluginSelectorPanel::EnumThread::Cancel()
PersistentThread::Cancel();
}
void Panels::PluginSelectorPanel::EnumThread::DoNextPlugin( int curidx )
{
DbgCon::WriteLn( L"Enumerating Plugin: " + m_master.GetFilename( curidx ) );
try
{
EnumeratedPluginInfo& result( Results[curidx] );
result.TypeMask = 0;
PluginEnumerator penum( m_master.GetFilename( curidx ) );
result.Name = penum.GetName();
for( int pidx=0; pidx<PluginId_Count; ++pidx )
{
const PluginsEnum_t pid = (PluginsEnum_t)pidx;
result.TypeMask |= tbl_PluginInfo[pid].typemask;
if( penum.CheckVersion( pid ) )
{
result.PassedTest |= tbl_PluginInfo[pid].typemask;
penum.GetVersionString( result.Version[pid], pidx );
}
}
}
catch( Exception::BadStream& ex )
{
Console::Status( ex.FormatDiagnosticMessage() );
}
wxCommandEvent yay( wxEVT_EnumeratedNext );
yay.SetExtraLong( curidx );
m_master.GetEventHandler()->AddPendingEvent( yay );
}
sptr Panels::PluginSelectorPanel::EnumThread::ExecuteTask()
{
DevCon::Status( "Plugin Enumeration Thread started..." );
@ -458,37 +517,8 @@ sptr Panels::PluginSelectorPanel::EnumThread::ExecuteTask()
for( int curidx=0; curidx < m_master.FileCount(); ++curidx )
{
if( m_cancel ) return 0;
DbgCon::WriteLn( L"Enumerating Plugin: " + m_master.GetFilename( curidx ) );
try
{
EnumeratedPluginInfo& result( Results[curidx] );
result.TypeMask = 0;
PluginEnumerator penum( m_master.GetFilename( curidx ) );
result.Name = penum.GetName();
for( int pidx=0; pidx<PluginId_Count; ++pidx )
{
const PluginsEnum_t pid = (PluginsEnum_t)pidx;
result.TypeMask |= tbl_PluginInfo[pid].typemask;
if( penum.CheckVersion( pid ) )
{
result.PassedTest |= tbl_PluginInfo[pid].typemask;
penum.GetVersionString( result.Version[pid], pidx );
}
}
}
catch( Exception::BadStream& ex )
{
Console::Status( ex.FormatDiagnosticMessage() );
}
DoNextPlugin( curidx );
pthread_testcancel();
wxCommandEvent yay( wxEVT_EnumeratedNext );
yay.SetExtraLong( curidx );
m_master.GetEventHandler()->AddPendingEvent( yay );
}
wxCommandEvent done( wxEVT_EnumerationFinished );