1. Removed Exclusive-mode checkbox from GS-window-panel (wasn't working anyway).

2. Removed vsync from presets.

details:
1. the exclusive-full-screen checkbox isn't connected to anything, AppConfig doesn't store this value, and the (GSsetExclusive) API is never used from PCSX2 (but seem to be supported by GSdx).
2. Now both vsync and auto-vsync are excluded from the presets (both never grayed out and never affected by the presets)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4401 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
avihal@gmail.com 2011-03-07 19:41:40 +00:00
parent 5bf6aaf339
commit 209112ba3d
3 changed files with 22 additions and 13 deletions

View File

@ -809,18 +809,16 @@ bool AppConfig::IsOkApplyPreset(int n)
AppConfig default_AppConfig;
Pcsx2Config default_Pcsx2Config;
// NOTE: Because the system currently only supports passing of an entire AppConfig to the GUI panels/menus to apply/reflect,
// the GUI entities should be aware of the settings which the presets control, such that when presets are used:
// 1. The panels/entities should prevent manual modifications (by graying out) of settings which the presets control.
// 2. The panels should not apply values which the presets don't control if the value is initiated by a preset.
// Currently controlled by the presets:
// - AppConfig: Framerate, EnableSpeedHacks, EnableGameFixes.
// - EmuOptions: Cpu, Gamefixes, SpeedHacks, EnablePatches, GS (except FrameLimitEnable).
// - EmuOptions: Cpu, Gamefixes, SpeedHacks, EnablePatches, GS (except for FrameLimitEnable, VsyncEnable and ManagedVsync).
//
// This essentially currently covers all the options on all the panels except for framelimiter which isn't
// controlled by the presets, and almost the entire GSWindow panel which also isn't controlled by presets
// (however, vsync IS controlled by the presets).
// controlled by the presets, and the entire GSWindow panel which also isn't controlled by presets
//
// So, if changing the scope of the presets (making them affect more or less values), the relevant GUI entities
// should me modified to support it.
@ -834,7 +832,10 @@ bool AppConfig::IsOkApplyPreset(int n)
EmuOptions.EnablePatches = true;
EmuOptions.GS = default_Pcsx2Config.GS;
EmuOptions.GS.FrameLimitEnable = original_GS.FrameLimitEnable; //although GS is reset, frameLimiter isn't touched.
EmuOptions.GS.FrameLimitEnable = original_GS.FrameLimitEnable; //Frame limiter, vsync and ,managed-vsync are not modified by presets
EmuOptions.GS.VsyncEnable = original_GS.VsyncEnable;
EmuOptions.GS.ManagedVsync = original_GS.ManagedVsync;
EmuOptions.Cpu = default_Pcsx2Config.Cpu;
EmuOptions.Gamefixes = default_Pcsx2Config.Gamefixes;
EmuOptions.Speedhacks = default_Pcsx2Config.Speedhacks;

View File

@ -269,7 +269,16 @@ namespace Panels
pxCheckBox* m_check_VsyncEnable;
pxCheckBox* m_check_ManagedVsync;
pxCheckBox* m_check_Fullscreen;
pxCheckBox* m_check_ExclusiveFS;
//Exclusive mode is currently not used (true for svn r4399).
//PCSX2 has partial infrastructure for it:
// - The plugin APIs have GSsetExclusive.
// - GSdx seem to support it (it supports the API and has implementation), but I don't know if it ever got called.
// - BUT, the configuration (AppConfig, and specifically GSWindowOptions) do NOT seem to have a place to store this value,
// and PCSX2's code doesn't seem to use this API anywhere. So, no exclusive mode for now.
// - avih
//pxCheckBox* m_check_ExclusiveFS;
pxCheckBox* m_check_HideMouse;
pxCheckBox* m_check_DclickFullscreen;

View File

@ -48,7 +48,7 @@ Panels::GSWindowSettingsPanel::GSWindowSettingsPanel( wxWindow* parent )
m_check_VsyncEnable = new pxCheckBox( this, _("Wait for Vsync on refresh") );
m_check_ManagedVsync = new pxCheckBox( this, _("Dynamically toggle Vsync depending on frame rate (read tooltip!)") );
m_check_DclickFullscreen = new pxCheckBox( this, _("Double-click toggles fullscreen mode") );
m_check_ExclusiveFS = new pxCheckBox( this, _("Use exclusive fullscreen mode (if available)") );
//m_check_ExclusiveFS = new pxCheckBox( this, _("Use exclusive fullscreen mode (if available)") );
m_check_VsyncEnable->SetToolTip( pxEt( "!ContextTip:Window:Vsync",
L"Vsync eliminates screen tearing but typically has a big performance hit. "
@ -74,11 +74,12 @@ Panels::GSWindowSettingsPanel::GSWindowSettingsPanel( wxWindow* parent )
L"You can still toggle fullscreen display at any time using alt-enter."
) );
/*
m_check_ExclusiveFS->SetToolTip( pxEt( "!ContextTip:Window:FullscreenExclusive",
L"Fullscreen Exclusive Mode may look better on older CRTs and might be a little faster on older video cards, "
L"but typically can lead to memory leaks or random crashes when entering/leaving fullscreen mode."
) );
*/
m_check_CloseGS->SetToolTip( pxEt( "!ContextTip:Window:HideGS",
L"Completely closes the often large and bulky GS window when pressing "
L"ESC or suspending the emulator."
@ -109,7 +110,8 @@ Panels::GSWindowSettingsPanel::GSWindowSettingsPanel( wxWindow* parent )
*this += m_check_Fullscreen;
*this += m_check_DclickFullscreen;;
*this += m_check_ExclusiveFS;
//*this += m_check_ExclusiveFS;
*this += new wxStaticLine( this ) | StdExpand();
*this += m_check_VsyncEnable;
@ -131,7 +133,7 @@ void Panels::GSWindowSettingsPanel::ApplyConfigToGui( AppConfig& configToApply,
{
const AppConfig::GSWindowOptions& conf( configToApply.GSWindow );
if( !(flags & AppConfig::APPLY_FLAG_FROM_PRESET) ) //Presets don't control these: only change if config doesn't come from preset.
if( !(flags & AppConfig::APPLY_FLAG_FROM_PRESET) ) //Presets don't control any value at this config panel
{
m_check_CloseGS ->SetValue( conf.CloseOnEsc );
m_check_Fullscreen ->SetValue( conf.DefaultToFullscreen );
@ -148,9 +150,6 @@ void Panels::GSWindowSettingsPanel::ApplyConfigToGui( AppConfig& configToApply,
m_text_WindowWidth ->ChangeValue( wxsFormat( L"%d", conf.WindowSize.GetWidth() ) );
m_text_WindowHeight ->ChangeValue( wxsFormat( L"%d", conf.WindowSize.GetHeight() ) );
}
m_check_VsyncEnable->Enable(!configToApply.EnablePresets);
m_check_ManagedVsync->Enable(!configToApply.EnablePresets);
}
void Panels::GSWindowSettingsPanel::Apply()