diff --git a/Source/Core/DiscIO/Src/DriveBlob.cpp b/Source/Core/DiscIO/Src/DriveBlob.cpp index ff9a5551c4..cd68e8b078 100644 --- a/Source/Core/DiscIO/Src/DriveBlob.cpp +++ b/Source/Core/DiscIO/Src/DriveBlob.cpp @@ -56,6 +56,7 @@ DriveReader::DriveReader(const char *drive) 0, &dwNotUsed, NULL); #endif #else + SectorReader::SetSectorSize(2048); file_ = fopen(drive, "rb"); if (file_) { @@ -83,7 +84,8 @@ DriveReader::~DriveReader() hDisc = INVALID_HANDLE_VALUE; } #else - fclose(file_); + if (file_) + fclose(file_); file_ = 0; #endif } diff --git a/Source/Core/DolphinWX/Src/FrameTools.cpp b/Source/Core/DolphinWX/Src/FrameTools.cpp index 6c7aca9b7e..06d5a08641 100644 --- a/Source/Core/DolphinWX/Src/FrameTools.cpp +++ b/Source/Core/DolphinWX/Src/FrameTools.cpp @@ -470,6 +470,7 @@ bool game_loading = false; // 3. Boot last selected game void CFrame::BootGame(const std::string& filename) { + bool success = false; SCoreStartupParameter& StartUp = SConfig::GetInstance().m_LocalCoreStartupParameter; if (Core::GetState() != Core::CORE_UNINITIALIZED) @@ -479,23 +480,23 @@ void CFrame::BootGame(const std::string& filename) // Start the selected ISO, or try one of the saved paths. // If all that fails, ask to add a dir and don't boot if (!filename.empty()) - BootManager::BootCore(filename); + success = BootManager::BootCore(filename); else if (m_GameListCtrl->GetSelectedISO() != NULL) { if (m_GameListCtrl->GetSelectedISO()->IsValid()) - BootManager::BootCore(m_GameListCtrl->GetSelectedISO()->GetFileName()); + success = BootManager::BootCore(m_GameListCtrl->GetSelectedISO()->GetFileName()); } else if (!StartUp.m_strDefaultGCM.empty() && wxFileExists(wxString(StartUp.m_strDefaultGCM.c_str(), wxConvUTF8))) { - BootManager::BootCore(StartUp.m_strDefaultGCM); + success = BootManager::BootCore(StartUp.m_strDefaultGCM); } else { if (!SConfig::GetInstance().m_LastFilename.empty() && wxFileExists(wxString(SConfig::GetInstance().m_LastFilename.c_str(), wxConvUTF8))) { - BootManager::BootCore(SConfig::GetInstance().m_LastFilename); + success = BootManager::BootCore(SConfig::GetInstance().m_LastFilename); } else { @@ -506,6 +507,12 @@ void CFrame::BootGame(const std::string& filename) return; } } + if (!success) + { + game_loading = false; + m_GameListCtrl->Enable(); + m_GameListCtrl->Show(); + } } // Open file to boot @@ -546,13 +553,7 @@ void CFrame::DoOpen(bool Boot) { if (!fileChosen) return; - BootManager::BootCore(std::string(path.mb_str())); - // Game has been started, hide the game list - if (m_GameListCtrl->IsShown()) - { - m_GameListCtrl->Disable(); - m_GameListCtrl->Hide(); - } + StartGame(std::string(path.mb_str())); } else { @@ -661,7 +662,7 @@ void CFrame::StartGame(const std::string& filename) void CFrame::OnBootDrive(wxCommandEvent& event) { - BootManager::BootCore(drives[event.GetId()-IDM_DRIVE1].c_str()); + StartGame(drives[event.GetId()-IDM_DRIVE1]); } diff --git a/Source/Plugins/Plugin_GCPad/Src/ConfigBox.cpp b/Source/Plugins/Plugin_GCPad/Src/ConfigBox.cpp index ddc072b01b..fe598cdb11 100644 --- a/Source/Plugins/Plugin_GCPad/Src/ConfigBox.cpp +++ b/Source/Plugins/Plugin_GCPad/Src/ConfigBox.cpp @@ -129,10 +129,6 @@ GCPadConfigDialog::GCPadConfigDialog(wxWindow *parent, wxWindowID id, const wxSt #endif UpdateGUI(); - - wxTheApp->Connect(wxID_ANY, wxEVT_KEY_DOWN, // Keyboard - wxKeyEventHandler(GCPadConfigDialog::OnKeyDown), - (wxObject*)0, this); } GCPadConfigDialog::~GCPadConfigDialog() @@ -245,10 +241,7 @@ void GCPadConfigDialog::OnKeyDown(wxKeyEvent& event) SaveButtonMapping(ClickedButton->GetId(), XKey); #endif } - m_ButtonMappingTimer->Stop(); - GetButtonWaitingTimer = 0; - GetButtonWaitingID = 0; - ClickedButton = NULL; + EndGetButtons(); } } @@ -262,6 +255,10 @@ void GCPadConfigDialog::OnButtonClick(wxCommandEvent& event) if (m_ButtonMappingTimer->IsRunning()) return; + wxTheApp->Connect(wxID_ANY, wxEVT_KEY_DOWN, // Keyboard + wxKeyEventHandler(GCPadConfigDialog::OnKeyDown), + (wxObject*)0, this); + // Create the button object ClickedButton = (wxButton *)event.GetEventObject(); // Save old label so we can revert back diff --git a/Source/Plugins/Plugin_GCPad/Src/ConfigBox.h b/Source/Plugins/Plugin_GCPad/Src/ConfigBox.h index 2ac4e5ad98..6c9c1e4e06 100644 --- a/Source/Plugins/Plugin_GCPad/Src/ConfigBox.h +++ b/Source/Plugins/Plugin_GCPad/Src/ConfigBox.h @@ -235,6 +235,7 @@ class GCPadConfigDialog : public wxDialog void ToBlank(bool ToBlank, int Id); void DoGetButtons(int _GetId); + void EndGetButtons(); void SetButtonText(int id, const wxString &str); wxString GetButtonText(int id); }; diff --git a/Source/Plugins/Plugin_GCPad/Src/ConfigJoypad.cpp b/Source/Plugins/Plugin_GCPad/Src/ConfigJoypad.cpp index 4dfe2d7c33..a73e45e994 100644 --- a/Source/Plugins/Plugin_GCPad/Src/ConfigJoypad.cpp +++ b/Source/Plugins/Plugin_GCPad/Src/ConfigJoypad.cpp @@ -208,10 +208,7 @@ void GCPadConfigDialog::DoGetButtons(int _GetId) { DEBUG_LOG(PAD, "Timer Stopped for Pad:%i _GetId:%i", GCMapping[m_Page].ID, _GetId); - m_ButtonMappingTimer->Stop(); - GetButtonWaitingTimer = 0; - GetButtonWaitingID = 0; - ClickedButton = NULL; + EndGetButtons(); } // If we got a bad button @@ -227,6 +224,17 @@ void GCPadConfigDialog::DoGetButtons(int _GetId) } } +void GCPadConfigDialog::EndGetButtons(void) +{ + wxTheApp->Disconnect(wxID_ANY, wxEVT_KEY_DOWN, // Keyboard + wxKeyEventHandler(GCPadConfigDialog::OnKeyDown), + (wxObject*)0, this); + m_ButtonMappingTimer->Stop(); + GetButtonWaitingTimer = 0; + GetButtonWaitingID = 0; + ClickedButton = NULL; +} + // Convert the 0x8000 range values to BoxW and BoxH for the plot void GCPadConfigDialog::Convert2Box(int &x) { diff --git a/Source/Plugins/Plugin_VideoOGL/Src/main.cpp b/Source/Plugins/Plugin_VideoOGL/Src/main.cpp index 0a712ab95f..97ae962602 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/main.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/main.cpp @@ -355,8 +355,8 @@ void Initialize(void *init) } void DoState(unsigned char **ptr, int mode) { -#ifndef _WIN32 - // WHY is this here?? +#if !defined(_WIN32) && !defined(__linux__) + // WHY is this here?? If macs don't need this it should be removed. OpenGL_MakeCurrent(); #endif // Clear all caches that touch RAM diff --git a/Source/Plugins/Plugin_Wiimote/Src/ConfigGamepad.cpp b/Source/Plugins/Plugin_Wiimote/Src/ConfigGamepad.cpp index a0249ac612..280a1f42b9 100644 --- a/Source/Plugins/Plugin_Wiimote/Src/ConfigGamepad.cpp +++ b/Source/Plugins/Plugin_Wiimote/Src/ConfigGamepad.cpp @@ -222,10 +222,7 @@ void WiimotePadConfigDialog::DoGetButtons(int _GetId) DEBUG_LOG(WIIMOTE, "Timer Stopped for Pad:%i _GetId:%i", WiiMoteEmu::WiiMapping[m_Page].ID, _GetId); - m_ButtonMappingTimer->Stop(); - GetButtonWaitingTimer = 0; - GetButtonWaitingID = 0; - ClickedButton = NULL; + EndGetButtons(); } // If we got a bad button @@ -241,6 +238,17 @@ void WiimotePadConfigDialog::DoGetButtons(int _GetId) } } +void WiimotePadConfigDialog::EndGetButtons(void) +{ + wxTheApp->Disconnect(wxID_ANY, wxEVT_KEY_DOWN, // Keyboard + wxKeyEventHandler(WiimotePadConfigDialog::OnKeyDown), + (wxObject*)0, this); + m_ButtonMappingTimer->Stop(); + GetButtonWaitingTimer = 0; + GetButtonWaitingID = 0; + ClickedButton = NULL; +} + // Convert the 0x8000 range values to BoxW and BoxH for the plot void WiimotePadConfigDialog::Convert2Box(int &x) { diff --git a/Source/Plugins/Plugin_Wiimote/Src/ConfigPadDlg.cpp b/Source/Plugins/Plugin_Wiimote/Src/ConfigPadDlg.cpp index 417ded3b5e..934446e8f7 100644 --- a/Source/Plugins/Plugin_Wiimote/Src/ConfigPadDlg.cpp +++ b/Source/Plugins/Plugin_Wiimote/Src/ConfigPadDlg.cpp @@ -135,10 +135,6 @@ WiimotePadConfigDialog::WiimotePadConfigDialog(wxWindow *parent, wxWindowID id, m_Notebook->ChangeSelection(m_Page); // Set control values UpdateGUI(); - - wxTheApp->Connect(wxID_ANY, wxEVT_KEY_DOWN, // Keyboard - wxKeyEventHandler(WiimotePadConfigDialog::OnKeyDown), - (wxObject*)0, this); } WiimotePadConfigDialog::~WiimotePadConfigDialog() @@ -247,10 +243,7 @@ void WiimotePadConfigDialog::OnKeyDown(wxKeyEvent& event) SaveButtonMapping(ClickedButton->GetId(), XKey); #endif } - m_ButtonMappingTimer->Stop(); - GetButtonWaitingTimer = 0; - GetButtonWaitingID = 0; - ClickedButton = NULL; + EndGetButtons(); } } @@ -264,6 +257,10 @@ void WiimotePadConfigDialog::OnButtonClick(wxCommandEvent& event) if (m_ButtonMappingTimer->IsRunning()) return; + wxTheApp->Connect(wxID_ANY, wxEVT_KEY_DOWN, // Keyboard + wxKeyEventHandler(WiimotePadConfigDialog::OnKeyDown), + (wxObject*)0, this); + // Create the button object ClickedButton = (wxButton *)event.GetEventObject(); // Save old label so we can revert back diff --git a/Source/Plugins/Plugin_Wiimote/Src/ConfigPadDlg.h b/Source/Plugins/Plugin_Wiimote/Src/ConfigPadDlg.h index aecdce9874..c89f9db6fe 100644 --- a/Source/Plugins/Plugin_Wiimote/Src/ConfigPadDlg.h +++ b/Source/Plugins/Plugin_Wiimote/Src/ConfigPadDlg.h @@ -288,6 +288,7 @@ class WiimotePadConfigDialog : public wxDialog wxString GetButtonText(int id); void DoGetButtons(int id); + void EndGetButtons(); void UpdatePadInfo(wxTimerEvent& WXUNUSED(event)); void ToBlank(bool ToBlank, int Id); void DoChangeDeadZone();