From 15d74b7461850b8debc199197cd8a70153245d00 Mon Sep 17 00:00:00 2001 From: Matt Callaghan Date: Mon, 8 Nov 2010 22:17:51 +0000 Subject: [PATCH] General cleanup to 3D Vision hack, fits in more with the Dolphin coding style now. Also, fixed the crash that would occur when using a mouse button with 3D Vision enabled. Not sure how to fix Dolphins hotkeys when 3D Vision is enabled (I do know a way, but it's messy and I don't want 3D Vision messing with Dolphin's cleanliness). git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6362 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/VideoCommon/Src/VideoConfig.cpp | 2 + Source/Core/VideoCommon/Src/VideoConfig.h | 1 + .../Plugin_VideoDX9/Plugin_VideoDX9.vcproj | 8 --- .../Plugins/Plugin_VideoDX9/Src/D3DBase.cpp | 3 +- .../Plugin_VideoDX9/Src/DlgSettings.cpp | 6 +-- .../Plugins/Plugin_VideoDX9/Src/EmuWindow.cpp | 12 +++-- Source/Plugins/Plugin_VideoDX9/Src/Render.cpp | 4 +- .../Plugin_VideoDX9/Src/Render3dVision.cpp | 49 ------------------ .../Plugin_VideoDX9/Src/Render3dVision.h | 51 ------------------- Source/Plugins/Plugin_VideoDX9/Src/main.cpp | 4 -- 10 files changed, 16 insertions(+), 124 deletions(-) delete mode 100644 Source/Plugins/Plugin_VideoDX9/Src/Render3dVision.cpp delete mode 100644 Source/Plugins/Plugin_VideoDX9/Src/Render3dVision.h diff --git a/Source/Core/VideoCommon/Src/VideoConfig.cpp b/Source/Core/VideoCommon/Src/VideoConfig.cpp index 86c83b2649..ec0df2e4d5 100644 --- a/Source/Core/VideoCommon/Src/VideoConfig.cpp +++ b/Source/Core/VideoCommon/Src/VideoConfig.cpp @@ -90,6 +90,7 @@ void VideoConfig::Load(const char *ini_file) iniFile.Get("Enhancements", "ForceFiltering", &bForceFiltering, 0); iniFile.Get("Enhancements", "MaxAnisotropy", &iMaxAnisotropy, 1); // NOTE - this is x in (1 << x) iniFile.Get("Enhancements", "PostProcessingShader", &sPostProcessingShader, ""); + iniFile.Get("Enhancements", "Enable3dVision", &b3DVision, false); iniFile.Get("Hacks", "EFBAccessEnable", &bEFBAccessEnable, true); iniFile.Get("Hacks", "DlistCachingEnable", &bDlistCachingEnable,false); @@ -203,6 +204,7 @@ void VideoConfig::Save(const char *ini_file) iniFile.Set("Enhancements", "ForceFiltering", bForceFiltering); iniFile.Set("Enhancements", "MaxAnisotropy", iMaxAnisotropy); iniFile.Set("Enhancements", "PostProcessingShader", sPostProcessingShader); + iniFile.Set("Enhancements", "Enable3dVision", b3DVision); iniFile.Set("Hacks", "EFBAccessEnable", bEFBAccessEnable); iniFile.Set("Hacks", "DlistCachingEnable", bDlistCachingEnable); diff --git a/Source/Core/VideoCommon/Src/VideoConfig.h b/Source/Core/VideoCommon/Src/VideoConfig.h index e4543ea7b6..2eaf35ee30 100644 --- a/Source/Core/VideoCommon/Src/VideoConfig.h +++ b/Source/Core/VideoCommon/Src/VideoConfig.h @@ -111,6 +111,7 @@ struct VideoConfig bool bAnaglyphStereo; int iAnaglyphStereoSeparation; int iAnaglyphFocalAngle; + bool b3DVision; // Hacks bool bEFBAccessEnable; diff --git a/Source/Plugins/Plugin_VideoDX9/Plugin_VideoDX9.vcproj b/Source/Plugins/Plugin_VideoDX9/Plugin_VideoDX9.vcproj index e70054f62a..7611069458 100644 --- a/Source/Plugins/Plugin_VideoDX9/Plugin_VideoDX9.vcproj +++ b/Source/Plugins/Plugin_VideoDX9/Plugin_VideoDX9.vcproj @@ -710,14 +710,6 @@ RelativePath=".\Src\Render.cpp" > - - - - diff --git a/Source/Plugins/Plugin_VideoDX9/Src/D3DBase.cpp b/Source/Plugins/Plugin_VideoDX9/Src/D3DBase.cpp index 2bba1b3a94..23d1859568 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/D3DBase.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/D3DBase.cpp @@ -20,7 +20,6 @@ #include "Render.h" #include "XFStructs.h" #include "StringUtil.h" -#include "Render3dVision.h" // D3DX HINSTANCE hD3DXDll = NULL; @@ -140,7 +139,7 @@ void InitPP(int adapter, int f, int aa_mode, D3DPRESENT_PARAMETERS *pp) yres = pp->BackBufferHeight = client.bottom - client.top; pp->SwapEffect = D3DSWAPEFFECT_DISCARD; pp->PresentationInterval = g_Config.bVSync ? D3DPRESENT_INTERVAL_DEFAULT : D3DPRESENT_INTERVAL_IMMEDIATE; - pp->Windowed = !Render3dVision::isEnable3dVision(); + pp->Windowed = !g_Config.b3DVision; } void Enumerate() diff --git a/Source/Plugins/Plugin_VideoDX9/Src/DlgSettings.cpp b/Source/Plugins/Plugin_VideoDX9/Src/DlgSettings.cpp index 99c06cb439..98f5454510 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/DlgSettings.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/DlgSettings.cpp @@ -31,7 +31,6 @@ #include "VideoConfig.h" #include "TextureCache.h" -#include "Render3dVision.h" BEGIN_EVENT_TABLE(GFXConfigDialogDX,wxDialog) @@ -154,7 +153,7 @@ void GFXConfigDialogDX::InitializeGUIValues() m_EnableXFB->SetValue(g_Config.bUseXFB); m_EnableRealXFB->SetValue(g_Config.bUseRealXFB); m_UseNativeMips->SetValue(g_Config.bUseNativeMips); - m_Enable3dVision->SetValue(Render3dVision::isEnable3dVision()); + m_Enable3dVision->SetValue(g_Config.b3DVision); m_DumpTextures->SetValue(g_Config.bDumpTextures); m_DumpFrames->SetValue(g_Config.bDumpFrames); @@ -554,7 +553,7 @@ void GFXConfigDialogDX::AdvancedSettingsChanged(wxCommandEvent& event) g_Config.bTexFmtOverlayCenter = m_TexfmtCenter->IsChecked(); break; case ID_ENABLE_3DVISION: - Render3dVision::setEnable3dVision(m_Enable3dVision->IsChecked()); + g_Config.b3DVision = m_Enable3dVision->IsChecked(); break; } UpdateGUI(); @@ -564,7 +563,6 @@ void GFXConfigDialogDX::CloseWindow() { // Save the config to INI g_Config.Save((std::string(File::GetUserPath(D_CONFIG_IDX)) + "gfx_dx9.ini").c_str()); - Render3dVision::saveConfig((std::string(File::GetUserPath(D_CONFIG_IDX)) + "gfx_dx9.ini").c_str()); EndModal(1); } diff --git a/Source/Plugins/Plugin_VideoDX9/Src/EmuWindow.cpp b/Source/Plugins/Plugin_VideoDX9/Src/EmuWindow.cpp index 2a72ecaeb6..44150410d6 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/EmuWindow.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/EmuWindow.cpp @@ -22,7 +22,6 @@ #include "EmuWindow.h" #include "D3DBase.h" #include "Fifo.h" -#include "Render3dVision.h" int OSDChoice = 0 , OSDTime = 0, OSDInternalW = 0, OSDInternalH = 0; @@ -92,9 +91,16 @@ LRESULT CALLBACK WndProc( HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam ) s_sizing = false; break; - /* Post thes mouse events to the main window, it's nessesary because in difference to the + /* Post the mouse events to the main window, it's nessesary because in difference to the keyboard inputs these events only appear here, not in the parent window or any other WndProc()*/ case WM_LBUTTONDOWN: + if(g_Config.b3DVision) + { + // This basically throws away the left button down input when b3DVision is activated so WX + // can't get access to it, stopping focus pulling on mouse click. + // (Input plugins use a different system so it doesn't cause any weirdness) + break; + } case WM_LBUTTONUP: case WM_LBUTTONDBLCLK: PostMessage(GetParentWnd(), iMsg, wParam, lParam); @@ -198,7 +204,7 @@ HWND OpenWindow(HWND parent, HINSTANCE hInstance, int width, int height, const T m_hParent = parent; - m_hWnd = CreateWindow(m_szClassName, title, Render3dVision::isEnable3dVision() ? WS_EX_TOPMOST | WS_POPUP : WS_CHILD, + m_hWnd = CreateWindow(m_szClassName, title, g_ActiveConfig.b3DVision ? WS_EX_TOPMOST | WS_POPUP : WS_CHILD, 0, 0, width, height, m_hParent, NULL, hInstance, NULL); return m_hWnd; diff --git a/Source/Plugins/Plugin_VideoDX9/Src/Render.cpp b/Source/Plugins/Plugin_VideoDX9/Src/Render.cpp index aec9de36bd..b95ff6ff09 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/Render.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/Render.cpp @@ -52,8 +52,6 @@ #include "debugger/debugger.h" -#include "Render3dVision.h" - static int s_fps = 0; static bool WindowResized; @@ -1321,7 +1319,7 @@ void Renderer::Swap(u32 xfbAddr, FieldType field, u32 fbWidth, u32 fbHeight,cons } else { - if(Render3dVision::isEnable3dVision()) + if(g_ActiveConfig.b3DVision) { // This works, yet the version in the else doesn't. No idea why. xScale = (float)s_backbuffer_width / (float)s_XFB_width; diff --git a/Source/Plugins/Plugin_VideoDX9/Src/Render3dVision.cpp b/Source/Plugins/Plugin_VideoDX9/Src/Render3dVision.cpp deleted file mode 100644 index 92f9c3a26a..0000000000 --- a/Source/Plugins/Plugin_VideoDX9/Src/Render3dVision.cpp +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (C) 2003 Dolphin Project. - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, version 2.0. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License 2.0 for more details. - -// A copy of the GPL 2.0 should have been included with the program. -// If not, see http://www.gnu.org/licenses/ - -// Official SVN repository and contact information can be found at -// http://code.google.com/p/dolphin-emu/ - -#include "Render3dVision.h" -#include "IniFile.h" - -bool Render3dVision::enable3dVision = false; - -bool Render3dVision::isEnable3dVision() -{ - return enable3dVision; -} - -void Render3dVision::setEnable3dVision(bool value) -{ - enable3dVision = value; -} - -void Render3dVision::loadConfig(const char* filename) -{ - IniFile iniFile; - iniFile.Load(filename); - - iniFile.Get("Settings", "Enable3dVision", &enable3dVision, false); -} - -void Render3dVision::saveConfig(const char* filename) -{ - IniFile iniFile; - iniFile.Load(filename); - - iniFile.Set("Settings", "Enable3dVision", enable3dVision); - - iniFile.Save(filename); -} diff --git a/Source/Plugins/Plugin_VideoDX9/Src/Render3dVision.h b/Source/Plugins/Plugin_VideoDX9/Src/Render3dVision.h deleted file mode 100644 index 6e279f410b..0000000000 --- a/Source/Plugins/Plugin_VideoDX9/Src/Render3dVision.h +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (C) 2003 Dolphin Project. - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, version 2.0. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License 2.0 for more details. - -// A copy of the GPL 2.0 should have been included with the program. -// If not, see http://www.gnu.org/licenses/ - -// Official SVN repository and contact information can be found at -// http://code.google.com/p/dolphin-emu/ - -#ifndef _RENDER3DVISION_H -#define _RENDER3DVISION_H - -#include "CommonTypes.h" -#include "VideoCommon.h" - -//3d vision pipline functions and variables. -//This class provides services needed to run 3d vision. -//It could be replaced by putting the config settings in the -//VideoSettings class, but this way the dx9 plugin can stay portable -//with no reliance on Core being updated. This can be modified if -//these changes are added to the trunk. -class Render3dVision -{ -private: - static bool enable3dVision; - -public: - //Check to see if 3d vision compatable rendering should be used. - static bool isEnable3dVision(); - - //Set 3d vision enabled or disabled, used by the config dialog. - static void setEnable3dVision(bool value); - - //Lod the specified config file and get enable3dVision out of it. - static void loadConfig(const char* filename); - - //Save the enable3dVision variable to the specified config file. - static void saveConfig(const char* filename); - - static void Swap(u32 xfbAddr, FieldType field, u32 fbWidth, u32 fbHeight,const EFBRectangle& rc); -}; - -#endif diff --git a/Source/Plugins/Plugin_VideoDX9/Src/main.cpp b/Source/Plugins/Plugin_VideoDX9/Src/main.cpp index aceb6b674e..bee4f86c7e 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/main.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/main.cpp @@ -53,7 +53,6 @@ GFXConfigDialogDX *m_ConfigFrame = NULL; #include "XFBConvert.h" #include "render.h" #include "DLCache.h" -#include "Render3dVision.h" HINSTANCE g_hInstance = NULL; SVideoInitialize g_VideoInitialize; @@ -181,7 +180,6 @@ void DllConfig(void *_hParent) g_Config.Load((std::string(File::GetUserPath(D_CONFIG_IDX)) + "gfx_dx9.ini").c_str()); g_Config.GameIniLoad(globals->game_ini); UpdateActiveConfig(); - Render3dVision::loadConfig((std::string(File::GetUserPath(D_CONFIG_IDX)) + "gfx_dx9.ini").c_str()); #if defined(HAVE_WX) && HAVE_WX m_ConfigFrame = new GFXConfigDialogDX((wxWindow *)_hParent); @@ -206,8 +204,6 @@ void Initialize(void *init) UpdateProjectionHack(g_Config.iPhackvalue); // DX9 projection hack could be disabled by commenting out this line UpdateActiveConfig(); - Render3dVision::loadConfig((std::string(File::GetUserPath(D_CONFIG_IDX)) + "gfx_dx9.ini").c_str()); - g_VideoInitialize.pWindowHandle = (void*)EmuWindow::Create((HWND)g_VideoInitialize.pWindowHandle, g_hInstance, _T("Loading - Please wait.")); if (g_VideoInitialize.pWindowHandle == NULL) {