From 4619941b9e62df4573f400bc3e56f9ad27eeeeee Mon Sep 17 00:00:00 2001 From: "gregory.hainaut@gmail.com" Date: Fri, 8 Apr 2011 17:41:04 +0000 Subject: [PATCH] gsdx: linux: * fix some issue with empty string in configuration git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4553 96395faa-99c1-11dd-bbfe-3dabce05a288 --- plugins/GSdx/GSLinuxDialog.cpp | 23 ++++++++++++++++------- plugins/GSdx/GSWnd.cpp | 8 ++++---- plugins/GSdx/GSdx.cpp | 15 ++++++++++----- 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/plugins/GSdx/GSLinuxDialog.cpp b/plugins/GSdx/GSLinuxDialog.cpp index 0c7fcc4257..303fd12097 100644 --- a/plugins/GSdx/GSLinuxDialog.cpp +++ b/plugins/GSdx/GSLinuxDialog.cpp @@ -75,8 +75,17 @@ bool RunLinuxDialog() gtk_combo_box_append_text(GTK_COMBO_BOX(res_combo_box), "1280x960@60"); gtk_combo_box_append_text(GTK_COMBO_BOX(res_combo_box), "And a few other values like that."); - // Or whatever the default value is. - gtk_combo_box_set_active(GTK_COMBO_BOX(res_combo_box), 2); + // A little hackish but enough for the moment. + // Better drop this setting and lets the user resize the windows like any applications + // You need only to constrain it with the aspect ratio -- greg + int width = theApp.GetConfig("ModeWidth", 640); + switch(width) { + case 1280: gtk_combo_box_set_active(GTK_COMBO_BOX(res_combo_box), 3); break; + case 1024: gtk_combo_box_set_active(GTK_COMBO_BOX(res_combo_box), 2); break; + case 800: gtk_combo_box_set_active(GTK_COMBO_BOX(res_combo_box), 1); break; + case 640: gtk_combo_box_set_active(GTK_COMBO_BOX(res_combo_box), 0); break; + default: gtk_combo_box_set_active(GTK_COMBO_BOX(res_combo_box), 0); break; + } gtk_container_add(GTK_CONTAINER(main_box), res_label); gtk_container_add(GTK_CONTAINER(main_box), res_combo_box); @@ -196,11 +205,11 @@ bool RunLinuxDialog() if (gtk_combo_box_get_active(GTK_COMBO_BOX(res_combo_box)) != -1) { int resolution = gtk_combo_box_get_active(GTK_COMBO_BOX(res_combo_box)); switch (resolution) { - case 0: theApp.SetConfig("w", 640); theApp.SetConfig("h", 480); break; - case 1: theApp.SetConfig("w", 800); theApp.SetConfig("h", 600); break; - case 2: theApp.SetConfig("w", 1024); theApp.SetConfig("h", 768); break; - case 3: theApp.SetConfig("w", 1280); theApp.SetConfig("h", 960); break; - default: theApp.SetConfig("w", 640); theApp.SetConfig("h", 480); + case 0: theApp.SetConfig("ModeWidth", 640); theApp.SetConfig("ModeHeight", 480); break; + case 1: theApp.SetConfig("ModeWidth", 800); theApp.SetConfig("ModeHeight", 600); break; + case 2: theApp.SetConfig("ModeWidth", 1024); theApp.SetConfig("ModeHeight", 768); break; + case 3: theApp.SetConfig("ModeWidth", 1280); theApp.SetConfig("ModeHeight", 960); break; + default: theApp.SetConfig("ModeWidth", 640); theApp.SetConfig("ModeHeight", 480); } } diff --git a/plugins/GSdx/GSWnd.cpp b/plugins/GSdx/GSWnd.cpp index c5406d8853..41bb0affbc 100644 --- a/plugins/GSdx/GSWnd.cpp +++ b/plugins/GSdx/GSWnd.cpp @@ -341,8 +341,8 @@ bool GSWnd::Create(const string& title, int w, int h) if(m_window != NULL) return false; if(w <= 0 || h <= 0) { - w = theApp.GetConfig("w", 640); - h = theApp.GetConfig("h", 480); + w = theApp.GetConfig("ModeWidth", 640); + h = theApp.GetConfig("ModeHeight", 480); } m_window = SDL_CreateWindow(title.c_str(), 100, 100, w, h, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE); @@ -368,8 +368,8 @@ GSVector4i GSWnd::GetClientRect() { // TODO int h, w; - w = theApp.GetConfig("w", 640); - h = theApp.GetConfig("h", 480); + w = theApp.GetConfig("ModeWidth", 640); + h = theApp.GetConfig("ModeHeight", 480); return GSVector4i(0, 0, w, h); } diff --git a/plugins/GSdx/GSdx.cpp b/plugins/GSdx/GSdx.cpp index 85be3b3f37..88885b0a0d 100644 --- a/plugins/GSdx/GSdx.cpp +++ b/plugins/GSdx/GSdx.cpp @@ -49,9 +49,11 @@ size_t GSdxApp::GetPrivateProfileString(const char* lpAppName, const char* lpKey std::string key(lpKeyName); std::string value = m_configuration_map[key]; - if (value.empty()) + if (value.empty()) { + // save the value for futur call + m_configuration_map[key] = std::string(lpDefault); strcpy(lpReturnedString, lpDefault); - else + } else strcpy(lpReturnedString, value.c_str()); return 0; @@ -75,7 +77,8 @@ bool GSdxApp::WritePrivateProfileString(const char* lpAppName, const char* lpKey // Do not save the inifile key which is not an option if (it->first.compare("inifile") == 0) continue; - fprintf(f, "%s = %s\n", it->first.c_str(), it->second.c_str()); + if (!it->second.empty()) + fprintf(f, "%s = %s\n", it->first.c_str(), it->second.c_str()); } fclose(f); @@ -87,9 +90,11 @@ int GSdxApp::GetPrivateProfileInt(const char* lpAppName, const char* lpKeyName, BuildConfigurationMap(lpFileName); std::string value = m_configuration_map[std::string(lpKeyName)]; - if (value.empty()) + if (value.empty()) { + // save the value for futur call + SetConfig(lpKeyName, nDefault); return nDefault; - else + } else return atoi(value.c_str()); } #endif