rpms/fakenes/F-9 fakenes-0.5.8-alutinit.patch, NONE, 1.1 fakenes-0.5.8-driver-switch.patch, NONE, 1.1 fakenes-0.5.8-menu-exit.patch, NONE, 1.1 fakenes.desktop, NONE, 1.1 fakenes.spec, NONE, 1.1 .cvsignore, 1.1, 1.2 sources, 1.1, 1.2

Hans de Goede jwrdegoede at rpmfusion.org
Thu Jul 24 13:41:55 CEST 2008


Author: jwrdegoede

Update of /cvs/free/rpms/fakenes/F-9
In directory se02.es.rpmfusion.net:/tmp/cvs-serv8429

Modified Files:
	.cvsignore sources 
Added Files:
	fakenes-0.5.8-alutinit.patch fakenes-0.5.8-driver-switch.patch 
	fakenes-0.5.8-menu-exit.patch fakenes.desktop fakenes.spec 
Log Message:
* Thu Jul 24 2008 Hans de Goede <j.w.r.degoede at hhs.nl> 0.5.8-5
- Release bump for rpmfusion


fakenes-0.5.8-alutinit.patch:

--- NEW FILE fakenes-0.5.8-alutinit.patch ---
--- fakenes-0.5.8/src/audiolib.c.alutinit	2006-04-24 23:21:22.000000000 +0200
+++ fakenes-0.5.8/src/audiolib.c	2006-08-13 00:41:18.000000000 +0200
@@ -415,8 +415,13 @@
    /* Interpolation is not supported. */
    audio_interpolation = FALSE;
 
-   alutInit (&saved_argc, saved_argv);
-   AL_CHECK();
+   if(!alutInit (&saved_argc, saved_argv))
+   {
+      /* make sure other openal functions don't get called as that causes
+         crashes */
+      audiolib_driver = NULL; 
+      return (1);
+   }
 
    /* Autodetect settings. */
 

fakenes-0.5.8-driver-switch.patch:

--- NEW FILE fakenes-0.5.8-driver-switch.patch ---
--- fakenes-0.5.8/src/gui.c.driver	2006-04-26 15:20:24.000000000 +0200
+++ fakenes-0.5.8/src/gui.c	2006-08-11 22:30:57.000000000 +0200
@@ -237,55 +237,58 @@
    TOGGLE_MENU_ITEM(audio_channels_menu_extended_2,    dsp_get_channel_enabled (APU_CHANNEL_EXTRA_2));
    TOGGLE_MENU_ITEM(audio_channels_menu_extended_3,    dsp_get_channel_enabled (APU_CHANNEL_EXTRA_3));
 
+   TOGGLE_MENU_ITEM(video_driver_menu_automatic, (menu_video_driver == GFX_AUTODETECT));
+
 #ifdef ALLEGRO_DOS
 
-   TOGGLE_MENU_ITEM(video_driver_dos_menu_vga,           (gfx_driver->id == GFX_VGA));
-   TOGGLE_MENU_ITEM(video_driver_dos_menu_vga_mode_x,    (gfx_driver->id == GFX_MODEX));
-   TOGGLE_MENU_ITEM(video_driver_dos_menu_vesa,          (gfx_driver->id == GFX_VESA1));
-   TOGGLE_MENU_ITEM(video_driver_dos_menu_vesa_2_banked, (gfx_driver->id == GFX_VESA2B));
-   TOGGLE_MENU_ITEM(video_driver_dos_menu_vesa_2_linear, (gfx_driver->id == GFX_VESA2L));
-   TOGGLE_MENU_ITEM(video_driver_dos_menu_vesa_3,        (gfx_driver->id == GFX_VESA3));
-   TOGGLE_MENU_ITEM(video_driver_dos_menu_vesa_vbe_af,   (gfx_driver->id == GFX_VBEAF));
+   TOGGLE_MENU_ITEM(video_driver_dos_menu_vga,           (menu_video_driver == GFX_VGA));
+   TOGGLE_MENU_ITEM(video_driver_dos_menu_vga_mode_x,    (menu_video_driver == GFX_MODEX));
+   TOGGLE_MENU_ITEM(video_driver_dos_menu_vesa,          (menu_video_driver == GFX_VESA1));
+   TOGGLE_MENU_ITEM(video_driver_dos_menu_vesa_2_banked, (menu_video_driver == GFX_VESA2B));
+   TOGGLE_MENU_ITEM(video_driver_dos_menu_vesa_2_linear, (menu_video_driver == GFX_VESA2L));
+   TOGGLE_MENU_ITEM(video_driver_dos_menu_vesa_3,        (menu_video_driver == GFX_VESA3));
+   TOGGLE_MENU_ITEM(video_driver_dos_menu_vesa_vbe_af,   (menu_video_driver == GFX_VBEAF));
 
 #endif   /* ALLEGRO_DOS */
 
 #ifdef ALLEGRO_WINDOWS
 
