From 203ae72c553b0a4c37693226378ccd84e186e512 Mon Sep 17 00:00:00 2001 From: Thierry N Date: Fri, 21 Aug 2009 21:33:11 +0200 Subject: xmms, maj pour la 64 --- extra/xmms/.md5sum | 3 + extra/xmms/Pkgfile | 16 +- extra/xmms/aclocal-fixes.patch | 11 + extra/xmms/xmms-1.2.10-crossfade-0.3.9.patch | 101 ++++++ extra/xmms/xmms-1.2.10-fonts.patch | 24 ++ extra/xmms/xmms-1.2.10-recode-id3.patch | 11 + extra/xmms/xmms-1.2.11-3dse.patch | 503 +++++++++++++++++++++++++++ extra/xmms/xmms-fix.diff | 11 + extra/xmms/xmms-menu.patch | 35 ++ 9 files changed, 709 insertions(+), 6 deletions(-) create mode 100644 extra/xmms/aclocal-fixes.patch create mode 100644 extra/xmms/xmms-1.2.10-crossfade-0.3.9.patch create mode 100644 extra/xmms/xmms-1.2.10-fonts.patch create mode 100644 extra/xmms/xmms-1.2.10-recode-id3.patch create mode 100644 extra/xmms/xmms-1.2.11-3dse.patch create mode 100644 extra/xmms/xmms-fix.diff create mode 100644 extra/xmms/xmms-menu.patch diff --git a/extra/xmms/.md5sum b/extra/xmms/.md5sum index 8ee404be4..b5cf18636 100644 --- a/extra/xmms/.md5sum +++ b/extra/xmms/.md5sum @@ -1,4 +1,7 @@ +c59d4906602d99a7468f7334b6fc3b4e aclocal-fixes.patch +4eb222111a82a2e1ebe63b5f6109133d xmms-1.2.10-crossfade-0.3.9.patch f3e6dbaf0b3f571a532ab575656be506 xmms-1.2.11.tar.bz2 +b7b6f1811bad8d14e4c4534240e45980 xmms-menu.patch a85801bc71c1a9029200b1a7db8ea6bf xmms.desktop 0790782dacd3393f2869f18645ec0068 xmms.desktop.ede c44991de23103c270a5964e293075af7 xmms.png diff --git a/extra/xmms/Pkgfile b/extra/xmms/Pkgfile index ac43e5dec..b9d117893 100755 --- a/extra/xmms/Pkgfile +++ b/extra/xmms/Pkgfile @@ -8,14 +8,18 @@ name=xmms version=1.2.11 release=3 source=( http://www.xmms.org/files/1.2.x/$name-$version.tar.bz2\ - xmms.desktop xmms.desktop.ede xmms.png) + xmms-menu.patch xmms-1.2.10-crossfade-0.3.9.patch xmms.desktop xmms.desktop.ede xmms.png aclocal-fixes.patch) build() { - cd $name-$version - ./configure --prefix=/usr \ - --mandir=/usr/share/man \ - --infodir=/usr/share/info - make +cd $name-$version +patch -p0 < ../xmms-menu.patch +patch -p1 < ../xmms-1.2.10-crossfade-0.3.9.patch +if [ "`uname -m`" == "x86_64" ]; then + ./configure --prefix=/usr --mandir=/usr/share/man --disable-mikmod --disable-simd || return 1 # for x86_64 +else + ./configure --prefix=/usr --mandir=/usr/share/man --disable-mikmod --enable-simd || return 1 # for i686 +fi +make make DESTDIR=$PKG install mkdir -p $PKG/usr/share/{applications,pixmaps} install -m 644 ../xmms.desktop $PKG/usr/share/applications/ diff --git a/extra/xmms/aclocal-fixes.patch b/extra/xmms/aclocal-fixes.patch new file mode 100644 index 000000000..dd2ffbd44 --- /dev/null +++ b/extra/xmms/aclocal-fixes.patch @@ -0,0 +1,11 @@ +--- gtk.m4.orig 2006-03-05 13:18:09.000000000 +0000 ++++ gtk.m4 2006-03-05 13:18:20.000000000 +0000 +@@ -4,7 +4,7 @@ + dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) + dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS + dnl +-AC_DEFUN(AM_PATH_GTK, ++AC_DEFUN([AM_PATH_GTK], + [dnl + dnl Get the cflags and libraries from the gtk-config script + dnl diff --git a/extra/xmms/xmms-1.2.10-crossfade-0.3.9.patch b/extra/xmms/xmms-1.2.10-crossfade-0.3.9.patch new file mode 100644 index 000000000..51c51671c --- /dev/null +++ b/extra/xmms/xmms-1.2.10-crossfade-0.3.9.patch @@ -0,0 +1,101 @@ +diff -ur xmms-1.2.10/xmms/input.c xmms-1.2.10.patched/xmms/input.c +--- xmms-1.2.10/xmms/input.c 2003-08-08 19:10:44.000000000 +0200 ++++ xmms-1.2.10.patched/xmms/input.c 2005-11-25 00:12:36.000000000 +0100 +@@ -285,6 +285,14 @@ + } + } + ++gboolean input_stopped_for_restart = FALSE; /* crossfade */ ++void input_stop_for_restart() /* crossfade */ ++{ ++ input_stopped_for_restart = TRUE; ++ input_stop(); ++ input_stopped_for_restart = FALSE; ++} ++ + void input_stop(void) + { + if (ip_data->playing && get_current_input_plugin()) +diff -ur xmms-1.2.10/xmms/input.h xmms-1.2.10.patched/xmms/input.h +--- xmms-1.2.10/xmms/input.h 2000-02-16 22:05:57.000000000 +0100 ++++ xmms-1.2.10.patched/xmms/input.h 2005-11-25 00:12:36.000000000 +0100 +@@ -34,6 +34,7 @@ + gboolean input_check_file(gchar * filename); + void input_play(char *filename); + void input_stop(void); ++void input_stop_for_restart(void); + void input_pause(void); + int input_get_time(void); + void input_set_eq(int on, float preamp, float *bands); +diff -ur xmms-1.2.10/xmms/main.c xmms-1.2.10.patched/xmms/main.c +--- xmms-1.2.10/xmms/main.c 2004-02-23 21:31:43.000000000 +0100 ++++ xmms-1.2.10.patched/xmms/main.c 2005-11-25 00:12:36.000000000 +0100 +@@ -881,8 +881,10 @@ + mainwin_set_shade(!cfg.player_shaded); + } + ++gboolean is_quitting = FALSE; /* crossfade */ + void mainwin_quit_cb(void) + { ++ is_quitting = TRUE; /* crossfade */ + input_stop(); + gtk_widget_hide(equalizerwin); + gtk_widget_hide(playlistwin); +@@ -1523,7 +1525,8 @@ + int *pos; + + if (get_input_playing()) +- input_stop(); ++ input_stop_for_restart(); ++ + pos = gtk_clist_get_row_data(clist, GPOINTER_TO_INT(clist->selection->data)); + playlist_set_position(*pos); + playlist_play(); +diff -ur xmms-1.2.10/xmms/playlist.c xmms-1.2.10.patched/xmms/playlist.c +--- xmms-1.2.10/xmms/playlist.c 2004-02-23 21:31:43.000000000 +0100 ++++ xmms-1.2.10.patched/xmms/playlist.c 2005-11-25 00:12:36.000000000 +0100 +@@ -124,7 +124,7 @@ + if (get_input_playing()) + { + PL_UNLOCK(); +- input_stop(); ++ input_stop_for_restart(); + PL_LOCK(); + *restart_playing = TRUE; + } +@@ -570,7 +570,7 @@ + } + + if (get_input_playing()) +- input_stop(); ++ input_stop_for_restart(); + + vis_clear_data(mainwin_vis); + vis_clear_data(playlistwin_vis); +@@ -668,7 +668,7 @@ + { + /* We need to stop before changing playlist_position */ + PL_UNLOCK(); +- input_stop(); ++ input_stop_for_restart(); + PL_LOCK(); + restart_playing = TRUE; + } +@@ -723,7 +723,7 @@ + { + /* We need to stop before changing playlist_position */ + PL_UNLOCK(); +- input_stop(); ++ input_stop_for_restart(); + PL_LOCK(); + restart_playing = TRUE; + } +@@ -852,7 +852,7 @@ + { + /* We need to stop before changing playlist_position */ + PL_UNLOCK(); +- input_stop(); ++ input_stop_for_restart(); + PL_LOCK(); + restart_playing = TRUE; + } diff --git a/extra/xmms/xmms-1.2.10-fonts.patch b/extra/xmms/xmms-1.2.10-fonts.patch new file mode 100644 index 000000000..87cd9a8ee --- /dev/null +++ b/extra/xmms/xmms-1.2.10-fonts.patch @@ -0,0 +1,24 @@ +--- xmms-1.2.10/xmms/main.c.fonts 2004-08-10 22:16:06.000000000 +0200 ++++ xmms-1.2.10/xmms/main.c 2004-08-12 11:49:17.905598843 +0200 +@@ -351,7 +351,8 @@ + cfg.no_playlist_advance = FALSE; + cfg.smooth_title_scroll = TRUE; + cfg.random_skin_on_play = FALSE; +- cfg.mainwin_use_xfont = FALSE; ++ cfg.mainwin_use_xfont = TRUE; ++ cfg.use_fontsets = TRUE; + cfg.use_pl_metadata = TRUE; + + cfg.playlist_x = 295; +@@ -499,9 +500,9 @@ + cfg.mainwin_font = NULL; + } + if (cfg.playlist_font == NULL) +- cfg.playlist_font = g_strdup("-adobe-helvetica-bold-r-*-*-10-*"); ++ cfg.playlist_font = g_strdup("-*-helvetica-bold-r-*-*-10-*,*"); + if (cfg.mainwin_font == NULL) +- cfg.mainwin_font = g_strdup("-adobe-helvetica-medium-r-*-*-8-*"); ++ cfg.mainwin_font = g_strdup("-*-helvetica-medium-r-*-*-8-*,*"); + if (cfg.gentitle_format == NULL) + cfg.gentitle_format = g_strdup("%p - %t"); + if (cfg.outputplugin == NULL) diff --git a/extra/xmms/xmms-1.2.10-recode-id3.patch b/extra/xmms/xmms-1.2.10-recode-id3.patch new file mode 100644 index 000000000..6bd4ecf1c --- /dev/null +++ b/extra/xmms/xmms-1.2.10-recode-id3.patch @@ -0,0 +1,11 @@ +--- xmms/playlist.c.orig 2005-03-05 17:26:11.685992552 +0200 ++++ xmms/playlist.c 2005-03-05 17:28:01.524294592 +0200 +@@ -1341,7 +1341,7 @@ + + filename = g_strdup(entry->filename); + +- if (entry->title == NULL && entry->length == -1) ++ if (entry->title == NULL) + { + if (playlist_get_info_entry(entry)&&(entry->title)) { + title = xmms_charset_recode_id3(entry->title,0,NULL); diff --git a/extra/xmms/xmms-1.2.11-3dse.patch b/extra/xmms/xmms-1.2.11-3dse.patch new file mode 100644 index 000000000..099bf23b1 --- /dev/null +++ b/extra/xmms/xmms-1.2.11-3dse.patch @@ -0,0 +1,503 @@ +--- xmms-1.2.11/Output/OSS/OSS.h.3dse 2003-06-11 20:44:17.000000000 +0200 ++++ xmms-1.2.11/Output/OSS/OSS.h 2007-11-18 20:51:57.000000000 +0100 +@@ -48,6 +48,11 @@ + # define IS_BIG_ENDIAN FALSE + #endif + ++#define AWE_3DSE 0x90 ++#define MIXER_BASE_DEFAULT 0x220 ++#define MIXER_REG_OFFSET 4 ++#define MIXER_DATA_OFFSET 5 ++ + extern OutputPlugin op; + + typedef struct +@@ -59,6 +64,8 @@ typedef struct + gboolean use_master; + gboolean use_alt_audio_device, use_alt_mixer_device; + gchar *alt_audio_device, *alt_mixer_device; ++ gint stereo; ++ gboolean hardware_access; + } + OSSConfig; + +@@ -82,6 +89,12 @@ int oss_get_output_time(void); + int oss_get_written_time(void); + void oss_set_audio_params(void); + ++int oss_set_3dse(int stat); ++int oss_get_3dse(void); ++void oss_hw_set_3dse(int stat); ++int oss_hw_get_3dse(void); ++int initHardwareAccess (); ++ + void oss_free_convert_buffer(void); + int (*oss_get_convert_func(int output, int input))(void **, int); + int (*oss_get_stereo_convert_func(int output, int input))(void **, int, int); +--- xmms-1.2.11/Output/OSS/configure.c.3dse 2005-05-15 02:01:20.000000000 +0200 ++++ xmms-1.2.11/Output/OSS/configure.c 2007-11-18 20:51:57.000000000 +0100 +@@ -24,6 +24,10 @@ static GtkWidget *mixer_usemaster_check, + static GtkWidget *adevice_use_alt_check, *audio_alt_device_entry; + static GtkWidget *mdevice_use_alt_check, *mixer_alt_device_entry; + static gint audio_device, mixer_device; ++static GtkWidget *stereo_check_button, *stereo_frame, *stereo_box; ++static GtkWidget *stereo_label, *stereo_align_button, *stereo_align_label; ++static GtkWidget *save3dse_check_button, *stereo_table, *hw_check_button; ++ + + static void configure_win_ok_cb(GtkWidget * w, gpointer data) + { +@@ -69,6 +73,8 @@ static void configure_win_ok_cb(GtkWidge + xmms_cfg_write_string(cfgfile, "OSS", "alt_audio_device", oss_cfg.alt_audio_device); + xmms_cfg_write_boolean(cfgfile, "OSS", "use_alt_mixer_device", oss_cfg.use_alt_mixer_device); + xmms_cfg_write_string(cfgfile, "OSS", "alt_mixer_device", oss_cfg.alt_mixer_device); ++ xmms_cfg_write_int(cfgfile, "OSS", "stereo", oss_cfg.stereo); ++ xmms_cfg_write_boolean(cfgfile, "OSS", "hardware", oss_cfg.hardware_access); + xmms_cfg_write_default_file(cfgfile); + xmms_cfg_free(cfgfile); + +@@ -85,6 +91,98 @@ static void configure_win_mixer_dev_cb(G + mixer_device = device; + } + ++static void stereo_check_button_cb(GtkWidget * widget, gpointer data) ++{ ++ if (GTK_TOGGLE_BUTTON(widget)->active) ++ { ++ if (oss_cfg.stereo != -1) ++ oss_cfg.stereo = 1; ++ if (oss_cfg.hardware_access) ++ oss_hw_set_3dse(1); ++ else ++ oss_set_3dse(1); ++ } ++ else ++ { ++ if (oss_cfg.stereo != -1) ++ oss_cfg.stereo = 0; ++ if (oss_cfg.hardware_access) ++ oss_hw_set_3dse(0); ++ else ++ oss_set_3dse(0); ++ } ++} ++ ++static void save3dse_check_button_cb(GtkWidget * widget, gpointer data) ++{ ++ if (GTK_TOGGLE_BUTTON(widget)->active) ++ { ++ if (GTK_TOGGLE_BUTTON(data)->active) ++ oss_cfg.stereo = 1; ++ else ++ oss_cfg.stereo = 0; ++ } ++ else ++ { ++ oss_cfg.stereo = -1; ++ } ++} ++ ++void warning_dialog(void) ++{ ++ GtkWidget *dialog_window, *button, *label; ++ dialog_window = gtk_dialog_new(); ++ gtk_window_set_title(GTK_WINDOW(dialog_window), ++ "WARNING: DIRECT ACCESS"); ++ gtk_window_set_policy(GTK_WINDOW(dialog_window), FALSE, FALSE, TRUE); ++ gtk_window_set_position(GTK_WINDOW(dialog_window), GTK_WIN_POS_MOUSE); ++ button = gtk_button_new_with_label("Dismiss"); ++ gtk_signal_connect_object(GTK_OBJECT(button), "clicked", ++ GTK_SIGNAL_FUNC(gtk_widget_destroy), (gpointer)dialog_window); ++ gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_window)->action_area), ++ button, TRUE, FALSE, 0); ++ gtk_widget_show(button); ++ label = gtk_label_new( ++ "Direct hardware access can cause damage to your sound card.\n" ++ "Only use this option when you are using OSS drivers that\n" ++ "doesn't support the SND_MIXER_3DSE ioctl.\n" ++ "USE THIS OPTION AT YOUR OWN RISK !!!\n" ++ "You can use the environment variable \"BLASTER\" to manual\n" ++ "set the port of the mixer of your sound card. Only use this\n" ++ "option when you really know the mixer address. The default\n" ++ "value is 0x220. Example:\n" ++ " BLASTER=M230 ; export BLASTER\n" ++ "SETTING THE WRONG BLASTER ENVIRONMENT CAN\n" ++ "CAUSE YOUR SYSTEM TO CRASH AND CAN CAUSE\n" ++ "PERMANENT DAMAGE !!!"); ++ gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); ++ gtk_misc_set_padding(GTK_MISC(label), 10, 10); ++ gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_window)->vbox), ++ label, TRUE, TRUE, 0); ++ gtk_widget_show(label); ++ gtk_grab_add(dialog_window); ++ GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); ++ gtk_widget_grab_default(button); ++ gtk_widget_show(dialog_window); ++} ++ ++static void hw_check_button_cb(GtkWidget * widget, gpointer data) ++{ ++ if (GTK_TOGGLE_BUTTON(widget)->active) ++ { ++ if (oss_cfg.hardware_access == 0) ++ warning_dialog(); ++ oss_cfg.hardware_access = 1; ++ initHardwareAccess (); ++ gtk_widget_set_sensitive(stereo_check_button, TRUE); ++ gtk_widget_set_sensitive(save3dse_check_button, TRUE); ++ } ++ else ++ { ++ oss_cfg.hardware_access = 0; ++ } ++} ++ + static void audio_device_toggled(GtkToggleButton * widget, gpointer data) + { + gboolean use_alt_audio_device = gtk_toggle_button_get_active(widget); +@@ -148,10 +246,38 @@ static void scan_devices(gchar * type, G + } + else + { +- item = gtk_menu_item_new_with_label(_("Default")); +- gtk_signal_connect(GTK_OBJECT(item), "activate", sigfunc, (gpointer) 0); +- gtk_widget_show(item); +- gtk_menu_append(GTK_MENU(menu), item); ++#ifdef SOUND_MIXER_INFO ++ int i, fd; ++ gchar *dev_name; ++ mixer_info info; ++ for (i = 0; i < 10; i++) { ++ if (i) ++ dev_name = g_strdup_printf ("/dev/mixer%d", i); ++ else ++ dev_name = g_strdup_printf ("/dev/mixer"); ++ if ((fd = open (dev_name, O_RDONLY)) != -1) { ++ if (ioctl (fd, SOUND_MIXER_INFO, &info) != -1) { ++ if (!index) ++ temp = g_strdup_printf ("Default (%s)", info.name); ++ else ++ temp = g_strdup_printf ("%s", info.name); ++ item = gtk_menu_item_new_with_label (temp); ++ g_free (temp); ++ gtk_signal_connect(GTK_OBJECT(item), "activate", sigfunc, (gpointer) index++); ++ gtk_widget_show(item); ++ gtk_menu_append(GTK_MENU(menu), item); ++ } ++ close(fd); ++ } ++ g_free(dev_name); ++ } ++#endif ++ if (!index) { ++ item = gtk_menu_item_new_with_label(_("Default")); ++ gtk_signal_connect(GTK_OBJECT(item), "activate", sigfunc, (gpointer) 0); ++ gtk_widget_show(item); ++ gtk_menu_append(GTK_MENU(menu), item); ++ } + } + gtk_option_menu_set_menu(GTK_OPTION_MENU(option_menu), menu); + } +@@ -300,6 +426,69 @@ void oss_configure(void) + gtk_table_attach_defaults(GTK_TABLE(mixer_table), mixer_usemaster_check, 0, 1, 0, 1); + gtk_notebook_append_page(GTK_NOTEBOOK(notebook), mixer_frame, gtk_label_new(_("Mixer"))); + ++ stereo_frame = gtk_frame_new("3D Stereo Enhancement:"); ++ gtk_container_set_border_width(GTK_CONTAINER(stereo_frame), 5); ++ gtk_widget_show(stereo_frame); ++ stereo_box = gtk_vbox_new(FALSE, 0); ++ gtk_widget_show(stereo_box); ++ stereo_table = gtk_table_new(3, 1, FALSE); ++ gtk_widget_show(stereo_table); ++ stereo_check_button = gtk_check_button_new_with_label("3D Stereo Enhancement"); ++ gtk_signal_connect(GTK_OBJECT(stereo_check_button), "toggled", ++ GTK_SIGNAL_FUNC(stereo_check_button_cb), NULL); ++ save3dse_check_button = gtk_check_button_new_with_label("Save 3DSE setting"); ++ gtk_signal_connect(GTK_OBJECT(save3dse_check_button), "toggled", ++ GTK_SIGNAL_FUNC(save3dse_check_button_cb), stereo_check_button); ++ hw_check_button = gtk_check_button_new_with_label("Direct hardware access"); ++ gtk_signal_connect(GTK_OBJECT(hw_check_button), "toggled", ++ GTK_SIGNAL_FUNC(hw_check_button_cb), hw_check_button); ++ if (oss_cfg.stereo != -1) ++ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(save3dse_check_button), TRUE); ++ if (oss_cfg.hardware_access) ++ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(hw_check_button), TRUE); ++ if (getuid () != 0 || geteuid () != 0) ++ gtk_widget_set_sensitive(hw_check_button, FALSE); ++ switch(oss_get_3dse()) ++ { ++ case 1: ++ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(stereo_check_button), TRUE); ++ case 0: ++ gtk_widget_set_sensitive(hw_check_button, FALSE); ++ oss_cfg.hardware_access = FALSE; ++ break; ++ case -1: ++ if (!oss_cfg.hardware_access) ++ { ++ gtk_widget_set_sensitive(stereo_check_button, FALSE); ++ gtk_widget_set_sensitive(save3dse_check_button, FALSE); ++ } ++ else ++ if(oss_hw_get_3dse()) ++ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(stereo_check_button), TRUE); ++ break; ++ } ++ gtk_table_attach_defaults(GTK_TABLE(stereo_table), stereo_check_button, 0, 1, 0, 1); ++ gtk_widget_show(stereo_check_button); ++ gtk_table_attach_defaults(GTK_TABLE(stereo_table), save3dse_check_button, 0, 1, 1, 2); ++ gtk_widget_show(save3dse_check_button); ++ gtk_table_attach_defaults(GTK_TABLE(stereo_table), hw_check_button, 0, 1, 2, 3); ++ gtk_widget_show(hw_check_button); ++ stereo_align_button = gtk_alignment_new(0.2, 0.5, 0, 0); ++ gtk_container_add(GTK_CONTAINER(stereo_align_button), stereo_table); ++ gtk_widget_show(stereo_align_button); ++ stereo_label = gtk_label_new("Please note that not all sound cards support this feature.\n" ++ "Supported: SoundBlaster 16, ViBRA, AWE32/64."); ++ gtk_label_set_justify(GTK_LABEL(stereo_label), GTK_JUSTIFY_LEFT); ++ gtk_misc_set_padding(GTK_MISC(stereo_label), 5, 5); ++ gtk_widget_show(stereo_label); ++ stereo_align_label = gtk_alignment_new(0, 0, 0, 0); ++ gtk_container_add(GTK_CONTAINER(stereo_align_label), stereo_label); ++ gtk_widget_show(stereo_align_label); ++ gtk_box_pack_end(GTK_BOX(stereo_box), stereo_align_label, FALSE, FALSE, 0); ++ gtk_box_pack_end(GTK_BOX(stereo_box), stereo_align_button, TRUE, FALSE, 0); ++ gtk_container_add(GTK_CONTAINER(stereo_frame), stereo_box); ++ gtk_notebook_append_page(GTK_NOTEBOOK(notebook), stereo_frame, gtk_label_new("3DSE")); ++ + bbox = gtk_hbutton_box_new(); + gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); + gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); +@@ -317,4 +506,5 @@ void oss_configure(void) + gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 0); + + gtk_widget_show_all(configure_win); ++ gtk_notebook_set_page(GTK_NOTEBOOK(notebook), 0); + } +--- xmms-1.2.11/Output/OSS/init.c.3dse 2001-03-08 06:49:47.000000000 +0100 ++++ xmms-1.2.11/Output/OSS/init.c 2007-11-18 20:51:57.000000000 +0100 +@@ -33,6 +33,8 @@ void oss_init(void) + oss_cfg.use_alt_audio_device = FALSE; + oss_cfg.alt_audio_device = NULL; + oss_cfg.use_master=0; ++ oss_cfg.stereo = -1; /* = 3dse setting not saved */ ++ oss_cfg.hardware_access = FALSE; + + if ((cfgfile = xmms_cfg_open_default_file())) + { +@@ -45,6 +47,32 @@ void oss_init(void) + xmms_cfg_read_string(cfgfile, "OSS", "alt_audio_device", &oss_cfg.alt_audio_device); + xmms_cfg_read_boolean(cfgfile, "OSS", "use_alt_mixer_device", &oss_cfg.use_alt_mixer_device); + xmms_cfg_read_string(cfgfile, "OSS", "alt_mixer_device", &oss_cfg.alt_mixer_device); ++ xmms_cfg_read_int(cfgfile, "OSS", "stereo", &oss_cfg.stereo); ++ xmms_cfg_read_boolean(cfgfile, "OSS", "hardware", &oss_cfg.hardware_access); + xmms_cfg_free(cfgfile); + } ++ if (oss_cfg.hardware_access) ++ if (initHardwareAccess() == -1) ++ oss_cfg.hardware_access = FALSE; ++ ++ if (oss_cfg.hardware_access) ++ switch(oss_cfg.stereo) ++ { ++ case 0: ++ oss_hw_set_3dse(0); ++ break; ++ case 1: ++ oss_hw_set_3dse(1); ++ break; ++ } ++ else ++ switch(oss_cfg.stereo) ++ { ++ case 0: ++ oss_set_3dse(0); ++ break; ++ case 1: ++ oss_set_3dse(1); ++ break; ++ } + } +--- xmms-1.2.11/Output/OSS/mixer.c.3dse 2001-06-16 15:30:35.000000000 +0200 ++++ xmms-1.2.11/Output/OSS/mixer.c 2007-11-18 20:51:57.000000000 +0100 +@@ -32,6 +32,10 @@ static char* get_mixer_device(void) + return name; + } + ++#include ++ ++static int mixer_reg = 0, mixer_data = 0; ++ + void oss_get_volume(int *l, int *r) + { + int fd, v, cmd, devs; +@@ -64,6 +68,156 @@ void oss_get_volume(int *l, int *r) + } + } + ++int oss_set_3dse(int stat) ++{ ++ int fd; ++ gchar *devname; ++ ++ if ((stat != 0) && (stat != 1)) ++ return -1; ++ ++ if (oss_cfg.mixer_device > 0) ++ devname = g_strdup_printf("/dev/mixer%d", oss_cfg.mixer_device); ++ else ++ devname = g_strdup("/dev/mixer"); ++ fd = open(devname, O_RDONLY); ++ g_free(devname); ++ ++ if (fd != -1) ++ { ++ if (ioctl(fd, SOUND_MIXER_3DSE, &stat) < 0) ++ { ++ close(fd); ++ return -1; ++ } ++ else ++ { ++ close(fd); ++ return stat; ++ } ++ } ++ return -1; ++} ++ ++int oss_get_3dse(void) ++{ ++ int fd, test_stat; ++ gchar *devname; ++ ++ if (oss_cfg.mixer_device > 0) ++ devname = g_strdup_printf("/dev/mixer%d", oss_cfg.mixer_device); ++ else ++ devname = g_strdup("/dev/mixer"); ++ fd = open(devname, O_RDONLY); ++ g_free(devname); ++ ++ if (fd != -1) ++ { ++ test_stat = 2; /* code 2 will request status */ ++ if (ioctl(fd, SOUND_MIXER_3DSE, &test_stat) < 0) ++ { ++ close(fd); ++ return -1; ++ } ++ else ++ { ++ close(fd); ++ return test_stat; ++ } ++ } ++ return -1; ++} ++ ++static void check_legal_mixer () ++{ ++ if (!mixer_reg || !mixer_data) ++ { ++ fprintf(stderr, "Illegal mixer settings...\n"); ++ exit(1); ++ } ++} ++ ++void oss_hw_set_3dse(int stat) ++{ ++ unsigned char b; ++ check_legal_mixer (); ++ switch(stat) ++ { ++ case 1: ++ outb(AWE_3DSE, mixer_reg); ++ b = inb(mixer_data); ++ b |= 1; ++ outb(b, mixer_data); ++ break; ++ case 0: ++ outb(AWE_3DSE, mixer_reg); ++ b = inb(mixer_data); ++ b &= 0xff - 1; ++ outb(b, mixer_data); ++ break; ++ } ++} ++ ++int oss_hw_get_3dse(void) ++{ ++ unsigned char b; ++ check_legal_mixer (); ++ outb(AWE_3DSE, mixer_reg); ++ b = inb(mixer_data); ++ return (b & 1); ++} ++ ++int initHardwareAccess () ++{ ++ char *blasterEnv, *Aptr, *Mptr; ++ int tmp, mixer_base = 0; ++ ++ if ((blasterEnv = getenv ("BLASTER"))) ++ { ++ Aptr = blasterEnv; ++ while ((Aptr = strchr(Aptr, 'A'))) ++ if ((tmp = strtol(++Aptr, &Aptr, 16))) ++ mixer_base = tmp; ++ Mptr = blasterEnv; ++ while ((Mptr = strchr(Mptr, 'M'))) ++ if ((tmp = strtol(++Mptr, &Mptr, 16))) ++ mixer_base = tmp; ++ } ++ if (!mixer_base) ++ { ++ mixer_base = MIXER_BASE_DEFAULT; ++ } ++ else ++ { ++ switch (mixer_base) ++ { ++ case 0x210: ++ case 0x220: ++ case 0x230: ++ case 0x240: ++ case 0x250: ++ case 0x260: ++ case 0x280: ++ break; ++ default: ++ fprintf (stderr, "Illegal mixer base.\n"); ++ exit (1); ++ } ++ } ++ mixer_reg = mixer_base + MIXER_REG_OFFSET; ++ mixer_data = mixer_base + MIXER_DATA_OFFSET; ++ if (getuid () == 0 && geteuid () == 0) ++ { ++ ioperm (mixer_reg, 1, 1); ++ ioperm (mixer_data, 1, 1); ++ return 0; ++ } ++ else ++ { ++ return -1; ++ } ++} ++ + void oss_set_volume(int l, int r) + { + int fd, v, cmd, devs; +--- xmms-1.2.11/Output/OSS/soundcard.h.3dse 2003-06-11 23:01:12.000000000 +0200 ++++ xmms-1.2.11/Output/OSS/soundcard.h 2007-11-18 20:51:57.000000000 +0100 +@@ -1151,8 +1151,8 @@ typedef unsigned char mixer_record[128]; + /* + * Two ioctls for special souncard function (OSS/Free only) + */ +-#define SOUND_MIXER_AGC _SIOWR('M', 103, int) +-#define SOUND_MIXER_3DSE _SIOWR('M', 104, int) ++#define SOUND_MIXER_AGC __SIOWR('M', 103, int) ++#define SOUND_MIXER_3DSE __SIOWR('M', 104, int) + /* + * The SOUND_MIXER_PRIVATE# commands can be redefined by low level drivers. + * These features can be used when accessing device specific features. diff --git a/extra/xmms/xmms-fix.diff b/extra/xmms/xmms-fix.diff new file mode 100644 index 000000000..a810aa20c --- /dev/null +++ b/extra/xmms/xmms-fix.diff @@ -0,0 +1,11 @@ +--- xmms-1.2.10+cvs20060429/xmms/util.c.orig 2006-11-05 12:29:59.000000000 +0800 ++++ xmms-1.2.10+cvs20060429/xmms/util.c 2006-11-05 12:30:01.000000000 +0800 +@@ -175,7 +175,7 @@ GdkImage *create_dblsize_image(GdkImage + * This needs to be optimized + */ + +- dblimg = gdk_image_new(GDK_IMAGE_NORMAL, gdk_visual_get_best(), img->width << 1, img->height << 1); ++ dblimg = gdk_image_new(GDK_IMAGE_NORMAL, gdk_visual_get_best_with_depth(img->depth), img->width << 1, img->height << 1); + if (dblimg->bpp == 1) + { + register guint8 *srcptr, *ptr, *ptr2, pix; diff --git a/extra/xmms/xmms-menu.patch b/extra/xmms/xmms-menu.patch new file mode 100644 index 000000000..39304f9fc --- /dev/null +++ b/extra/xmms/xmms-menu.patch @@ -0,0 +1,35 @@ +--- xmms/xmms.desktop 2002-02-11 23:15:56.000000000 +0000 ++++ xmms.desktop 2006-02-25 14:21:03.000000000 +0000 +@@ -1,21 +1,16 @@ + [Desktop Entry] + Name=XMMS + Comment=X Multimedia System +-comment[az]=X Multimedya Sistemi +-comment[ca]=Sistema Multimèdia per a X +-comment[cs]=Multimediální pøehrávaè +-comment[es]=Sistema Multimedia para X +-comment[gl]=Sistema Multimedia para X +-comment[hr]=X Multimedijski Sustav +-comment[nn]=X Multimedia-system +-comment[pt_BR]=X Multimedia System +-comment[ro]=X MultiMedia Sistem +-comment[th]=ÃкºÁÑŵÔÁÕà´Õº¹ X +-comment[tr]=X Multimedya Sistem +-comment[zh_TW]=X ¦h´CÅé¨t²Î +-Encoding=Legacy-Mixed ++Comment[es]=Sistema Multimedia para X ++Comment[gl]=Sistema Multimedia para X ++Comment[hr]=X Multimedijski Sustav ++Comment[pt_BR]=X Multimedia System ++Comment[ro]=X MultiMedia Sistem ++Comment[tr]=X Multimedya Sistem ++Encoding=UTF-8 + Exec=xmms +-Icon=xmms_mini.xpm +-MimeType=audio/x-scpls;audio/x-mpegurl;audio/mpegurl;audio/mp3;audio/x-mp3;audio/mpeg;audio/x-mpeg;audio/x-wav;application/x-ogg +-Terminal=0 ++Icon=xmms + Type=Application ++Categories=Application;AudioVideo; ++MimeType=audio/x-scpls;audio/x-mpegurl;audio/mpegurl;audio/mp3;audio/x-mp3;audio/mpeg;audio/x-mpeg;audio/x-wav;application/x-ogg ++Terminal=false -- cgit v1.2.3-54-g00ecf