From 53df4f53af196e90a7998d037f95f62105f96434 Mon Sep 17 00:00:00 2001 From: Alexey Yakovenko Date: Sun, 29 Aug 2010 17:21:06 +0200 Subject: fixed current track redraw in search window --- deadbeef.h | 1 + playlist.c | 9 +++++++-- playlist.h | 3 +++ plugins.c | 1 + plugins/gtkui/gtkui.c | 10 +++++----- 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 (); -- cgit v1.2.3