-   TOGGLE_MENU_ITEM(video_driver_windows_menu_directx,         (gfx_driver->id == GFX_DIRECTX));
-   TOGGLE_MENU_ITEM(video_driver_windows_menu_directx_window,  (gfx_driver->id == GFX_DIRECTX_WIN));
-   TOGGLE_MENU_ITEM(video_driver_windows_menu_directx_overlay, (gfx_driver->id == GFX_DIRECTX_OVL));
-   TOGGLE_MENU_ITEM(video_driver_windows_menu_gdi,             (gfx_driver->id == GFX_GDI));
+   TOGGLE_MENU_ITEM(video_driver_windows_menu_directx,         (menu_video_driver == GFX_DIRECTX));
+   TOGGLE_MENU_ITEM(video_driver_windows_menu_directx_window,  (menu_video_driver == GFX_DIRECTX_WIN));
+   TOGGLE_MENU_ITEM(video_driver_windows_menu_directx_overlay, (menu_video_driver == GFX_DIRECTX_OVL));
+   TOGGLE_MENU_ITEM(video_driver_windows_menu_gdi,             (menu_video_driver == GFX_GDI));
 
 #endif   /* ALLEGRO_WINDOWS */
 
 #ifdef ALLEGRO_LINUX
 
-   TOGGLE_MENU_ITEM(video_driver_linux_menu_vga,         (gfx_driver->id == GFX_VGA));
-   TOGGLE_MENU_ITEM(video_driver_linux_menu_vga_mode_x,  (gfx_driver->id == GFX_MODEX));
-   TOGGLE_MENU_ITEM(video_driver_linux_menu_vesa_vbe_af, (gfx_driver->id == GFX_VBEAF));
+   TOGGLE_MENU_ITEM(video_driver_linux_menu_vga,         (menu_video_driver == GFX_VGA));
+   TOGGLE_MENU_ITEM(video_driver_linux_menu_vga_mode_x,  (menu_video_driver == GFX_MODEX));
+   TOGGLE_MENU_ITEM(video_driver_linux_menu_vesa_vbe_af, (menu_video_driver == GFX_VBEAF));
 #ifdef GFX_FBCON
-   TOGGLE_MENU_ITEM(video_driver_linux_menu_framebuffer, (gfx_driver->id == GFX_FBCON));
+   TOGGLE_MENU_ITEM(video_driver_linux_menu_framebuffer, (menu_video_driver == GFX_FBCON));
 #endif
 #ifdef GFX_SVGALIB
-   TOGGLE_MENU_ITEM(video_driver_linux_menu_svgalib,     (gfx_driver->id == GFX_SVGALIB));
+   TOGGLE_MENU_ITEM(video_driver_linux_menu_svgalib,     (menu_video_driver == GFX_SVGALIB));
 #endif
 
 #endif   /* ALLEGRO_LINUX */
 
 #ifdef ALLEGRO_UNIX
 
