Code

screen_lyrics: removed the "update" method
[ncmpc.git] / src / screen_lyrics.c
index 15258009274cffdcaff845c92c637dac658fc61a..d83bf5b36b993d9acfdca8cd8d2356aa8f3873d5 100644 (file)
@@ -82,8 +82,31 @@ screen_lyrics_clear(void)
        g_ptr_array_set_size(current.lines, 0);
 }
 
-static const char *
-list_callback(unsigned idx, int *highlight, void *data);
+static void
+lyrics_paint(mpdclient_t *c);
+
+/**
+ * Repaint and update the screen.
+ */
+static void
+lyrics_repaint(void)
+{
+       lyrics_paint(NULL);
+       wrefresh(lw->w);
+}
+
+/**
+ * Repaint and update the screen, if it is currently active.
+ */
+static void
+lyrics_repaint_if_active(void)
+{
+       if (get_cur_mode_id() == 104) { /* XXX don't use the literal number */
+               lyrics_repaint();
+
+               /* XXX repaint the screen title */
+       }
+}
 
 static void
 screen_lyrics_set(const GString *str)
@@ -125,12 +148,7 @@ screen_lyrics_set(const GString *str)
 
        /* paint new data */
 
-       if (get_cur_mode_id() == 104) { /* XXX don't use the literal number */
-               list_window_paint(lw, list_callback, NULL);
-               wrefresh(lw->w);
-
-               /* XXX repaint the screen title */
-       }
+       lyrics_repaint_if_active();
 }
 
 static void
@@ -169,8 +187,6 @@ screen_lyrics_load(struct mpd_song *song)
                                     screen_lyrics_callback, NULL);
 }
 
-static void lyrics_paint(screen_t *screen, mpdclient_t *c);
-
 static FILE *create_lyr_file(const char *artist, const char *title)
 {
        char path[1024];
@@ -262,29 +278,18 @@ lyrics_title(char *str, size_t size)
 }
 
 static void
-lyrics_paint(mpd_unused screen_t *screen, mpd_unused mpdclient_t *c)
+lyrics_paint(mpd_unused mpdclient_t *c)
 {
        list_window_paint(lw, list_callback, NULL);
-       wrefresh(lw->w);
 }
 
-
-static void
-lyrics_update(mpd_unused screen_t *screen, mpd_unused mpdclient_t *c)
-{
-       if( lw->repaint ) {
-               list_window_paint(lw, list_callback, NULL);
-               wrefresh(lw->w);
-               lw->repaint = 0;
-       }
-}
-
-
 static int
 lyrics_cmd(screen_t *screen, mpdclient_t *c, command_t cmd)
 {
-       if (list_window_scroll_cmd(lw, current.lines->len, cmd))
+       if (list_window_scroll_cmd(lw, current.lines->len, cmd)) {
+               lyrics_repaint();
                return 1;
+       }
 
        switch(cmd) {
        case CMD_INTERRUPT:
@@ -301,7 +306,7 @@ lyrics_cmd(screen_t *screen, mpdclient_t *c, command_t cmd)
        case CMD_LYRICS_UPDATE:
                if (c->song != NULL) {
                        screen_lyrics_load(c->song);
-                       lyrics_paint(NULL, NULL);
+                       lyrics_repaint();
                }
                return 1;
        default:
@@ -314,6 +319,7 @@ lyrics_cmd(screen_t *screen, mpdclient_t *c, command_t cmd)
                        cmd, list_callback, NULL)) {
                /* center the row */
                list_window_center(lw, current.lines->len, lw->selected);
+               lyrics_repaint();
                return 1;
        }
 
@@ -327,7 +333,6 @@ const struct screen_functions screen_lyrics = {
        .close = NULL,
        .resize = lyrics_resize,
        .paint = lyrics_paint,
-       .update = lyrics_update,
        .cmd = lyrics_cmd,
        .get_title = lyrics_title,
 };