summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-08-29 17:21:06 +0200
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-08-29 17:21:06 +0200
commit53df4f53af196e90a7998d037f95f62105f96434 (patch)
tree6846c94dd837e31e597dda06b175db21c1a3e594
parentf14f8c26054b31c8bd23c76091664b26b9ec99a2 (diff)
fixed current track redraw in search window
-rw-r--r--deadbeef.h1
-rw-r--r--playlist.c9
-rw-r--r--playlist.h3
-rw-r--r--plugins.c1
-rw-r--r--plugins/gtkui/gtkui.c10
5 files changed, 17 insertions, 7 deletions
diff --git a/deadbeef.h b/deadbeef.h
index f4abf477..3f6e2360 100644
--- a/deadbeef.h
+++ b/deadbeef.h
@@ -361,6 +361,7 @@ typedef struct {
DB_playItem_t *(*pl_insert_dir) (DB_playItem_t *after, const char *dirname, int *pabort, int (*cb)(DB_playItem_t *it, void *data), void *user_data);
DB_playItem_t *(*pl_insert_file) (DB_playItem_t *after, const char *fname, int *pabort, int (*cb)(DB_playItem_t *it, void *data), void *user_data);
int (*pl_get_idx_of) (DB_playItem_t *it);
+ int (*pl_get_idx_of_iter) (DB_playItem_t *it, int iter);
DB_playItem_t * (*pl_get_for_idx) (int idx);
DB_playItem_t * (*pl_get_for_idx_and_iter) (int idx, int iter);
float (*pl_get_totaltime) (void);
diff --git a/playlist.c b/playlist.c
index 8f58ff4c..8f8643e4 100644
--- a/playlist.c
+++ b/playlist.c
@@ -1539,11 +1539,16 @@ pl_get_for_idx (int idx) {
int
pl_get_idx_of (playItem_t *it) {
+ return pl_get_idx_of_iter (it, PL_MAIN);
+}
+
+int
+pl_get_idx_of_iter (playItem_t *it, int iter) {
LOCK;
- playItem_t *c = playlist->head[PL_MAIN];
+ playItem_t *c = playlist->head[iter];
int idx = 0;
while (c && c != it) {
- c = c->next[PL_MAIN];
+ c = c->next[iter];
idx++;
}
if (!c) {
diff --git a/playlist.h b/playlist.h
index 403246c4..2acc1f87 100644
--- a/playlist.h
+++ b/playlist.h
@@ -183,6 +183,9 @@ pl_get_for_idx_and_iter (int idx, int iter);
int
pl_get_idx_of (playItem_t *it);
+int
+pl_get_idx_of_iter (playItem_t *it, int iter);
+
playItem_t *
pl_insert_cue_from_buffer (playItem_t *after, playItem_t *origin, const uint8_t *buffer, int buffersize, int numsamples, int samplerate);
diff --git a/plugins.c b/plugins.c
index aa2b094b..3aa60bcb 100644
--- a/plugins.c
+++ b/plugins.c
@@ -132,6 +132,7 @@ static DB_functions_t deadbeef_api = {
.pl_insert_dir = (DB_playItem_t *(*) (DB_playItem_t *after, const char *dirname, int *pabort, int (*cb)(DB_playItem_t *it, void *data), void *user_data))pl_insert_dir,
.pl_insert_file = (DB_playItem_t *(*) (DB_playItem_t *after, const char *fname, int *pabort, int (*cb)(DB_playItem_t *it, void *data), void *user_data))pl_insert_file,
.pl_get_idx_of = (int (*) (DB_playItem_t *it))pl_get_idx_of,
+ .pl_get_idx_of_iter = (int (*) (DB_playItem_t *it, int iter))pl_get_idx_of_iter,
.pl_get_for_idx = (DB_playItem_t * (*)(int))pl_get_for_idx,
.pl_get_for_idx_and_iter = (DB_playItem_t * (*) (int idx, int iter))pl_get_for_idx_and_iter,
.pl_set_item_duration = (void (*) (DB_playItem_t *it, float duration))pl_set_item_duration,
diff --git a/plugins/gtkui/gtkui.c b/plugins/gtkui/gtkui.c
index ea2299a0..5b41dcf0 100644
--- a/plugins/gtkui/gtkui.c
+++ b/plugins/gtkui/gtkui.c
@@ -415,11 +415,11 @@ gtkui_set_titlebar (DB_playItem_t *it) {
}
static void
-trackinfochanged_wrapper (DdbListview *playlist, DB_playItem_t *track) {
+trackinfochanged_wrapper (DdbListview *playlist, DB_playItem_t *track, int iter) {
if (track) {
- int idx = deadbeef->pl_get_idx_of (track);
+ int idx = deadbeef->pl_get_idx_of_iter (track, iter);
if (idx != -1) {
- ddb_listview_draw_row (DDB_LISTVIEW (playlist), idx, (DdbListviewIter)track);
+ ddb_listview_draw_row (playlist, idx, (DdbListviewIter)track);
}
}
}
@@ -428,11 +428,11 @@ static gboolean
trackinfochanged_cb (gpointer data) {
DB_playItem_t *track = (DB_playItem_t *)data;
GtkWidget *playlist = lookup_widget (mainwin, "playlist");
- trackinfochanged_wrapper (DDB_LISTVIEW (playlist), track);
+ trackinfochanged_wrapper (DDB_LISTVIEW (playlist), track, PL_MAIN);
if (searchwin && gtk_widget_get_visible (searchwin)) {
GtkWidget *search = lookup_widget (searchwin, "searchlist");
- trackinfochanged_wrapper (DDB_LISTVIEW (search), track);
+ trackinfochanged_wrapper (DDB_LISTVIEW (search), track, PL_SEARCH);
}
DB_playItem_t *curr = deadbeef->streamer_get_playing_track ();