Code

status_bar: export _clear_message()
authorMax Kellermann <max@duempel.org>
Fri, 8 Nov 2013 17:04:36 +0000 (18:04 +0100)
committerMax Kellermann <max@duempel.org>
Fri, 8 Nov 2013 17:04:36 +0000 (18:04 +0100)
src/screen_status.c
src/screen_status.h
src/status_bar.c
src/status_bar.h

index 36f8753d8eec27c8bacd3db95fe293bff1a64a09..ca61fee17186304b3252720673c1cc8f8d6f563a 100644 (file)
 
 #include <stdarg.h>
 
+void
+screen_status_clear_message(void)
+{
+       status_bar_clear_message(&screen.status_bar);
+}
+
 void
 screen_status_message(const char *msg)
 {
index d951290ac1b50a6ae7f92cb16ffb8bef3dea3b17..60959eb321da5156e0223fb4117968585c1d7ef1 100644 (file)
@@ -20,6 +20,9 @@
 #ifndef NCMPC_SCREEN_STATUS_H
 #define NCMPC_SCREEN_STATUS_H
 
+void
+screen_status_clear_message(void);
+
 void
 screen_status_message(const char *msg);
 
index c6357f43e6b5f1caab63032d27a96bb30176ab3c..b1b301fd3df15524cbe4c4a60f29c9affe09e8bc 100644 (file)
@@ -61,22 +61,21 @@ status_bar_deinit(struct status_bar *p)
 #endif
 }
 
-static gboolean
-status_bar_clear_message(gpointer data)
+void
+status_bar_clear_message(struct status_bar *p)
 {
-       struct status_bar *p = data;
-       WINDOW *w = p->window.w;
-
        assert(p != NULL);
-       assert(p->message_source_id != 0);
 
-       p->message_source_id = 0;
+       if (p->message_source_id != 0) {
+               g_source_remove(p->message_source_id);
+               p->message_source_id = 0;
+       }
+
+       WINDOW *w = p->window.w;
 
        wmove(w, 0, 0);
        wclrtoeol(w);
        wrefresh(w);
-
-       return false;
 }
 
 #ifndef NCMPC_MINI
@@ -242,6 +241,17 @@ status_bar_resize(struct status_bar *p, unsigned width, int y, int x)
        mvwin(p->window.w, y, x);
 }
 
+static gboolean
+status_bar_clear_message_cb(gpointer data)
+{
+       struct status_bar *p = data;
+       assert(p->message_source_id != 0);
+       p->message_source_id = 0;
+
+       status_bar_clear_message(p);
+       return false;
+}
+
 void
 status_bar_message(struct status_bar *p, const char *msg)
 {
@@ -261,5 +271,5 @@ status_bar_message(struct status_bar *p, const char *msg)
        if (p->message_source_id != 0)
                g_source_remove(p->message_source_id);
        p->message_source_id = g_timeout_add(options.status_message_time * 1000,
-                                            status_bar_clear_message, p);
+                                            status_bar_clear_message_cb, p);
 }
index 71298e01f3d379e6870355e7d13560efda439c2c..9c8f4a9bf0a2125d452833a4c796d237f44ac02c 100644 (file)
@@ -60,4 +60,7 @@ status_bar_resize(struct status_bar *p, unsigned width, int y, int x);
 void
 status_bar_message(struct status_bar *p, const char *msg);
 
+void
+status_bar_clear_message(struct status_bar *p);
+
 #endif