summaryrefslogtreecommitdiff
path: root/plugins/gtkui/plcommon.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/gtkui/plcommon.c')
-rw-r--r--plugins/gtkui/plcommon.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/plugins/gtkui/plcommon.c b/plugins/gtkui/plcommon.c
index 406b2f16..f0c36a24 100644
--- a/plugins/gtkui/plcommon.c
+++ b/plugins/gtkui/plcommon.c
@@ -256,8 +256,16 @@ main_reload_metadata_activate
DdbListview *ps = DDB_LISTVIEW (g_object_get_data (G_OBJECT (menuitem), "ps"));
DB_playItem_t *it = deadbeef->pl_get_first (PL_MAIN);
while (it) {
- const char *decoder_id = deadbeef->pl_find_meta (it, ":DECODER");
- if (deadbeef->pl_is_selected (it) && deadbeef->is_local_file (deadbeef->pl_find_meta (it, ":URI")) && decoder_id) {
+ deadbeef->pl_lock ();
+ char decoder_id[100];
+ const char *dec = deadbeef->pl_find_meta (it, ":DECODER");
+ if (dec) {
+ strncpy (decoder_id, dec, sizeof (decoder_id));
+ }
+ int match = deadbeef->pl_is_selected (it) && deadbeef->is_local_file (deadbeef->pl_find_meta (it, ":URI")) && dec;
+ deadbeef->pl_unlock ();
+
+ if (match) {
uint32_t f = deadbeef->pl_get_item_flags (it);
if (!(f & DDB_IS_SUBTRACK)) {
f &= ~DDB_TAG_MASK;