-   TOGGLE_MENU_ITEM(video_driver_unix_menu_x_windows,      (gfx_driver->id == GFX_XWINDOWS));
-   TOGGLE_MENU_ITEM(video_driver_unix_menu_x_windows_full, (gfx_driver->id == GFX_XWINDOWS_FULLSCREEN));
-   TOGGLE_MENU_ITEM(video_driver_unix_menu_x_dga,          (gfx_driver->id == GFX_XDGA));
-   TOGGLE_MENU_ITEM(video_driver_unix_menu_x_dga_full,     (gfx_driver->id == GFX_XDGA_FULLSCREEN));
-   TOGGLE_MENU_ITEM(video_driver_unix_menu_x_dga_2,        (gfx_driver->id == GFX_XDGA2));
+   TOGGLE_MENU_ITEM(video_driver_unix_menu_x_windows,      (menu_video_driver == GFX_XWINDOWS));
+   TOGGLE_MENU_ITEM(video_driver_unix_menu_x_windows_full, (menu_video_driver == GFX_XWINDOWS_FULLSCREEN));
+   TOGGLE_MENU_ITEM(video_driver_unix_menu_x_dga,          (menu_video_driver == GFX_XDGA));
+   TOGGLE_MENU_ITEM(video_driver_unix_menu_x_dga_full,     (menu_video_driver == GFX_XDGA_FULLSCREEN));
+   TOGGLE_MENU_ITEM(video_driver_unix_menu_x_dga_2,        (menu_video_driver == GFX_XDGA2));
 
 #endif   /* ALLEGRO_UNIX */
 
 #ifdef USE_ALLEGROGL
 
-   TOGGLE_MENU_ITEM(video_driver_menu_opengl_full, (gfx_driver->id == GFX_OPENGL_FULLSCREEN));
-   TOGGLE_MENU_ITEM(video_driver_menu_opengl_win,  (gfx_driver->id == GFX_OPENGL_WINDOWED));
+   TOGGLE_MENU_ITEM(video_driver_menu_opengl,      (menu_video_driver == GFX_OPENGL));
+   TOGGLE_MENU_ITEM(video_driver_menu_opengl_full, (menu_video_driver == GFX_OPENGL_FULLSCREEN));
+   TOGGLE_MENU_ITEM(video_driver_menu_opengl_win,  (menu_video_driver == GFX_OPENGL_WINDOWED));
 
 #endif   /* USE_ALLEGROGL */
 
--- fakenes-0.5.8/src/video.c.driver	2006-04-24 22:27:32.000000000 +0200
+++ fakenes-0.5.8/src/video.c	2006-08-11 22:29:11.000000000 +0200
@@ -62,7 +62,13 @@
 BOOL video_force_fullscreen = FALSE;
 int video_cached_color_depth = 0;   /* Read only. */
 
-int video_driver = 0;
+/* 2 versions of video driver "video_driver" contains the one actually used,
+   "menu_video_driver" contains the one configured by the user from the
+   menu, this can be different from the one actually used, because hot
+   switching between regular allegro drivers and alleggl drivers is not
+   supported. */
+static int video_driver = 0;
+int menu_video_driver = 0;
 
 BITMAP *base_video_buffer = NULL;
 BITMAP *video_buffer = NULL;
@@ -139,6 +145,7 @@
    int width, height;
    int result;
    const CHAR *font_file;
+   static BOOL firsttime = TRUE;
 
    log_printf ("VIDEO: Entering video_init().");
 
@@ -152,7 +159,15 @@
 
    log_printf ("VIDEO: Loading configuration.");
 
