rpms/trackballs/devel trackballs-1.1.4-rh555877.patch, NONE, 1.1 trackballs.spec, 1.13, 1.14

Hans de Goede jwrdegoede at fedoraproject.org
Mon Jan 18 12:26:26 UTC 2010


Author: jwrdegoede

Update of /cvs/pkgs/rpms/trackballs/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv13298

Modified Files:
	trackballs.spec 
Added Files:
	trackballs-1.1.4-rh555877.patch 
Log Message:
* Mon Jan 18 2010 Hans de Goede <hdegoede at redhat.com> 1.1.4-11
- Fix a crash when trying to change to an unsupported resolution (#555877)
- Add widescreen monitor resolutions to the monitor resolution list


trackballs-1.1.4-rh555877.patch:
 src/settingsMode.cc          |   54 +++++++++++++++++++++++++++++++++++++++----
 trackballs-1.1.4/src/mmad.cc |   13 +++++++++-
 2 files changed, 61 insertions(+), 6 deletions(-)

--- NEW FILE trackballs-1.1.4-rh555877.patch ---
--- trackballs-1.1.4/src/settingsMode.cc	2007-04-07 15:18:40.000000000 +0200
+++ trackballs.new/src/settingsMode.cc	2010-01-18 02:52:57.000000000 +0100
@@ -38,7 +38,7 @@ using namespace std;
 SettingsMode *SettingsMode::settingsMode;
 
 /* Not properly abstracted, part of global stuff in mmad.cc */
-extern int screenResolutions[5][2],nScreenResolutions;
+extern int screenResolutions[11][2],nScreenResolutions;
 extern void changeScreenResolution();
 
 void SettingsMode::init() {
@@ -61,17 +61,23 @@
 void SettingsMode::deactivated() {
   Settings *settings=Settings::settings;
 
-  settings->save(); 
-  regenerateSphereDisplaylists();  /* In case we have changed detail level */
-
   /* Switch back to the last verified resolution */
   if(settings->resolution != restoreResolution || settings->colorDepth != restoreColorDepth) {
 	settings->resolution = restoreResolution;
 	settings->colorDepth = restoreColorDepth;
+        fprintf(stderr,
+                "New video mode not confirmed, restoring old mode\n");
 	changeScreenResolution();
+        if (!screen) {
+          fprintf(stderr, "Error failed to restore video mode!\n");
+          exit(1);
+        }
   }
 
+  settings->save(); 
+  regenerateSphereDisplaylists();  /* In case we have changed detail level */
 }
+
 void SettingsMode::display() {
   int w,h,i;
   int menucount;
@@ -233,7 +239,13 @@
 	  settings->colorDepth = restoreColorDepth;
 	  resolution=restoreResolution;
 	  colorDepth=restoreColorDepth;
+	  fprintf(stderr,
+	          "New video mode not confirmed, restoring old mode\n");
 	  changeScreenResolution();
+	  if (!screen) {
+	    fprintf(stderr, "Error failed to restore video mode!\n");
+	    exit(1);
+	  }
 	}
   }
 }
@@ -266,6 +278,21 @@
 	settings->resolution=resolution;
 	settings->colorDepth=colorDepth;
 	changeScreenResolution();
+	if (!screen) {
+	  /* Failed miserably */
+	  fprintf(stderr,
+	          "Error failed to set new video mode, restoring old mode\n");
+	  settings->resolution = restoreResolution;
+	  settings->colorDepth = restoreColorDepth;
+	  resolution=restoreResolution;
+	  colorDepth=restoreColorDepth;
+	  changeScreenResolution();
+	  if (!screen) {
+	    fprintf(stderr, "Error failed to restore video mode!\n");
+	    exit(1);
+	  }
+	  break;
+	}
 	testingResolution=10.0;
 	break;
   case MENU_RESOLUTION_OK:
@@ -279,13 +306,30 @@
 	settings->colorDepth = restoreColorDepth;
 	resolution=restoreResolution;
 	colorDepth=restoreColorDepth;
+        fprintf(stderr,
+                "New video mode cancelled, restoring old mode\n");
 	changeScreenResolution();
+        if (!screen) {
+          fprintf(stderr, "Error failed to restore video mode!\n");
+          exit(1);
+        }
 	break;
 
 
   case MENU_WINDOWED:
 	Settings::settings->is_windowed = Settings::settings->is_windowed ? 0 : 1;
