[trackballs] Fix building and running with guile-2.0 (rhbz#704536) Fix "Esc" sometimes directly exiting the game

Hans de Goede jwrdegoede at fedoraproject.org
Wed May 18 14:26:22 UTC 2011


commit 7cad45aff85ac80a30200f29d45659bef758b3cd
Author: Hans de Goede <hdegoede at redhat.com>
Date:   Wed May 18 16:25:33 2011 +0200

    Fix building and running with guile-2.0 (rhbz#704536)
    Fix "Esc" sometimes directly exiting the game instead of taking you back to
    the main menu

 trackballs-1.1.4-guile20.patch                    |  310 +++++++++++++++++++++
 trackballs-1.1.4-remove-old-sdl-workarounds.patch |  117 ++++++++
 trackballs.spec                                   |   11 +-
 3 files changed, 437 insertions(+), 1 deletions(-)
---
diff --git a/trackballs-1.1.4-guile20.patch b/trackballs-1.1.4-guile20.patch
new file mode 100644
index 0000000..79a9174
--- /dev/null
+++ b/trackballs-1.1.4-guile20.patch
@@ -0,0 +1,310 @@
+--- trackballs-1.1.4/src/game.cc	2007-05-25 12:24:42.000000000 +0200
++++ trackballs-1.1.4.new/src/game.cc	2011-05-18 12:51:33.350253294 +0200
+@@ -65,7 +65,7 @@
+   /* Load the bootup script */
+   char scmname[256];
+   snprintf(scmname,sizeof(scmname),"%s/levels/boot.scm",SHARE_DIR);
+-  gh_eval_file(scmname);
++  scm_c_primitive_load(scmname);
+ 
+   player1 = new Player(gamer);
+   loadLevel(name);
+@@ -110,7 +110,7 @@
+ 
+   if(map) delete map;
+   map = new Map(mapname);
+-  gh_eval_file(scmname);
++  scm_c_primitive_load(scmname);
+ 
+   if(player1)
+     player1->timeLeft = startTime;
+--- trackballs-1.1.4/src/guile.cc.x	2007-05-25 16:40:36.000000000 +0200
++++ trackballs-1.1.4.new/src/guile.cc.x	2011-05-18 12:55:59.574253365 +0200
+@@ -1,88 +1,88 @@
+ /* cpp arguments: guile.cc -DLOCALEDIR="/usr/local/share/locale" -DHAVE_CONFIG_H -I. -I.. -DSHARE_DIR="/usr/local/share/trackballs" -DPACKAGE="trackballs" -DVERSION="1.1.4" -g -O2 -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -I./ -I../ */
+- scm_c_define_gsubr (s_player, 0, 0, 0, (SCM (*)()) player); ;
+- scm_c_define_gsubr (s_new_mr_black, 2, 0, 0, (SCM (*)()) new_mr_black); ;
+- scm_c_define_gsubr (s_new_baby, 2, 0, 0, (SCM (*)()) new_baby); ;
+- scm_c_define_gsubr (s_add_teleport, 5, 0, 0, (SCM (*)()) add_teleport); ;
+- scm_c_define_gsubr (s_add_bird, 6, 0, 0, (SCM (*)()) add_bird); ;
+- scm_c_define_gsubr (s_add_flag, 5, 0, 0, (SCM (*)()) add_flag); ;
+- scm_c_define_gsubr (s_add_colormodifier, 7, 0, 0, (SCM (*)()) add_colormodifier); ;
+- scm_c_define_gsubr (s_add_heightmodifier, 7, 3, 0, (SCM (*)()) add_heightmodifier); ;
+- scm_c_define_gsubr (s_add_cactus, 3, 0, 0, (SCM (*)()) add_cactus); ;
+- scm_c_define_gsubr (s_add_spike, 4, 0, 0, (SCM (*)()) add_spike); ;
+- scm_c_define_gsubr (s_add_sidespike, 5, 0, 0, (SCM (*)()) add_sidespike); ;
+- scm_c_define_gsubr (s_add_goal, 4, 0, 0, (SCM (*)()) add_goal); ;
+- scm_c_define_gsubr (s_sign, 6, 1, 0, (SCM (*)()) sign); ;
+- scm_c_define_gsubr (s_add_modpill, 5, 0, 0, (SCM (*)()) add_modpill); ;
+- scm_c_define_gsubr (s_forcefield, 8, 0, 0, (SCM (*)()) forcefield); ;
+- scm_c_define_gsubr (s_fun_switch, 4, 0, 0, (SCM (*)()) fun_switch); ;
+- scm_c_define_gsubr (s_new_pipe, 7, 0, 0, (SCM (*)()) new_pipe); ;
+- scm_c_define_gsubr (s_pipe_connector, 4, 0, 0, (SCM (*)()) pipe_connector); ;
+- scm_c_define_gsubr (s_diamond, 2, 1, 0, (SCM (*)()) diamond); ;
+- scm_c_define_gsubr (s_fountain, 6, 0, 0, (SCM (*)()) fountain); ;
+- scm_c_define_gsubr (s_set_position, 3, 1, 0, (SCM (*)()) set_position); ;
+- scm_c_define_gsubr (s_get_position_x, 1, 0, 0, (SCM (*)()) get_position_x); ;
+- scm_c_define_gsubr (s_get_position_y, 1, 0, 0, (SCM (*)()) get_position_y); ;
+- scm_c_define_gsubr (s_get_position_z, 1, 0, 0, (SCM (*)()) get_position_z); ;
+- scm_c_define_gsubr (s_set_modtime, 3, 0, 0, (SCM (*)()) set_modtime); ;
+- scm_c_define_gsubr (s_set_acceleration, 2, 0, 0, (SCM (*)()) set_acceleration); ;
+- scm_c_define_gsubr (s_set_horizon, 2, 0, 0, (SCM (*)()) set_horizon); ;
+- scm_c_define_gsubr (s_set_primary_color, 4, 1, 0, (SCM (*)()) set_primary_color); ;
+- scm_c_define_gsubr (s_set_secondary_color, 4, 1, 0, (SCM (*)()) set_secondary_color); ;
+- scm_c_define_gsubr (s_set_specular_color, 4, 1, 0, (SCM (*)()) set_specular_color); ;
+- scm_c_define_gsubr (s_set_flag, 3, 0, 0, (SCM (*)()) set_flag); ;
+- scm_c_define_gsubr (s_set_wind, 3, 0, 0, (SCM (*)()) set_wind); ;
+- scm_c_define_gsubr (s_set_speed, 2, 0, 0, (SCM (*)()) set_speed); ;
+- scm_c_define_gsubr (s_set_texture, 2, 0, 0, (SCM (*)()) set_texture); ;
+- scm_c_define_gsubr (s_set_fountain_strength, 2, 0, 0, (SCM (*)()) set_fountain_strength); ;
+- scm_c_define_gsubr (s_set_fountain_velocity, 4, 0, 0, (SCM (*)()) set_fountain_velocity); ;
+- scm_c_define_gsubr (s_score_on_death, 2, 0, 0, (SCM (*)()) score_on_death); ;
+- scm_c_define_gsubr (s_time_on_death, 2, 0, 0, (SCM (*)()) time_on_death); ;
+- scm_c_define_gsubr (s_default_on_death, 3, 0, 0, (SCM (*)()) default_on_death); ;
+- scm_c_define_gsubr (s_add_cyclic_platform, 8, 0, 0, (SCM (*)()) add_cyclic_platform); ;
+- scm_c_define_gsubr (s_animator, 7, 0, 0, (SCM (*)()) animator); ;
+- scm_c_define_gsubr (s_set_onoff, 2, 0, 0, (SCM (*)()) set_onoff); ;
+- scm_c_define_gsubr (s_animator_value, 1, 0, 0, (SCM (*)()) animator_value); ;
+- scm_c_define_gsubr (s_set_animator_direction, 2, 0, 0, (SCM (*)()) set_animator_direction); ;
+- scm_c_define_gsubr (s_set_animator_position, 2, 0, 0, (SCM (*)()) set_animator_position); ;
+- scm_c_define_gsubr (s_day, 0, 0, 0, (SCM (*)()) day); ;
+- scm_c_define_gsubr (s_night, 0, 0, 0, (SCM (*)()) night); ;
+- scm_c_define_gsubr (s_fog, 0, 1, 0, (SCM (*)()) fog); ;
+- scm_c_define_gsubr (s_thick_fog, 0, 0, 0, (SCM (*)()) thick_fog); ;
+- scm_c_define_gsubr (s_fog_color, 3, 0, 0, (SCM (*)()) fog_color); ;
+- scm_c_define_gsubr (s_set_bonus_level, 1, 0, 0, (SCM (*)()) set_bonus_level); ;
+- scm_c_define_gsubr (s_set_track_name, 1, 0, 0, (SCM (*)()) set_track_name); ;
+- scm_c_define_gsubr (s_set_author, 1, 0, 0, (SCM (*)()) set_author); ;
+- scm_c_define_gsubr (s_start_time, 1, 0, 0, (SCM (*)()) start_time); ;
+- scm_c_define_gsubr (s_set_time, 1, 0, 0, (SCM (*)()) set_time); ;
+- scm_c_define_gsubr (s_get_time, 0, 0, 0, (SCM (*)()) get_time); ;
+- scm_c_define_gsubr (s_add_time, 1, 0, 0, (SCM (*)()) add_time); ;
+- scm_c_define_gsubr (s_set_score, 1, 0, 0, (SCM (*)()) set_score); ;
+- scm_c_define_gsubr (s_get_score, 0, 0, 0, (SCM (*)()) get_score); ;
+- scm_c_define_gsubr (s_add_score, 1, 0, 0, (SCM (*)()) add_score); ;
+- scm_c_define_gsubr (s_set_start_position, 2, 0, 0, (SCM (*)()) set_start_position); ;
+- scm_c_define_gsubr (s_snow, 1, 0, 0, (SCM (*)()) snow); ;
+- scm_c_define_gsubr (s_rain, 1, 0, 0, (SCM (*)()) rain); ;
+- scm_c_define_gsubr (s_difficulty, 0, 0, 0, (SCM (*)()) difficulty); ;
+- scm_c_define_gsubr (s_use_grid, 1, 0, 0, (SCM (*)()) use_grid); ;
+- scm_c_define_gsubr (s_map_is_transparent, 1, 0, 0, (SCM (*)()) map_is_transparent); ;
+- scm_c_define_gsubr (s_jump, 1, 0, 0, (SCM (*)()) jump); ;
+- scm_c_define_gsubr (s_scale_oxygen, 1, 0, 0, (SCM (*)()) scale_oxygen); ;
+- scm_c_define_gsubr (s_set_cell_flag, 6, 0, 0, (SCM (*)()) set_cell_flag); ;
+- scm_c_define_gsubr (s_set_cell_velocity, 6, 0, 0, (SCM (*)()) set_cell_velocity); ;
+- scm_c_define_gsubr (s_set_cell_heights, 8, 1, 0, (SCM (*)()) set_cell_heights); ;
+- scm_c_define_gsubr (s_set_cell_water_heights, 8, 1, 0, (SCM (*)()) set_cell_water_heights); ;
+- scm_c_define_gsubr (s_set_cell_colors, 8, 1, 0, (SCM (*)()) set_cell_colors); ;
+- scm_c_define_gsubr (s_set_cell_wall_colors, 8, 1, 0, (SCM (*)()) set_cell_wall_colors); ;
+- scm_c_define_gsubr (s_play_effect, 1, 0, 0, (SCM (*)()) play_effect); ;
+- scm_c_define_gsubr (s_camera_angle, 2, 0, 0, (SCM (*)()) camera_angle); ;
+- scm_c_define_gsubr (s_restart_time, 1, 0, 0, (SCM (*)()) restart_time); ;
+- scm_c_define_gsubr (s_clear_song_preferences, 0, 0, 0, (SCM (*)()) clear_song_preferences); ;
+- scm_c_define_gsubr (s_force_next_song, 0, 0, 0, (SCM (*)()) force_next_song); ;
+- scm_c_define_gsubr (s_set_song_preference, 2, 0, 0, (SCM (*)()) set_song_preference); ;
+- scm_c_define_gsubr (s_trigger, 4, 0, 0, (SCM (*)()) trigger); ;
+- scm_c_define_gsubr (s_smart_trigger, 5, 0, 0, (SCM (*)()) smart_trigger); ;
+- scm_c_define_gsubr (s_on_event, 3, 0, 0, (SCM (*)()) on_event); ;
+- scm_c_define_gsubr (s_get_event_callback, 2, 0, 0, (SCM (*)()) get_event_callback); ;
++ scm_c_define_gsubr (s_player, 0, 0, 0, (void *) player); ;
++ scm_c_define_gsubr (s_new_mr_black, 2, 0, 0, (void *) new_mr_black); ;
++ scm_c_define_gsubr (s_new_baby, 2, 0, 0, (void *) new_baby); ;
++ scm_c_define_gsubr (s_add_teleport, 5, 0, 0, (void *) add_teleport); ;
++ scm_c_define_gsubr (s_add_bird, 6, 0, 0, (void *) add_bird); ;
++ scm_c_define_gsubr (s_add_flag, 5, 0, 0, (void *) add_flag); ;
++ scm_c_define_gsubr (s_add_colormodifier, 7, 0, 0, (void *) add_colormodifier); ;
++ scm_c_define_gsubr (s_add_heightmodifier, 7, 3, 0, (void *) add_heightmodifier); ;
++ scm_c_define_gsubr (s_add_cactus, 3, 0, 0, (void *) add_cactus); ;
++ scm_c_define_gsubr (s_add_spike, 4, 0, 0, (void *) add_spike); ;
++ scm_c_define_gsubr (s_add_sidespike, 5, 0, 0, (void *) add_sidespike); ;
++ scm_c_define_gsubr (s_add_goal, 4, 0, 0, (void *) add_goal); ;
++ scm_c_define_gsubr (s_sign, 6, 1, 0, (void *) sign); ;
++ scm_c_define_gsubr (s_add_modpill, 5, 0, 0, (void *) add_modpill); ;
++ scm_c_define_gsubr (s_forcefield, 8, 0, 0, (void *) forcefield); ;
++ scm_c_define_gsubr (s_fun_switch, 4, 0, 0, (void *) fun_switch); ;
++ scm_c_define_gsubr (s_new_pipe, 7, 0, 0, (void *) new_pipe); ;
++ scm_c_define_gsubr (s_pipe_connector, 4, 0, 0, (void *) pipe_connector); ;
++ scm_c_define_gsubr (s_diamond, 2, 1, 0, (void *) diamond); ;
++ scm_c_define_gsubr (s_fountain, 6, 0, 0, (void *) fountain); ;
++ scm_c_define_gsubr (s_set_position, 3, 1, 0, (void *) set_position); ;
++ scm_c_define_gsubr (s_get_position_x, 1, 0, 0, (void *) get_position_x); ;
++ scm_c_define_gsubr (s_get_position_y, 1, 0, 0, (void *) get_position_y); ;
++ scm_c_define_gsubr (s_get_position_z, 1, 0, 0, (void *) get_position_z); ;
++ scm_c_define_gsubr (s_set_modtime, 3, 0, 0, (void *) set_modtime); ;
++ scm_c_define_gsubr (s_set_acceleration, 2, 0, 0, (void *) set_acceleration); ;
++ scm_c_define_gsubr (s_set_horizon, 2, 0, 0, (void *) set_horizon); ;
++ scm_c_define_gsubr (s_set_primary_color, 4, 1, 0, (void *) set_primary_color); ;
++ scm_c_define_gsubr (s_set_secondary_color, 4, 1, 0, (void *) set_secondary_color); ;
++ scm_c_define_gsubr (s_set_specular_color, 4, 1, 0, (void *) set_specular_color); ;
++ scm_c_define_gsubr (s_set_flag, 3, 0, 0, (void *) set_flag); ;
++ scm_c_define_gsubr (s_set_wind, 3, 0, 0, (void *) set_wind); ;
++ scm_c_define_gsubr (s_set_speed, 2, 0, 0, (void *) set_speed); ;
++ scm_c_define_gsubr (s_set_texture, 2, 0, 0, (void *) set_texture); ;
++ scm_c_define_gsubr (s_set_fountain_strength, 2, 0, 0, (void *) set_fountain_strength); ;
++ scm_c_define_gsubr (s_set_fountain_velocity, 4, 0, 0, (void *) set_fountain_velocity); ;
++ scm_c_define_gsubr (s_score_on_death, 2, 0, 0, (void *) score_on_death); ;
++ scm_c_define_gsubr (s_time_on_death, 2, 0, 0, (void *) time_on_death); ;
++ scm_c_define_gsubr (s_default_on_death, 3, 0, 0, (void *) default_on_death); ;
++ scm_c_define_gsubr (s_add_cyclic_platform, 8, 0, 0, (void *) add_cyclic_platform); ;
++ scm_c_define_gsubr (s_animator, 7, 0, 0, (void *) animator); ;
++ scm_c_define_gsubr (s_set_onoff, 2, 0, 0, (void *) set_onoff); ;
++ scm_c_define_gsubr (s_animator_value, 1, 0, 0, (void *) animator_value); ;
++ scm_c_define_gsubr (s_set_animator_direction, 2, 0, 0, (void *) set_animator_direction); ;
++ scm_c_define_gsubr (s_set_animator_position, 2, 0, 0, (void *) set_animator_position); ;
++ scm_c_define_gsubr (s_day, 0, 0, 0, (void *) day); ;
++ scm_c_define_gsubr (s_night, 0, 0, 0, (void *) night); ;
++ scm_c_define_gsubr (s_fog, 0, 1, 0, (void *) fog); ;
++ scm_c_define_gsubr (s_thick_fog, 0, 0, 0, (void *) thick_fog); ;
++ scm_c_define_gsubr (s_fog_color, 3, 0, 0, (void *) fog_color); ;
++ scm_c_define_gsubr (s_set_bonus_level, 1, 0, 0, (void *) set_bonus_level); ;
++ scm_c_define_gsubr (s_set_track_name, 1, 0, 0, (void *) set_track_name); ;
++ scm_c_define_gsubr (s_set_author, 1, 0, 0, (void *) set_author); ;
++ scm_c_define_gsubr (s_start_time, 1, 0, 0, (void *) start_time); ;
++ scm_c_define_gsubr (s_set_time, 1, 0, 0, (void *) set_time); ;
++ scm_c_define_gsubr (s_get_time, 0, 0, 0, (void *) get_time); ;
++ scm_c_define_gsubr (s_add_time, 1, 0, 0, (void *) add_time); ;
++ scm_c_define_gsubr (s_set_score, 1, 0, 0, (void *) set_score); ;
++ scm_c_define_gsubr (s_get_score, 0, 0, 0, (void *) get_score); ;
++ scm_c_define_gsubr (s_add_score, 1, 0, 0, (void *) add_score); ;
++ scm_c_define_gsubr (s_set_start_position, 2, 0, 0, (void *) set_start_position); ;
++ scm_c_define_gsubr (s_snow, 1, 0, 0, (void *) snow); ;
++ scm_c_define_gsubr (s_rain, 1, 0, 0, (void *) rain); ;
++ scm_c_define_gsubr (s_difficulty, 0, 0, 0, (void *) difficulty); ;
++ scm_c_define_gsubr (s_use_grid, 1, 0, 0, (void *) use_grid); ;
++ scm_c_define_gsubr (s_map_is_transparent, 1, 0, 0, (void *) map_is_transparent); ;
++ scm_c_define_gsubr (s_jump, 1, 0, 0, (void *) jump); ;
++ scm_c_define_gsubr (s_scale_oxygen, 1, 0, 0, (void *) scale_oxygen); ;
++ scm_c_define_gsubr (s_set_cell_flag, 6, 0, 0, (void *) set_cell_flag); ;
++ scm_c_define_gsubr (s_set_cell_velocity, 6, 0, 0, (void *) set_cell_velocity); ;
++ scm_c_define_gsubr (s_set_cell_heights, 8, 1, 0, (void *) set_cell_heights); ;
++ scm_c_define_gsubr (s_set_cell_water_heights, 8, 1, 0, (void *) set_cell_water_heights); ;
++ scm_c_define_gsubr (s_set_cell_colors, 8, 1, 0, (void *) set_cell_colors); ;
++ scm_c_define_gsubr (s_set_cell_wall_colors, 8, 1, 0, (void *) set_cell_wall_colors); ;
++ scm_c_define_gsubr (s_play_effect, 1, 0, 0, (void *) play_effect); ;
++ scm_c_define_gsubr (s_camera_angle, 2, 0, 0, (void *) camera_angle); ;
++ scm_c_define_gsubr (s_restart_time, 1, 0, 0, (void *) restart_time); ;
++ scm_c_define_gsubr (s_clear_song_preferences, 0, 0, 0, (void *) clear_song_preferences); ;
++ scm_c_define_gsubr (s_force_next_song, 0, 0, 0, (void *) force_next_song); ;
++ scm_c_define_gsubr (s_set_song_preference, 2, 0, 0, (void *) set_song_preference); ;
++ scm_c_define_gsubr (s_trigger, 4, 0, 0, (void *) trigger); ;
++ scm_c_define_gsubr (s_smart_trigger, 5, 0, 0, (void *) smart_trigger); ;
++ scm_c_define_gsubr (s_on_event, 3, 0, 0, (void *) on_event); ;
++ scm_c_define_gsubr (s_get_event_callback, 2, 0, 0, (void *) get_event_callback); ;
+  s_mod_speed = scm_permanent_object (scm_c_define ("*mod-speed*", scm_long2num(0))); ;
+  s_mod_jump = scm_permanent_object (scm_c_define ("*mod-jump*", scm_long2num(1))); ;
+  s_mod_spike = scm_permanent_object (scm_c_define ("*mod-spike*", scm_long2num(2))); ;
+--- trackballs-1.1.4/src/guile.h	2007-05-17 17:09:28.000000000 +0200
++++ trackballs-1.1.4.new/src/guile.h	2011-05-18 12:46:26.197253216 +0200
+@@ -21,7 +21,6 @@
+ #ifndef GUILE_H
+ #define GUILE_H
+ 
+-#include <guile/gh.h>
+ #include <libguile.h>
+ 
+ void initGuileInterface();
+diff -up trackballs-1.1.4/share/levels/fourSeasons_2.scm~ trackballs-1.1.4/share/levels/fourSeasons_2.scm
+--- trackballs-1.1.4/share/levels/fourSeasons_2.scm~	2004-02-08 21:21:36.000000000 +0100
++++ trackballs-1.1.4/share/levels/fourSeasons_2.scm	2011-05-18 14:40:43.959255037 +0200
+@@ -23,7 +23,7 @@
+ 
+ 
+ (if (> (difficulty) *easy*)
+-	(begin
++	(let ()
+ 	  (define enemy-1 (new-mr-black 198.5 175.5))
+ 	  (if (= (difficulty) *hard*) (set-modtime enemy-1 *mod-spike* -1.))
+ 	  (set-acceleration enemy-1 2.0)
+diff -up trackballs-1.1.4/share/levels/frg5.scm~ trackballs-1.1.4/share/levels/frg5.scm
+--- trackballs-1.1.4/share/levels/frg5.scm~	2006-10-18 19:59:14.000000000 +0200
++++ trackballs-1.1.4/share/levels/frg5.scm	2011-05-18 14:47:09.175255141 +0200
+@@ -26,16 +26,11 @@
+ 
+ (diamond 190.0 182.0)
+ 
++(define speed .3)
+ (cond
+- ((= (difficulty) *easy*)
+-         (define speed .4)
+- )
+- ((= (difficulty) *normal*)
+-         (define speed .3)
+- )
+- ((= (difficulty) *hard*)
+-         (define speed .2)
+- )
++ ((= (difficulty) *easy*) (set! speed .4))
++ ((= (difficulty) *normal*) (set! speed .3))
++ ((= (difficulty) *hard*) (set! speed .2))
+ )
+ 
+ (add-cyclic-platform 204 191 204 191 4.9 6.4 1. speed)
+diff -up trackballs-1.1.4/share/levels/frg9.scm~ trackballs-1.1.4/share/levels/frg9.scm
+--- trackballs-1.1.4/share/levels/frg9.scm~	2006-10-30 21:23:38.000000000 +0100
++++ trackballs-1.1.4/share/levels/frg9.scm	2011-05-18 14:47:04.903255137 +0200
+@@ -65,16 +65,11 @@
+ (add-flag 208 219 30 0 1.5)
+ (add-flag 209 216 30 0 1.5)
+ 
++(define speed .4)
+ (cond
+- ((= (difficulty) *easy*)
+-         (define speed .6)
+- )
+- ((= (difficulty) *normal*)
+-         (define speed .4)
+- )
+- ((= (difficulty) *hard*)
+-         (define speed .2)
+- )
++ ((= (difficulty) *easy*) (set! speed .6))
++ ((= (difficulty) *normal*) (set! speed .4))
++ ((= (difficulty) *hard*) (set! speed .2))
+ )
+ 
+ (add-cyclic-platform 220 238 220 238 3.0 5.0 1. speed)
+diff -up trackballs-1.1.4/share/levels/hxtst.scm~ trackballs-1.1.4/share/levels/hxtst.scm
+--- trackballs-1.1.4/share/levels/hxtst.scm~	2003-03-29 23:59:44.000000000 +0100
++++ trackballs-1.1.4/share/levels/hxtst.scm	2011-05-18 14:41:57.399255057 +0200
+@@ -26,7 +26,7 @@
+ 
+ ;; This would create a forcefield and a switch turning it on/off
+ (if (= (difficulty) *hard*)
+-	(begin
++	(let ()
+ 	  (define ff (forcefield 251.5 250.5 0.0 
+ 							 2.0 0.0 0.0 
+ 							 0.5 *ff-kill*))
+diff -up trackballs-1.1.4/share/levels/lv1.scm~ trackballs-1.1.4/share/levels/lv1.scm
+--- trackballs-1.1.4/share/levels/lv1.scm~	2007-05-25 16:58:49.000000000 +0200
++++ trackballs-1.1.4/share/levels/lv1.scm	2011-05-18 14:37:40.552254989 +0200
+@@ -39,7 +39,7 @@
+ 
+ ;; This creates a forcefield and a switch turning it on/off
+ (if (= (difficulty) *hard*)
+-    (begin
++    (let ()
+       (define ff (forcefield 251.5 250.5 0.0 
+ 			     2.0 0.0 0.0 
+ 			     0.5 *ff-kill*))
+diff -up trackballs-1.1.4/src/mmad.cc~ trackballs-1.1.4/src/mmad.cc
+--- trackballs-1.1.4/src/mmad.cc~	2011-05-18 12:58:04.000000000 +0200
++++ trackballs-1.1.4/src/mmad.cc	2011-05-18 14:54:00.999255250 +0200
+@@ -38,6 +38,7 @@ char *SHARE_DIR_DEFAULT=SHARE_DIR;
+ #include "hofMode.h"
+ #include <SDL/SDL_image.h>
+ #include <unistd.h>
++#include <stdlib.h>
+ #include <settingsMode.h>
+ #include <settings.h>
+ #include <setupMode.h>
+@@ -554,6 +555,9 @@ int main(int argc,char **argv) {
+   char guileLoadPath[256+16];/*longest effective share directory plus"GUILE_LOAD_PATH="*/
+   program_name = argv[0];
+ 
++  /* Disable guile deprecated warning, unless explicitly requested */
++  setenv("GUILE_WARN_DEPRECATED", "no", 0);
++
+   /*** Autmatic detection of SHARE_DIR ***/
+   effectiveShareDir[0]=0;
+   /* From environment variable */
diff --git a/trackballs-1.1.4-remove-old-sdl-workarounds.patch b/trackballs-1.1.4-remove-old-sdl-workarounds.patch
new file mode 100644
index 0000000..21c9a58
--- /dev/null
+++ b/trackballs-1.1.4-remove-old-sdl-workarounds.patch
@@ -0,0 +1,117 @@
+diff -up trackballs-1.1.4/src/gameMode.cc~ trackballs-1.1.4/src/gameMode.cc
+--- trackballs-1.1.4/src/gameMode.cc~	2006-08-06 14:01:39.000000000 +0200
++++ trackballs-1.1.4/src/gameMode.cc	2011-05-18 15:51:03.320256212 +0200
+@@ -26,9 +26,8 @@ using namespace std;
+ 
+ GameMode *GameMode::current;
+ 
+-GameMode::GameMode() { keyUpReceived=1; }
+-GameMode::~GameMode() {
+-}
++GameMode::GameMode() {}
++GameMode::~GameMode() {}
+ void GameMode::activate(GameMode* gm) { 
+   if(current) current->deactivated();
+   current = gm; 
+@@ -36,7 +35,6 @@ void GameMode::activate(GameMode* gm) { 
+ }
+ void GameMode::display(){}
+ void GameMode::key(int){}
+-void GameMode::keyUp(int){ keyUpReceived=1; }
+ void GameMode::special(int key,int x,int y){}
+ void GameMode::idle(Real td){}
+ void GameMode::mouse(int state,int x,int y){}
+diff -up trackballs-1.1.4/src/gameMode.h~ trackballs-1.1.4/src/gameMode.h
+--- trackballs-1.1.4/src/gameMode.h~	2006-08-06 14:01:20.000000000 +0200
++++ trackballs-1.1.4/src/gameMode.h	2011-05-18 15:49:50.760256145 +0200
+@@ -33,7 +33,6 @@ class GameMode {
+ 
+   virtual void display();
+   virtual void key(int);
+-  virtual void keyUp(int);
+   virtual void special(int,int,int);
+   virtual void idle(Real dt);
+   virtual void doExpensiveComputations();
+@@ -44,9 +43,6 @@ class GameMode {
+ 
+   static void activate(GameMode*);
+   static GameMode *current;
+- protected:
+-  int keyUpReceived;
+- private:
+ };
+ 
+ #endif
+diff -up trackballs-1.1.4/src/mainMode.cc~ trackballs-1.1.4/src/mainMode.cc
+--- trackballs-1.1.4/src/mainMode.cc~	2007-05-25 12:23:50.000000000 +0200
++++ trackballs-1.1.4/src/mainMode.cc	2011-05-18 15:45:44.458256059 +0200
+@@ -464,11 +464,6 @@ void MainMode::activated() {
+   camFocus[1] = Game::current->map->startPosition[1] - 5;
+   time = 0.0;
+   flash = 0.0;
+-
+-  /* Fix for an apparanet bug in my SDL + Xorg combination... */
+-  SDL_WM_ToggleFullScreen(screen);
+-  SDL_WM_ToggleFullScreen(screen);
+-
+ }
+ void MainMode::deactivated() { free(viewportData); viewportData=NULL; }
+ void MainMode::playerLoose() { Game::current->gamer->playerLoose(); gameStatus=statusGameOver; }
+diff -up trackballs-1.1.4/src/mmad.cc~ trackballs-1.1.4/src/mmad.cc
+--- trackballs-1.1.4/src/mmad.cc~	2011-05-18 14:55:38.000000000 +0200
++++ trackballs-1.1.4/src/mmad.cc	2011-05-18 16:11:33.817256492 +0200
+@@ -411,7 +411,6 @@ void innerMain(void *closure,int argc,ch
+   /* Initialize random number generator */
+   int seed=(int) getSystemTime();
+   srand(seed);
+-  int keyUpReceived=1;
+ 
+   while(is_running) {
+ 
+@@ -469,9 +468,6 @@ void innerMain(void *closure,int argc,ch
+ 	    if(GameMode::current) GameMode::current->mouseDown(e->button,e->x,e->y);
+ 	    break;
+ 	  case SDL_KEYUP:
+-	    /* Prevent repeated keys */
+-	    keyUpReceived=1;
+-
+ 	    /* Use Caps lock key to determine if mouse should be hidden+grabbed */
+ 	    if(event.key.keysym.sym == SDLK_CAPSLOCK) {	  
+ 	      if(SDL_GetModState() & KMOD_CAPS) {
+@@ -481,12 +477,12 @@ void innerMain(void *closure,int argc,ch
+ 		SDL_WM_GrabInput(SDL_GRAB_ON);
+ 		SDL_ShowCursor(SDL_DISABLE);
+ 	      }
+-	    } else
+-	      GameMode::current->keyUp(event.key.keysym.sym);
++	    }
++	    break;
+ 	  case SDL_KEYDOWN:
+-
+ 	    /* Always quit if the 'q' key is pressed */
+-	    if(event.key.keysym.sym == 'q' && SDL_GetModState() & KMOD_CTRL) exit(0);
++	    if(event.key.keysym.sym == 'q' && SDL_GetModState() & KMOD_CTRL)
++	      exit(0);
+ 
+ 	    /* Change between fullscreen/windowed mode if the 'f' key
+ 	       is pressed */
+@@ -525,14 +521,13 @@ void innerMain(void *closure,int argc,ch
+ 		((EditMode*)GameMode::current)->askQuit();
+ 	      } else if((GameMode::current && GameMode::current == MenuMode::menuMode))
+ 		is_running=0;
+-	      else { GameMode::activate(MenuMode::menuMode); while(SDL_PollEvent(&event)) {} }
+-
++	      else {
++	        GameMode::activate(MenuMode::menuMode);
++	        while(SDL_PollEvent(&event)) {}
++              }
+ 	    }
+-	    else if(GameMode::current) {
+-	      /* Prevent repeated keys */
+-	      if(!keyUpReceived) break;
+-	      keyUpReceived=0;
+ 
++	    else if(GameMode::current) {
+ 	      GameMode::current->key(event.key.keysym.sym);
+ 	    }
+ 
diff --git a/trackballs.spec b/trackballs.spec
index 2d46913..f3d8b20 100644
--- a/trackballs.spec
+++ b/trackballs.spec
@@ -1,6 +1,6 @@
 Name:           trackballs
 Version:        1.1.4
-Release:        14%{?dist}
+Release:        15%{?dist}
 Summary:        Steer a marble ball through a labyrinth
 Group:          Amusements/Games
 License:        GPLv2+
@@ -11,6 +11,8 @@ Patch0:         trackballs-1.1.4-destdir.patch
 Patch1:         trackballs-1.1.4-black-vertices-fix.patch
 Patch2:         trackballs-1.1.4-rh555877.patch
 Patch3:         trackballs-1.1.4-rh667236.patch
+Patch4:         trackballs-1.1.4-guile20.patch
+Patch5:         trackballs-1.1.4-remove-old-sdl-workarounds.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
@@ -28,6 +30,8 @@ quality soundeffects and background music.
 %patch1 -p1
 %patch2 -p1
 %patch3 -p1
+%patch4 -p1
+%patch5 -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
@@ -85,6 +89,11 @@ fi
 
 
 %changelog
+* Wed May 18 2011 Hans de Goede <hdegoede at redhat.com> - 1.1.4-15
+- Fix building and running with guile-2.0 (rhbz#704536)
+- Fix "Esc" sometimes directly exiting the game instead of taking you back to
+  the main menu
+
 * Wed Feb 09 2011 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 1.1.4-14
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
 


More information about the scm-commits mailing list