-   video_driver             = get_config_id  ("video", "driver",             video_driver);
+   /* only load the video driver once, after the first time the config setting
+      will reflect menu_video_driver, and we will want to continue using the
+      real thing. */
+   if (firsttime)
+   {
+      video_driver          = get_config_id  ("video", "driver",             video_driver);
+      menu_video_driver     = video_driver;
+      firsttime             = FALSE;
+   }
    screen_width             = get_config_int ("video", "screen_width",       screen_width);
    screen_height            = get_config_int ("video", "screen_height",      screen_height);
    color_depth              = get_config_int ("video", "color_depth",        color_depth);
@@ -576,7 +591,7 @@
 
    log_printf ("VIDEO: Saving configuration.");
 
-   set_config_id  ("video", "driver",             video_driver);
+   set_config_id  ("video", "driver",             menu_video_driver);
    set_config_int ("video", "screen_width",       screen_width);
    set_config_int ("video", "screen_height",      screen_height);
    set_config_int ("video", "color_depth",        color_depth);
@@ -1639,13 +1654,29 @@
 void video_set_driver (int driver)
 {
     int old_driver;
+#ifdef USE_ALLEGROGL
+    BOOL driver_is_opengl = (driver == GFX_OPENGL) ||
+       (driver == GFX_OPENGL_FULLSCREEN) ||
+       (driver == GFX_OPENGL_WINDOWED);
+#endif
 
-
-    if (gfx_driver -> id == driver)
+    if (menu_video_driver == driver)
     {
         return;
     }
 
+#ifdef USE_ALLEGROGL
+    if ((driver_is_opengl && !video_is_opengl_mode()) ||
+        (!driver_is_opengl && video_is_opengl_mode()))
+    {
+        gui_alert ("Notification",
+           "In order for the new driver",
+           "you've choisen to come into effect.",
+           "You must exit and restart fakenes.", "&OK", 0, 0, 0);
+        menu_video_driver = driver;
+        return;
+    }
+#endif   /* USE_ALLEGROGL */
 
     old_driver = gfx_driver -> id;
 
@@ -1673,6 +1704,11 @@
     preserve_video_buffer = FALSE;
 
     preserve_palette = FALSE;
+
+    if (video_driver == GFX_AUTODETECT)
+      menu_video_driver = GFX_AUTODETECT;
+    else
+      menu_video_driver = gfx_driver -> id;
 }
 
 
--- fakenes-0.5.8/src/include/video.h.driver	2006-04-24 02:54:48.000000000 +0200
+++ fakenes-0.5.8/src/include/video.h	2006-08-11 22:29:11.000000000 +0200
@@ -49,7 +49,7 @@
 BOOL video_force_fullscreen;
 int video_cached_color_depth; /* Read only. */
 
-int video_driver;
+int menu_video_driver;
    
 BITMAP *base_video_buffer;
 BITMAP *video_buffer;

fakenes-0.5.8-menu-exit.patch:

--- NEW FILE fakenes-0.5.8-menu-exit.patch ---
--- fakenes-0.5.8/src/main.c.fixes	2006-08-11 11:25:48.000000000 +0200
+++ fakenes-0.5.8/src/main.c	2006-08-11 11:27:49.000000000 +0200
@@ -652,6 +649,8 @@
             rest (0);
          }
       }
+      else /* If no rom was loaded and the menu exited, exit the emulator */
+         want_exit = TRUE;
    }
 
 


--- NEW FILE fakenes.desktop ---
[Desktop Entry]
Encoding=UTF-8
Name=Fakenes
Comment=Nintendo Entertainment System emulator
Exec=fakenes
Icon=fakenes.png
Terminal=false
Type=Application
Categories=Game;Emulator;


--- NEW FILE fakenes.spec ---
Name:           fakenes
Version:        0.5.8
Release:        5%{?dist}
Summary:        Nintendo Entertainment System emulator
Group:          Amusements/Games
License:        Artistic
URL:            http://fakenes.sourceforge.net/
Source0:        http://dl.sf.net/sourceforge/%{name}/%{name}-%{version}.tar.bz2
Source1:        %{name}.desktop
Patch0:         fakenes-0.5.8-menu-exit.patch
Patch1:         fakenes-0.5.8-driver-switch.patch
Patch2:         fakenes-0.5.8-alutinit.patch
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires:  allegro-devel alleggl-devel zlib-devel openal-devel
BuildRequires:  libGLU-devel freealut-devel desktop-file-utils
Requires:       hicolor-icon-theme

