# HG changeset patch # User Matti Hamalainen # Date 1352403867 -7200 # Node ID 29f3c3f29c0d098f55b5bb7df78b193848eb27b9 # Parent ae1f6418d09377a0e21319879d10a68954cac472 Finalize libSIDPlay2 vs FP configuration stuff. diff -r ae1f6418d093 -r 29f3c3f29c0d configure.ac --- a/configure.ac Thu Nov 08 21:24:38 2012 +0200 +++ b/configure.ac Thu Nov 08 21:44:27 2012 +0200 @@ -118,17 +118,17 @@ XS_ARG_WITH([sidplayfp], [libSIDPlayFP], [XS_PATH_LIBSIDPLAYFP]) - if test "x$xs_pkg_sidplayfp_v1" = "xyes"; then - AC_DEFINE([HAVE_SIDPLAYFP_V1]) - xs_have_sidplay2_api="(FP v1.0 (alpha) API)" - fi -fi if test "x$xs_have_sidplayfp" = "xyes"; then AC_DEFINE([HAVE_SIDPLAYFP]) AC_DEFINE([HAVE_HARDSID_BUILDER]) AC_DEFINE([HAVE_RESID_BUILDER]) AC_DEFINE([HAVE_RESID_FP_BUILDER]) + if test "x$xs_pkg_sidplayfp_v1" = "xyes"; then + AC_DEFINE([HAVE_SIDPLAYFP_V1]) + xs_have_sidplay2_api="(FP v1.0 (alpha) API)" + fi +fi xs_have_sidplay2_api="" XS_ARG_WITH([sidplay2], [libSIDPlay2], [XS_PATH_LIBSIDPLAY2]) diff -r ae1f6418d093 -r 29f3c3f29c0d src/xmms-sid.c --- a/src/xmms-sid.c Thu Nov 08 21:24:38 2012 +0200 +++ b/src/xmms-sid.c Thu Nov 08 21:44:27 2012 +0200 @@ -49,8 +49,8 @@ #ifdef HAVE_SIDPLAY2 # include "xs_sidplay2.h" #endif -#ifdef HAVE_SIDPLAY2 -# include "xs_sidplay2.h" +#ifdef HAVE_SIDPLAYFP +# include "xs_sidplayfp.h" #endif static XSEngine xs_enginelist[] = @@ -77,9 +77,9 @@ xs_sidplay2_flush }, #endif -#ifdef HAVE_SIDPLAY2_FP +#ifdef HAVE_SIDPLAYFP { - XS_ENG_SIDPLAY2_FP, + XS_ENG_SIDPLAYFP, xs_sidplayfp_probe, xs_sidplayfp_init, xs_sidplayfp_close, xs_sidplayfp_initsong, xs_sidplayfp_fillbuffer, diff -r ae1f6418d093 -r 29f3c3f29c0d src/xs_config.c --- a/src/xs_config.c Thu Nov 08 21:24:38 2012 +0200 +++ b/src/xs_config.c Thu Nov 08 21:44:27 2012 +0200 @@ -146,6 +146,7 @@ { WTYPE_BGROUP, CTYPE_INT, "cfg_emu_sidplay1", &xs_cfg.playerEngine, XS_ENG_SIDPLAY1 }, { WTYPE_BGROUP, CTYPE_INT, "cfg_emu_sidplay2", &xs_cfg.playerEngine, XS_ENG_SIDPLAY2 }, +{ WTYPE_BGROUP, CTYPE_INT, "cfg_emu_sidplayfp", &xs_cfg.playerEngine, XS_ENG_SIDPLAYFP }, { WTYPE_BGROUP, CTYPE_INT, "cfg_emu_mem_real", &xs_cfg.memoryMode, XS_MPU_REAL }, { WTYPE_BGROUP, CTYPE_INT, "cfg_emu_mem_banksw", &xs_cfg.memoryMode, XS_MPU_BANK_SWITCHING }, { WTYPE_BGROUP, CTYPE_INT, "cfg_emu_mem_transrom", &xs_cfg.memoryMode, XS_MPU_TRANSPARENT_ROM }, @@ -1316,39 +1317,37 @@ void xs_cfg_emu_sidplay2_toggled(GtkToggleButton * togglebutton, gpointer user_data) { - gboolean isActive = GTK_TOGGLE_BUTTON(togglebutton)->active; + gboolean isSP2Active = GTK_TOGGLE_BUTTON(LUW("cfg_emu_sidplay2"))->active, + isFPActive = GTK_TOGGLE_BUTTON(LUW("cfg_emu_sidplayfp"))->active, + isEither = isSP2Active || isFPActive; + (void) togglebutton; (void) user_data; - gtk_widget_set_sensitive(LUW("cfg_emu_mem_real"), isActive); - - gtk_widget_set_sensitive(LUW("cfg_sidplay2_frame"), isActive); + gtk_widget_set_sensitive(LUW("cfg_emu_mem_real"), isSP2Active); + gtk_widget_set_sensitive(LUW("cfg_sidplay2_frame"), isEither); /* Optimization mode removed from distortion patch */ -#ifdef HAVE_SIDPLAY2_FP - gtk_widget_set_sensitive(LUW("cfg_emu_sp2_opt"), isActive); -#else - gtk_widget_set_sensitive(LUW("cfg_emu_sp2_opt"), FALSE); -#endif + gtk_widget_set_sensitive(LUW("cfg_emu_sp2_opt"), isSP2Active); - gtk_widget_set_sensitive(LUW("cfg_chn_autopan"), !isActive); + gtk_widget_set_sensitive(LUW("cfg_chn_autopan"), !isSP2Active); -#ifdef HAVE_RESID_FP_BUILDER - gtk_widget_set_sensitive(LUW("cfg_emu_sp2_resid_fp"), isActive); +#if defined(HAVE_SIDPLAYFP) && defined(HAVE_RESID_FP_BUILDER) + gtk_widget_set_sensitive(LUW("cfg_emu_sp2_resid_fp"), isFPActive); #else gtk_widget_set_sensitive(LUW("cfg_emu_sp2_resid_fp"), FALSE); #endif #ifdef HAVE_RESID_BUILDER - gtk_widget_set_sensitive(LUW("cfg_emu_sp2_resid"), isActive); + gtk_widget_set_sensitive(LUW("cfg_emu_sp2_resid"), isEither); #else gtk_widget_set_sensitive(LUW("cfg_emu_sp2_resid"), FALSE); #endif #ifdef HAVE_HARDSID_BUILDER - gtk_widget_set_sensitive(LUW("cfg_emu_sp2_hardsid"), isActive); + gtk_widget_set_sensitive(LUW("cfg_emu_sp2_hardsid"), isEither); #else - gtk_widget_set_sensitive(LUW("cfg_emu_sp2_hardsid"), isActive); + gtk_widget_set_sensitive(LUW("cfg_emu_sp2_hardsid"), FALSE); #endif } @@ -1503,7 +1502,7 @@ gtk_widget_set_sensitive(LUW("cfg_box_filter_sidplay1"), FALSE); #endif -#ifndef HAVE_SIDPLAY2 +#if !defined(HAVE_SIDPLAY2) && !defined(HAVE_SIDPLAYFP) gtk_widget_set_sensitive(LUW("cfg_emu_sidplay2"), FALSE); gtk_widget_set_sensitive(LUW("cfg_box_filter_sidplay2"), FALSE); #endif diff -r ae1f6418d093 -r 29f3c3f29c0d src/xs_config.h --- a/src/xs_config.h Thu Nov 08 21:24:38 2012 +0200 +++ b/src/xs_config.h Thu Nov 08 21:44:27 2012 +0200 @@ -14,7 +14,7 @@ enum XS_EMUENGINE { XS_ENG_SIDPLAY1 = 1, XS_ENG_SIDPLAY2, - XS_ENG_SIDPLAY2_FP + XS_ENG_SIDPLAYFP }; diff -r ae1f6418d093 -r 29f3c3f29c0d src/xs_interface.c --- a/src/xs_interface.c Thu Nov 08 21:24:38 2012 +0200 +++ b/src/xs_interface.c Thu Nov 08 21:44:27 2012 +0200 @@ -63,6 +63,7 @@ GSList *emulator_group = NULL; GtkWidget *cfg_emu_sidplay1; GtkWidget *cfg_emu_sidplay2; + GtkWidget *cfg_emu_sidplayfp; GtkWidget *cfg_memmode_frame; GtkWidget *w_vbox5; GSList *memorymode_group = NULL; @@ -498,7 +499,7 @@ gtk_container_add (GTK_CONTAINER (cfg_emulib_frame), w_vbox26); gtk_container_set_border_width (GTK_CONTAINER (w_vbox26), 2); - cfg_emu_sidplay1 = gtk_radio_button_new_with_label (emulator_group, _("SIDPlay 1 (frame-based)")); + cfg_emu_sidplay1 = gtk_radio_button_new_with_label (emulator_group, _("SIDPlay 1 (frame-based, fast, inaccurate)")); emulator_group = gtk_radio_button_group (GTK_RADIO_BUTTON (cfg_emu_sidplay1)); gtk_widget_set_name (cfg_emu_sidplay1, "cfg_emu_sidplay1"); gtk_widget_ref (cfg_emu_sidplay1); @@ -508,7 +509,7 @@ gtk_box_pack_start (GTK_BOX (w_vbox26), cfg_emu_sidplay1, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, cfg_emu_sidplay1, _("Use libSIDPlay 1.x emulation, faster but not so accurate. Good in most cases, though."), NULL); - cfg_emu_sidplay2 = gtk_radio_button_new_with_label (emulator_group, _("SIDPlay 2/FP (cycle-based)")); + cfg_emu_sidplay2 = gtk_radio_button_new_with_label (emulator_group, _("SIDPlay 2 (cycle-based, rather accurate)")); emulator_group = gtk_radio_button_group (GTK_RADIO_BUTTON (cfg_emu_sidplay2)); gtk_widget_set_name (cfg_emu_sidplay2, "cfg_emu_sidplay2"); gtk_widget_ref (cfg_emu_sidplay2); @@ -516,7 +517,17 @@ (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (cfg_emu_sidplay2); gtk_box_pack_start (GTK_BOX (w_vbox26), cfg_emu_sidplay2, FALSE, FALSE, 0); - gtk_tooltips_set_tip (tooltips, cfg_emu_sidplay2, _("Use libSIDPlay 2.x emulation, which requires powerful CPU due to more exact emulation."), NULL); + gtk_tooltips_set_tip (tooltips, cfg_emu_sidplay2, _("Use libSIDPlay 2.x emulation, which requires powerful CPU due to cycle-exact emulation."), NULL); + + cfg_emu_sidplayfp = gtk_radio_button_new_with_label (emulator_group, _("SIDPlay FP (cycle-exact, very accurate, slow)")); + emulator_group = gtk_radio_button_group (GTK_RADIO_BUTTON (cfg_emu_sidplayfp)); + gtk_widget_set_name (cfg_emu_sidplayfp, "cfg_emu_sidplayfp"); + gtk_widget_ref (cfg_emu_sidplayfp); + gtk_object_set_data_full (GTK_OBJECT (xs_configwin), "cfg_emu_sidplayfp", cfg_emu_sidplayfp, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (cfg_emu_sidplayfp); + gtk_box_pack_start (GTK_BOX (w_vbox26), cfg_emu_sidplayfp, FALSE, FALSE, 0); + gtk_tooltips_set_tip (tooltips, cfg_emu_sidplayfp, _("Use libSIDPlayFP emulation, requires a high-end system due to accurate simulation of filter and cycle-accurate emulation."), NULL); cfg_memmode_frame = gtk_frame_new (_("Memory mode:")); gtk_widget_set_name (cfg_memmode_frame, "cfg_memmode_frame"); @@ -1603,6 +1614,9 @@ gtk_signal_connect (GTK_OBJECT (cfg_emu_sidplay2), "toggled", GTK_SIGNAL_FUNC (xs_cfg_emu_sidplay2_toggled), NULL); + gtk_signal_connect (GTK_OBJECT (cfg_emu_sidplayfp), "toggled", + GTK_SIGNAL_FUNC (xs_cfg_emu_sidplay2_toggled), + NULL); gtk_signal_connect (GTK_OBJECT (cfg_emu_filters), "toggled", GTK_SIGNAL_FUNC (xs_cfg_emu_filters_toggled), NULL); diff -r ae1f6418d093 -r 29f3c3f29c0d xmms-sid.glade --- a/xmms-sid.glade Thu Nov 08 21:24:38 2012 +0200 +++ b/xmms-sid.glade Thu Nov 08 21:44:27 2012 +0200 @@ -480,7 +480,7 @@ xs_cfg_emu_sidplay1_toggled Mon, 15 Sep 2003 12:12:50 GMT - + False True emulator @@ -494,14 +494,35 @@ GtkRadioButton cfg_emu_sidplay2 - Use libSIDPlay 2.x emulation, which requires powerful CPU due to more exact emulation. + Use libSIDPlay 2.x emulation, which requires powerful CPU due to cycle-exact emulation. True toggled xs_cfg_emu_sidplay2_toggled Mon, 15 Sep 2003 12:13:00 GMT - + + False + True + emulator + + 0 + False + False + + + + + GtkRadioButton + cfg_emu_sidplayfp + Use libSIDPlayFP emulation, requires a high-end system due to accurate simulation of filter and cycle-accurate emulation. + True + + toggled + xs_cfg_emu_sidplay2_toggled + Thu, 08 Nov 2012 19:41:06 GMT + + False True emulator