diff --git a/Source/Plugins/Plugin_VideoOGL/Src/GLInit.cpp b/Source/Plugins/Plugin_VideoOGL/Src/GLInit.cpp index 6a959777c3..0aea8766f5 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/GLInit.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/GLInit.cpp @@ -188,7 +188,7 @@ bool OpenGL_Create(SVideoInitialize &_VideoInitialize, int _iwidth, int _iheight if (g_Config.bFullscreen) { dwExStyle=WS_EX_APPWINDOW; dwStyle=WS_POPUP; - ShowCursor(FALSE); + //ShowCursor(FALSE); } else { dwExStyle=WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; @@ -202,7 +202,7 @@ bool OpenGL_Create(SVideoInitialize &_VideoInitialize, int _iwidth, int _iheight int X = (rcdesktop.right-rcdesktop.left)/2 - (rc.right-rc.left)/2; int Y = (rcdesktop.bottom-rcdesktop.top)/2 - (rc.bottom-rc.top)/2; - // SetWindowPos(EmuWindow::GetWnd(), NULL, X, Y, rc.right-rc.left, rc.bottom-rc.top, SWP_NOREPOSITION|SWP_NOZORDER); + SetWindowPos(EmuWindow::GetWnd(), NULL, X, Y, rc.right-rc.left, rc.bottom-rc.top, SWP_NOREPOSITION|SWP_NOZORDER); PIXELFORMATDESCRIPTOR pfd= // pfd Tells Windows How We Want Things To Be { diff --git a/Source/Plugins/Plugin_VideoOGL/Src/GUI/ConfigDlg.cpp b/Source/Plugins/Plugin_VideoOGL/Src/GUI/ConfigDlg.cpp index 6879eec93b..2ba1409ea6 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/GUI/ConfigDlg.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/GUI/ConfigDlg.cpp @@ -19,7 +19,7 @@ #include "ConfigDlg.h" #include "../Globals.h" -#include "TextureMngr.h" +#include "../TextureMngr.h" BEGIN_EVENT_TABLE(ConfigDialog,wxDialog) EVT_CLOSE(ConfigDialog::OnClose) @@ -92,11 +92,13 @@ void ConfigDialog::CreateGUIControls() wxStaticText *FSText = new wxStaticText(m_PageVideo, ID_FSTEXT, wxT("Fullscreen video mode:"), wxDefaultPosition, wxDefaultSize, 0); wxArrayString arrayStringFor_FullscreenCB; - m_FullscreenCB = new wxComboBox(m_PageVideo, ID_FULLSCREENCB, wxT(""), wxDefaultPosition, wxDefaultSize, arrayStringFor_FullscreenCB, 0, wxDefaultValidator); + m_FullscreenCB = new wxComboBox(m_PageVideo, ID_FULLSCREENCB, wxEmptyString, wxDefaultPosition, wxDefaultSize, arrayStringFor_FullscreenCB, 0, wxDefaultValidator); + m_FullscreenCB->SetValue(g_Config.iFSResolution); wxStaticText *WMText = new wxStaticText(m_PageVideo, ID_WMTEXT, wxT("Windowed resolution:"), wxDefaultPosition, wxDefaultSize, 0); wxArrayString arrayStringFor_WindowResolutionCB; - m_WindowResolutionCB = new wxComboBox(m_PageVideo, ID_WINDOWRESOLUTIONCB, wxT(""), wxDefaultPosition, wxDefaultSize, arrayStringFor_WindowResolutionCB, 0, wxDefaultValidator); + m_WindowResolutionCB = new wxComboBox(m_PageVideo, ID_WINDOWRESOLUTIONCB, wxEmptyString, wxDefaultPosition, wxDefaultSize, arrayStringFor_WindowResolutionCB, 0, wxDefaultValidator); + m_WindowResolutionCB->SetValue(g_Config.iWindowedRes); //page2 m_ForceFiltering = new wxCheckBox(m_PageEnhancements, ID_FORCEFILTERING, wxT("Force bi/trilinear filtering (May cause small glitches)"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); @@ -124,7 +126,7 @@ void ConfigDialog::CreateGUIControls() m_AliasModeCB = new wxComboBox(m_PageVideo, ID_ALIASMODECB, wxT(""), wxDefaultPosition, wxDefaultSize, arrayStringFor_AliasModeCB, 0, wxDefaultValidator); m_AliasModeCB->Enable(false); - m_ForceAnisotropy = new wxCheckBox(m_PageEnhancements, ID_FORCEANISOTROPY, wxT("Force maximum ansitropy filtering"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); + m_ForceAnisotropy = new wxCheckBox(m_PageEnhancements, ID_FORCEANISOTROPY, wxT("Force maximum anisotropy filtering"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); //m_ForceAnisotropy->SetValue(g_Config.bForceMaxAniso); m_ForceAnisotropy->Enable(false); @@ -168,8 +170,8 @@ void ConfigDialog::CreateGUIControls() sPage3->Add(m_Statistics, wxGBPosition(2, 0), wxGBSpan(1, 1), wxALL, 5); sPage3->Add(m_TexFmtOverlay, wxGBPosition(3, 0), wxGBSpan(1, 1), wxALL, 5); sPage3->Add(m_TexFmtCenter, wxGBPosition(3, 1), wxGBSpan(1, 1), wxALL, 5); - sPage3->Add(m_DumpTextures, wxGBPosition(4, 0), wxGBSpan(1, 1), wxALIGN_CENTER_VERTICAL|wxALL, 5); - sPage3->Add(m_TexturePath, wxGBPosition(4, 1), wxGBSpan(2, 1), wxALL, 5); + sPage3->Add(m_DumpTextures, wxGBPosition(4, 0), wxGBSpan(1, 1), wxALL, 5); + sPage3->Add(m_TexturePath, wxGBPosition(4, 1), wxGBSpan(1, 1), wxALL, 5); m_PageAdvanced->SetSizer(sPage3); sPage3->Layout(); @@ -211,7 +213,6 @@ void ConfigDialog::AddFSReso(char *reso) m_FullscreenCB->Append(wxString::FromAscii(reso)); } - void ConfigDialog::FSCB(wxCommandEvent& event) { strcpy(g_Config.iFSResolution, m_FullscreenCB->GetValue().mb_str() ); @@ -255,14 +256,17 @@ void ConfigDialog::TexFmtOverlayChange(wxCommandEvent& event) switch(event.GetId()) { case ID_TEXFMTOVERLAY: - g_Config.bTexFmtOverlayEnable = m_TexFmtOverlay->IsChecked(); m_TexFmtCenter->Enable(m_TexFmtOverlay->IsChecked()); TextureMngr::Invalidate(); if(!g_Config.bTexFmtOverlayEnable) + { m_TexFmtCenter->SetValue(false); - else + g_Config.bTexFmtOverlayCenter = false; + } + else{ return; + } break; case ID_TEXFMTCENTER: g_Config.bTexFmtOverlayCenter = m_TexFmtCenter->IsChecked(); diff --git a/Source/Plugins/Plugin_VideoOGL/Src/main.cpp b/Source/Plugins/Plugin_VideoOGL/Src/main.cpp index 0c2108f511..710bc5d0c2 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/main.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/main.cpp @@ -66,12 +66,32 @@ void DllConfig(HWND _hParent) #ifdef _WIN32 wxWindow win; win.SetHWND(_hParent); - - //TODO get available resolutions - ConfigDialog frame(&win); - frame.ShowModal(); + DWORD iModeNum = 0; + DEVMODE dmi; + + ZeroMemory(&dmi, sizeof(dmi)); + dmi.dmSize = sizeof(dmi); + + int x = 0, y = 0; + + while(EnumDisplaySettings(NULL, iModeNum++, &dmi) != 0) + { + //TODO check against all older resolutions, not just the previous + if(x != dmi.dmPelsWidth && y != dmi.dmPelsHeight && dmi.dmBitsPerPel == 32) + { + char szBuffer[100]; + sprintf(szBuffer,"%dx%d", dmi.dmPelsWidth, dmi.dmPelsHeight); + frame.AddFSReso(szBuffer); + frame.AddWindowReso(szBuffer); + x = dmi.dmPelsWidth; + y = dmi.dmPelsHeight; + } + ZeroMemory(&dmi, sizeof(dmi)); + } + + frame.ShowModal(); win.SetHWND(0); #else @@ -90,7 +110,7 @@ void DllConfig(HWND _hParent) int modeNum = 0; int bestMode = 0; - // set best mode to current + //set best mode to current bestMode = 0; XF86VidModeGetAllModeLines(GLWin.dpy, GLWin.screen, &modeNum, &modes); int px = 0, py = 0; @@ -103,7 +123,7 @@ void DllConfig(HWND _hParent) char temp[32]; sprintf(temp,"%dx%d", modes[i]->hdisplay, modes[i]->vdisplay); frame.AddFSReso(temp); - frame.AddWindowReso(temp); //Add same to Window ones, since they should be nearly all that's needed + frame.AddWindowReso(temp);//Add same to Window ones, since they should be nearly all that's needed px = modes[i]->hdisplay;//Used to remove repeating from different screen depths py = modes[i]->vdisplay; }