From c39e3c17e199ed8f421ed62a9457ad53ba5caebf Mon Sep 17 00:00:00 2001 From: Glenn Rice Date: Wed, 23 Mar 2011 02:06:40 +0000 Subject: [PATCH] Fix a few issues with the size of the logger pane. Also some other general clean up issues. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7401 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/DolphinWX/Src/Frame.cpp | 33 ++++++------ Source/Core/DolphinWX/Src/Frame.h | 1 + Source/Core/DolphinWX/Src/FrameAui.cpp | 52 ++++++++++++++----- Source/Core/DolphinWX/Src/LogWindow.cpp | 13 ----- Source/Core/DolphinWX/Src/LogWindow.h | 1 - .../Src/MemoryCards/WiiSaveCrypted.cpp | 2 +- Source/Core/VideoCommon/Src/VideoConfig.cpp | 8 +-- Source/Plugins/Plugin_VideoOGL/Src/Render.cpp | 5 +- 8 files changed, 66 insertions(+), 49 deletions(-) diff --git a/Source/Core/DolphinWX/Src/Frame.cpp b/Source/Core/DolphinWX/Src/Frame.cpp index 0b293732a0..5713b072f7 100644 --- a/Source/Core/DolphinWX/Src/Frame.cpp +++ b/Source/Core/DolphinWX/Src/Frame.cpp @@ -385,23 +385,14 @@ CFrame::CFrame(wxFrame* parent, // Could just check for wxWidgets version if it becomes a problem. m_Mgr = new wxAuiManager(this, wxAUI_MGR_DEFAULT | wxAUI_MGR_LIVE_RESIZE); - if (g_pCodeWindow) - { - m_Mgr->AddPane(m_Panel, wxAuiPaneInfo() - .Name(_T("Pane 0")).Caption(_T("Pane 0")) - .CenterPane().PaneBorder(false).Show()); - AuiFullscreen = m_Mgr->SavePerspective(); - } - else - { - m_Mgr->AddPane(m_Panel, wxAuiPaneInfo() - .Name(_T("Pane 0")).Caption(_T("Pane 0")).PaneBorder(false) - .CaptionVisible(false).Layer(0).Center().Show()); + m_Mgr->AddPane(m_Panel, wxAuiPaneInfo() + .Name(_T("Pane 0")).Caption(_T("Pane 0")).PaneBorder(false) + .CaptionVisible(false).Layer(0).Center().Show()); + if (!g_pCodeWindow) m_Mgr->AddPane(CreateEmptyNotebook(), wxAuiPaneInfo() .Name(_T("Pane 1")).Caption(_("Logging")).CaptionVisible(true) .Layer(0).FloatingSize(wxSize(600, 350)).CloseButton(true).Hide()); - AuiFullscreen = m_Mgr->SavePerspective(); - } + AuiFullscreen = m_Mgr->SavePerspective(); // Create toolbar RecreateToolbar(); @@ -535,7 +526,12 @@ void CFrame::OnClose(wxCloseEvent& event) // Save GUI settings if (g_pCodeWindow) SaveIniPerspectives(); // Close the log window now so that its settings are saved - else m_LogWindow->Close(); + else + { + m_LogWindow->Close(); + m_LogWindow = NULL; + } + // Uninit m_Mgr->UnInit(); @@ -582,6 +578,13 @@ void CFrame::OnResize(wxSizeEvent& event) SConfig::GetInstance().m_LocalCoreStartupParameter.iWidth = GetSize().GetWidth(); SConfig::GetInstance().m_LocalCoreStartupParameter.iHeight = GetSize().GetHeight(); } + + // Make sure the logger pane is a sane size + if (!g_pCodeWindow && m_LogWindow && m_Mgr->GetPane(_T("Pane 1")).IsShown() && + !m_Mgr->GetPane(_T("Pane 1")).IsFloating() && + (m_LogWindow->x > GetClientRect().GetWidth() || + m_LogWindow->y > GetClientRect().GetHeight())) + ShowResizePane(); } // Host messages diff --git a/Source/Core/DolphinWX/Src/Frame.h b/Source/Core/DolphinWX/Src/Frame.h index 76d4685747..149264460e 100644 --- a/Source/Core/DolphinWX/Src/Frame.h +++ b/Source/Core/DolphinWX/Src/Frame.h @@ -238,6 +238,7 @@ private: int GetNotebookAffiliation(wxWindowID Id); void ClosePages(); void CloseAllNotebooks(); + void ShowResizePane(); void TogglePane(); void SetPaneSize(); void ResetToolbarStyle(); diff --git a/Source/Core/DolphinWX/Src/FrameAui.cpp b/Source/Core/DolphinWX/Src/FrameAui.cpp index 571154a822..b27785c39b 100644 --- a/Source/Core/DolphinWX/Src/FrameAui.cpp +++ b/Source/Core/DolphinWX/Src/FrameAui.cpp @@ -29,6 +29,14 @@ void CFrame::OnManagerResize(wxAuiManagerEvent& event) { + if (!g_pCodeWindow && m_LogWindow && + m_Mgr->GetPane(_T("Pane 1")).IsShown() && + !m_Mgr->GetPane(_T("Pane 1")).IsFloating()) + { + m_LogWindow->x = m_Mgr->GetPane(_T("Pane 1")).rect.GetWidth(); + m_LogWindow->y = m_Mgr->GetPane(_T("Pane 1")).rect.GetHeight(); + m_LogWindow->winpos = m_Mgr->GetPane(_T("Pane 1")).dock_direction; + } event.Skip(); ResizeConsole(); } @@ -76,6 +84,9 @@ void CFrame::OnPaneClose(wxAuiManagerEvent& event) void CFrame::ToggleLogWindow(bool bShow) { + if (!m_LogWindow) + return; + GetMenuBar()->FindItem(IDM_LOGWINDOW)->Check(bShow); if (bShow) @@ -378,6 +389,32 @@ void CFrame::OnAllowNotebookDnD(wxAuiNotebookEvent& event) ResizeConsole(); } +void CFrame::ShowResizePane() +{ + if (!m_LogWindow) return; + + // Make sure the size is sane + if (m_LogWindow->x > GetClientRect().GetWidth()) + m_LogWindow->x = GetClientRect().GetWidth() / 2; + if (m_LogWindow->y > GetClientRect().GetHeight()) + m_LogWindow->y = GetClientRect().GetHeight() / 2; + + wxAuiPaneInfo &pane = m_Mgr->GetPane(wxT("Pane 1")); + + // Hide first otherwise a resize doesn't work + pane.Hide(); + m_Mgr->Update(); + + pane.BestSize(m_LogWindow->x, m_LogWindow->y) + .MinSize(m_LogWindow->x, m_LogWindow->y) + .Direction(m_LogWindow->winpos).Show(); + m_Mgr->Update(); + + // Reset the minimum size of the pane + pane.MinSize(-1, -1); + m_Mgr->Update(); +} + void CFrame::TogglePane() { // Get the first notebook @@ -391,22 +428,11 @@ void CFrame::TogglePane() { if (NB->GetPageCount() == 0) { - m_LogWindow->x = m_Mgr->GetPane(_T("Pane 1")).rect.GetWidth(); - m_LogWindow->y = m_Mgr->GetPane(_T("Pane 1")).rect.GetHeight(); - m_LogWindow->winpos = m_Mgr->GetPane(_T("Pane 1")).dock_direction; m_Mgr->GetPane(_T("Pane 1")).Hide(); + m_Mgr->Update(); } else - { - m_Mgr->GetPane(_T("Pane 1")).BestSize(m_LogWindow->x, m_LogWindow->y) - .MinSize(m_LogWindow->x, m_LogWindow->y) - .Direction(m_LogWindow->winpos).Show(); - m_Mgr->Update(); - - // Reset the minimum size of the pane - m_Mgr->GetPane(_T("Pane 1")).MinSize(-1, -1); - } - m_Mgr->Update(); + ShowResizePane(); } } diff --git a/Source/Core/DolphinWX/Src/LogWindow.cpp b/Source/Core/DolphinWX/Src/LogWindow.cpp index ad1d9c87a2..0097d7237e 100644 --- a/Source/Core/DolphinWX/Src/LogWindow.cpp +++ b/Source/Core/DolphinWX/Src/LogWindow.cpp @@ -33,7 +33,6 @@ BEGIN_EVENT_TABLE(CLogWindow, wxPanel) EVT_CHOICE(IDM_FONT, CLogWindow::OnFontChange) EVT_CHECKBOX(IDM_WRAPLINE, CLogWindow::OnWrapLineCheck) EVT_TIMER(IDTM_UPDATELOG, CLogWindow::OnLogTimer) - EVT_SIZE(CLogWindow::OnSize) END_EVENT_TABLE() CLogWindow::CLogWindow(CFrame *parent, wxWindowID id, const wxPoint& pos, @@ -172,18 +171,6 @@ void CLogWindow::OnClose(wxCloseEvent& event) event.Skip(); } -void CLogWindow::OnSize(wxSizeEvent& event) -{ - if (!Parent->g_pCodeWindow && - Parent->m_Mgr->GetPane(wxT("Pane 1")).IsShown()) - { - x = Parent->m_Mgr->GetPane(wxT("Pane 1")).rect.GetWidth(); - y = Parent->m_Mgr->GetPane(wxT("Pane 1")).rect.GetHeight(); - winpos = Parent->m_Mgr->GetPane(wxT("Pane 1")).dock_direction; - } - event.Skip(); -} - void CLogWindow::SaveSettings() { IniFile ini; diff --git a/Source/Core/DolphinWX/Src/LogWindow.h b/Source/Core/DolphinWX/Src/LogWindow.h index e98cf753c8..ba5724cb0c 100644 --- a/Source/Core/DolphinWX/Src/LogWindow.h +++ b/Source/Core/DolphinWX/Src/LogWindow.h @@ -83,7 +83,6 @@ private: void PopulateBottom(); void UnPopulateBottom(); void OnClose(wxCloseEvent& event); - void OnSize(wxSizeEvent& event); void OnSubmit(wxCommandEvent& event); void OnFontChange(wxCommandEvent& event); void OnWrapLineCheck(wxCommandEvent& event); diff --git a/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp b/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp index 6d4c5ac97e..a6883ee9a2 100644 --- a/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp +++ b/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp @@ -513,7 +513,7 @@ bool CWiiSaveCrypted::getPaths(bool forExport) return false; } if (strlen(pathData_bin) == 0) - strcpy(pathData_bin, ".");// If no path was passed, use current dir + strcpy(pathData_bin, "."); // If no path was passed, use current dir sprintf(pathData_bin, "%s/private/wii/title/%s/data.bin", pathData_bin, _saveGameString); File::CreateFullPath(pathData_bin); } diff --git a/Source/Core/VideoCommon/Src/VideoConfig.cpp b/Source/Core/VideoCommon/Src/VideoConfig.cpp index 2c147a0ecb..cd95010e38 100644 --- a/Source/Core/VideoCommon/Src/VideoConfig.cpp +++ b/Source/Core/VideoCommon/Src/VideoConfig.cpp @@ -80,7 +80,7 @@ void VideoConfig::Load(const char *main_ini_file, bool filecheck_passed, const c SET_STATE(iniFile.Get("Settings", "AnaglyphStereo", &bAnaglyphStereo, false), bAnaglyphStereo); SET_STATE(iniFile.Get("Settings", "AnaglyphStereoSeparation", &iAnaglyphStereoSeparation, 200), iAnaglyphStereoSeparation); SET_STATE(iniFile.Get("Settings", "AnaglyphFocalAngle", &iAnaglyphFocalAngle, 0), iAnaglyphFocalAngle); - SET_STATE(iniFile.Get("Settings", "EnablePixelLigting", &bEnablePixelLighting, false), bEnablePixelLighting); + SET_STATE(iniFile.Get("Settings", "EnablePixelLighting", &bEnablePixelLighting, false), bEnablePixelLighting); SET_STATE(iniFile.Get("Settings", "EnablePerPixelDepth", &bEnablePerPixelDepth, false), bEnablePerPixelDepth); SET_STATE(iniFile.Get("Settings", "ShowShaderErrors", &bShowShaderErrors, false), bShowShaderErrors); @@ -170,7 +170,7 @@ void VideoConfig::GameIniLoad(const char *ini_file) SET_UISTATE(iniFile.GetIfExists("Video_Settings", "AnaglyphStereoSeparation", &iAnaglyphStereoSeparation), iAnaglyphStereoSeparation); SET_UISTATE(iniFile.GetIfExists("Video_Settings", "AnaglyphFocalAngle", &iAnaglyphFocalAngle), iAnaglyphFocalAngle); - SET_UISTATE(iniFile.GetIfExists("Video_Settings", "EnablePixelLigting", &bEnablePixelLighting), bEnablePixelLighting); + SET_UISTATE(iniFile.GetIfExists("Video_Settings", "EnablePixelLighting", &bEnablePixelLighting), bEnablePixelLighting); SET_UISTATE(iniFile.GetIfExists("Video_Settings", "EnablePerPixelDepth", &bEnablePerPixelDepth), bEnablePerPixelDepth); SET_UISTATE(iniFile.GetIfExists("Video_Settings", "ShowShaderErrors", &bShowShaderErrors), bShowShaderErrors); @@ -263,7 +263,7 @@ void VideoConfig::Save(const char *ini_file) iniFile.Set("Settings", "AnaglyphStereo", bAnaglyphStereo); iniFile.Set("Settings", "AnaglyphStereoSeparation", iAnaglyphStereoSeparation); iniFile.Set("Settings", "AnaglyphFocalAngle", iAnaglyphFocalAngle); - iniFile.Set("Settings", "EnablePixelLigting", bEnablePixelLighting); + iniFile.Set("Settings", "EnablePixelLighting", bEnablePixelLighting); iniFile.Set("Settings", "EnablePerPixelDepth", bEnablePerPixelDepth); @@ -338,7 +338,7 @@ void VideoConfig::GameIniSave(const char* default_ini, const char* game_ini) CHECK_UISTATE("Video_Settings", "AnaglyphStereo", bAnaglyphStereo); CHECK_UISTATE("Video_Settings", "AnaglyphStereoSeparation", iAnaglyphStereoSeparation); CHECK_UISTATE("Video_Settings", "AnaglyphFocalAngle", iAnaglyphFocalAngle); - CHECK_UISTATE("Video_Settings", "EnablePixelLigting", bEnablePixelLighting); + CHECK_UISTATE("Video_Settings", "EnablePixelLighting", bEnablePixelLighting); CHECK_UISTATE("Video_Settings", "EnablePerPixelDepth", bEnablePerPixelDepth); CHECK_UISTATE("Video_Settings", "ShowShaderErrors", bShowShaderErrors); diff --git a/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp b/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp index 47a5058da9..ab692615d6 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp @@ -1571,7 +1571,7 @@ bool Renderer::SaveScreenshot(const std::string &filename, const TargetRectangle { u32 W = back_rc.GetWidth(); u32 H = back_rc.GetHeight(); - u8 *data = new u8[3 * W * H]; // TODO: possible memleak, and new'd data is given to wxImage which requires malloc + u8 *data = (u8 *)malloc((sizeof(u8) * 3 * W * H)); glPixelStorei(GL_PACK_ALIGNMENT, 1); glReadPixels(back_rc.left, back_rc.bottom, W, H, GL_RGB, GL_UNSIGNED_BYTE, data); @@ -1579,6 +1579,7 @@ bool Renderer::SaveScreenshot(const std::string &filename, const TargetRectangle // Show failure message if (GL_REPORT_ERROR() != GL_NO_ERROR) { + free(data); OSD::AddMessage("Error capturing or saving screenshot.", 2000); return false; } @@ -1608,7 +1609,7 @@ bool Renderer::SaveScreenshot(const std::string &filename, const TargetRectangle #else bool result = SaveTGA(filename.c_str(), W, H, data); - delete[] data; + free(data); #endif return result;