%description
FakeNES is an Open Source NES emulator.  It uses the excellent Allegro
multimedia library for input, graphics, and sound effects/music across
various platforms.  It is written in 100% C, and was originally designed to
run on DOS and Microsoft Windows, but now features a POSIX build system as
well.  There are also official builds available for Mac OS X.


%prep
%setup -q
%patch0 -p1 -z .menu
%patch1 -p1 -z .driver
%patch2 -p1 -z .alutinit
sed -i 's/\r//' docs/faq.html


%build
export CFLAGS="$RPM_OPT_FLAGS -ffast-math"
make cbuild
./cbuild --verbose


%install
rm -rf $RPM_BUILD_ROOT
install -D -m 755 %{name} $RPM_BUILD_ROOT%{_bindir}/%{name}
# below is the desktop file and icon stuff.
mkdir -p $RPM_BUILD_ROOT%{_datadir}/applications
desktop-file-install --vendor dribble           \
  --dir $RPM_BUILD_ROOT%{_datadir}/applications \
  %{SOURCE1}
mkdir -p $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/32x32/apps
install -p -m 644 support/icon-32x32.png \
  $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/32x32/apps/%{name}.png


%clean
rm -rf $RPM_BUILD_ROOT


%post
touch --no-create %{_datadir}/icons/hicolor || :
%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :

%postun
touch --no-create %{_datadir}/icons/hicolor || :
%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :


%files
%defattr(-, root, root)
%doc docs/CHANGES docs/LICENSE docs/README docs/faq.html
%{_bindir}/%{name}
%{_datadir}/applications/dribble-%{name}.desktop
%{_datadir}/icons/hicolor/32x32/apps/%{name}.png


%changelog
* Thu Jul 24 2008 Hans de Goede <j.w.r.degoede at hhs.nl> 0.5.8-5
- Release bump for rpmfusion

* Sat Mar 10 2007 Hans de Goede <j.w.r.degoede at hhs.nl> 0.5.8-4%{?dist}
- Fixup .desktop file categories for games-menus usage

* Sat Aug 12 2006 Hans de Goede <j.w.r.degoede at hhs.nl> 0.5.8-3%{?dist}
- Fix crash when using openAL sound and openAL couldn't open the audiodevice

* Fri Aug 11 2006 Hans de Goede <j.w.r.degoede at hhs.nl> 0.5.8-2%{?dist}
- Fix emulator hanging when pressing ESC in the main menu without a rom loaded
- Fix emulator crashing when switching between normal and opengl video modes
- Use %%{_bindir} instead of /usr/bin in %%install

* Thu Aug  3 2006 Hans de Goede <j.w.r.degoede at hhs.nl> 0.5.8-1%{?dist}
- Initial Fedora Extras package


Index: .cvsignore
===================================================================
RCS file: /cvs/free/rpms/fakenes/F-9/.cvsignore,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- .cvsignore	1 Jun 2008 11:39:09 -0000	1.1
+++ .cvsignore	24 Jul 2008 11:41:54 -0000	1.2
@@ -0,0 +1 @@
+fakenes-0.5.8.tar.bz2


Index: sources
===================================================================
RCS file: /cvs/free/rpms/fakenes/F-9/sources,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- sources	1 Jun 2008 11:39:09 -0000	1.1
+++ sources	24 Jul 2008 11:41:54 -0000	1.2
@@ -0,0 +1 @@
+bc2650c42c63f18326d03e932245a787  fakenes-0.5.8.tar.bz2



More information about the rpmfusion-commits mailing list