-    changeScreenResolution();
+        changeScreenResolution();
+	if (!screen) {
+	  /* Failed miserably */
+	  fprintf(stderr,
+	          "Error failed to switch fullscreen <-> windowed\n");
+	  Settings::settings->is_windowed = Settings::settings->is_windowed ? 0 : 1;
+          changeScreenResolution();
+	  if (!screen) {
+	    fprintf(stderr, "Error failed to restore old mode!\n");
+	    exit(1);
+	  }
+	}
 	break;
   case MENU_GFX_DETAILS:
 	// Change level of graphic details */
--- trackballs-1.1.4/src/mmad.cc~	2007-05-17 15:24:06.000000000 +0200
+++ trackballs-1.1.4/src/mmad.cc	2010-01-18 03:12:09.000000000 +0100
@@ -64,7 +64,7 @@ int silent=0;
 int debug_joystick,repair_joystick;
 
 char effectiveShareDir[256];
-int screenResolutions[5][2] = {{640,480}, {800,600}, {1024,768}, {1280,1024}, {1600,1200}}, nScreenResolutions=5;
+int screenResolutions[11][2] = {{640,480}, {800,600}, {1024,768}, {1280,1024}, {1600,1200}, {1280,800}, {1366,768}, {1440,900}, {1680,1050}, {1920,1080}, {1920,1200}}, nScreenResolutions=11;
 
 void changeScreenResolution() {
   screenWidth = screenResolutions[Settings::settings->resolution][0]; 
@@ -492,6 +492,17 @@ void innerMain(void *closure,int argc,ch
 	    else if(event.key.keysym.sym == 'f' && SDL_GetModState() & KMOD_CTRL) {
 	      Settings::settings->is_windowed = Settings::settings->is_windowed ? 0 : 1;
 	      changeScreenResolution();
+              if (!screen) {
+                /* Failed miserably */
+                fprintf(stderr,
+                        "Error failed to switch fullscreen <-> windowed\n");
+                Settings::settings->is_windowed = Settings::settings->is_windowed ? 0 : 1;
+                changeScreenResolution();
+                if (!screen) {
+                  fprintf(stderr, "Error failed to restore old mode!\n");
+                  exit(1);
+                }
+              }
 	      /* Flush all events that occured while switching screen
 		 resolution */
 	      while(SDL_PollEvent(&event)) {}	      


Index: trackballs.spec
===================================================================
RCS file: /cvs/pkgs/rpms/trackballs/devel/trackballs.spec,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -p -r1.13 -r1.14
--- trackballs.spec	27 Jul 2009 06:13:10 -0000	1.13
+++ trackballs.spec	18 Jan 2010 12:26:25 -0000	1.14
@@ -1,6 +1,6 @@
 Name:           trackballs
 Version:        1.1.4
-Release:        10%{?dist}
+Release:        11%{?dist}
 Summary:        Steer a marble ball through a labyrinth
 Group:          Amusements/Games
 License:        GPLv2+
@@ -9,6 +9,7 @@ Source0:        http://downloads.sourcef
 Source1:        %{name}.desktop
 Patch0:         trackballs-1.1.4-destdir.patch
 Patch1:         trackballs-1.1.4-black-vertices-fix.patch
+Patch2:         trackballs-1.1.4-rh555877.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires:  guile-devel libGLU-devel zlib-devel desktop-file-utils
 BuildRequires:  SDL_ttf-devel SDL_mixer-devel SDL_image-devel
@@ -24,6 +25,7 @@ quality soundeffects and background musi
 %setup -q
 %patch0 -p1
 %patch1 -p1
+%patch2 -p1
 iconv -f ISO-8859-1 -t UTF8 share/%{name}.6 > share/%{name}.6.tmp
 mv share/%{name}.6.tmp share/%{name}.6
 # the install script does a chgrp to 'games', this doesn't work while
@@ -81,6 +83,10 @@ fi
 
 
 %changelog
+* Mon Jan 18 2010 Hans de Goede <hdegoede at redhat.com> 1.1.4-11
+- Fix a crash when trying to change to an unsupported resolution (#555877)
+- Add widescreen monitor resolutions to the monitor resolution list
+
 * Sun Jul 26 2009 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 1.1.4-10
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
 



More information about the scm-commits mailing list