summaryrefslogtreecommitdiff
path: root/plugins/sid
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-04-18 17:08:54 +0200
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-04-18 17:08:54 +0200
commite70521bc897a02e98b397d210d174f84fd886879 (patch)
tree75690901cba3c002df1ae9bbec05840fbfd9456e /plugins/sid
parent60fc6f6512f98af10228d055e88e61b7204a427c (diff)
improved sid plugin settings
Diffstat (limited to 'plugins/sid')
-rw-r--r--plugins/sid/csid.cpp27
-rw-r--r--plugins/sid/csid.h1
-rw-r--r--plugins/sid/plugin.c3
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",