diff options
author | Alexey Yakovenko <wakeroid@gmail.com> | 2010-04-18 17:08:54 +0200 |
---|---|---|
committer | Alexey Yakovenko <wakeroid@gmail.com> | 2010-04-18 17:08:54 +0200 |
commit | e70521bc897a02e98b397d210d174f84fd886879 (patch) | |
tree | 75690901cba3c002df1ae9bbec05840fbfd9456e /plugins/sid | |
parent | 60fc6f6512f98af10228d055e88e61b7204a427c (diff) |
improved sid plugin settings
Diffstat (limited to 'plugins/sid')
-rw-r--r-- | plugins/sid/csid.cpp | 27 | ||||
-rw-r--r-- | plugins/sid/csid.h | 1 | ||||
-rw-r--r-- | plugins/sid/plugin.c | 3 |
3 files changed, 29 insertions, 2 deletions
diff --git a/plugins/sid/csid.cpp b/plugins/sid/csid.cpp index 701ac3d4..26f0a456 100644 --- a/plugins/sid/csid.cpp +++ b/plugins/sid/csid.cpp @@ -292,7 +292,7 @@ csid_init (DB_playItem_t *it) { // resid->create (1); info->resid->filter (true); - int samplerate = deadbeef->conf_get_int ("synth.samplerate", 48000); + int samplerate = deadbeef->conf_get_int ("sid.samplerate", 48000); int bps = deadbeef->get_output ()->bitspersample (); info->resid->sampling (samplerate); @@ -576,8 +576,33 @@ csid_mutevoice (DB_fileinfo_t *_info, int voice, int mute) { } } +static int +csid_on_configchanged (DB_event_t *ev, uintptr_t data) { + int conf_hvsc_enable = deadbeef->conf_get_int ("hvsc_enable", 0); + int disable = !conf_hvsc_enable; + if (disable != sldb_disable) { + sldb_disable = disable; + } + + // pick up new sldb filename in case it was changed + if (sldb) { + free (sldb); + sldb = NULL; + sldb_loaded = 0; + } + + return 0; +} + +int +csid_start (void) { + deadbeef->ev_subscribe (DB_PLUGIN (&sid_plugin), DB_EV_CONFIGCHANGED, DB_CALLBACK (csid_on_configchanged), 0); + return 0; +} + int csid_stop (void) { + deadbeef->ev_unsubscribe (DB_PLUGIN (&sid_plugin), DB_EV_CONFIGCHANGED, DB_CALLBACK (csid_on_configchanged), 0); if (sldb) { free (sldb); sldb = NULL; diff --git a/plugins/sid/csid.h b/plugins/sid/csid.h index 8ef8ecc5..608b3568 100644 --- a/plugins/sid/csid.h +++ b/plugins/sid/csid.h @@ -30,6 +30,7 @@ int csid_seek (DB_fileinfo_t *, float time); DB_playItem_t *csid_insert (DB_playItem_t *after, const char *fname); int csid_numvoices (DB_fileinfo_t *); void csid_mutevoice (DB_fileinfo_t *, int voice, int mute); +int csid_start (void); int csid_stop (void); #ifdef __cplusplus diff --git a/plugins/sid/plugin.c b/plugins/sid/plugin.c index 8fd6854e..3535ad87 100644 --- a/plugins/sid/plugin.c +++ b/plugins/sid/plugin.c @@ -24,6 +24,7 @@ const char *filetypes[] = { "SID", NULL }; static const char settings_dlg[] = "property \"Enable HVSC\" checkbox hvsc_enable 0;\n" "property \"HVSC path\" file hvsc_path \"\";\n" + "property \"Samplerate\" entry sid.samplerate 48000;\n" ; // define plugin interface @@ -37,7 +38,7 @@ DB_decoder_t sid_plugin = { .plugin.author = "Alexey Yakovenko", .plugin.email = "waker@users.sourceforge.net", .plugin.website = "http://deadbeef.sf.net", - .plugin.start = NULL, + .plugin.start = csid_start, .plugin.stop = csid_stop, .plugin.configdialog = settings_dlg, .plugin.id = "stdsid", |