summaryrefslogtreecommitdiff
path: root/src/bar.c
diff options
context:
space:
mode:
authorsabetts <sabetts>2003-02-27 12:33:00 +0000
committersabetts <sabetts>2003-02-27 12:33:00 +0000
commit293fca91a75f15c696c2f1d9dd4227f558cfc26f (patch)
tree9fa4d15ede6975b561b07d4d8004c0885c8124fd /src/bar.c
parent6b341ac568efd980ddbbbfbb2c4960204879afdb (diff)
downloadratpoison-293fca91a75f15c696c2f1d9dd4227f558cfc26f.zip
* src/main.c (free_screen): new function
(clean_up): call free_screen on each screen. free the screen array. free defaults.window_fmt. * src/number.h (free_numbers): new prototype * src/number.c (free_numbers): new function * src/manage.c (get_wmname): use XGetWindowProperty to get the window name. (unmanaged_window): free wname after using it. * src/main.c (wm_name): new global (main): internalize WM_NAME atom. (clean_up): free data structures for keybindings, aliases, the bar, window numbers, and input history. * src/input.h (free_history): new prototype * src/input.c (free_history): new function * src/events.c (execute_remote_command): free properties returned by XGetWindowProperty(). * src/data.h (wm_name): new extern * src/communications.c (recieve_command_result): free properties returned by XGetWindowProperty(). * src/bar.h (free_bar): new prototype * src/bar.c (update_window_names): bar_buffer is not static. (update_window_names): free bar_buffer after using it. (marked_message): free the GC after using it. (free_bar): new function. * src/actions.h (free_keybindings): new prototype (free_aliases): likewise * src/actions.c (free_keybindings): new function (free_aliases): likewise (cmd_tmpwm): unmap the key window before calling the new wm, and remap it afterwards.
Diffstat (limited to 'src/bar.c')
-rw-r--r--src/bar.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/bar.c b/src/bar.c
index 547e4e2..d363305 100644
--- a/src/bar.c
+++ b/src/bar.c
@@ -138,19 +138,18 @@ bar_y (screen_info *s)
void
update_window_names (screen_info *s)
{
- static struct sbuf *bar_buffer = NULL;
-
+ struct sbuf *bar_buffer;
int mark_start = 0;
int mark_end = 0;
if (s->bar_is_raised != BAR_IS_WINDOW_LIST) return;
- if (bar_buffer == NULL)
- bar_buffer = sbuf_new (0);
+ bar_buffer = sbuf_new (0);
get_window_list (defaults.window_fmt, NULL, bar_buffer, &mark_start, &mark_end);
marked_message (sbuf_get (bar_buffer), mark_start, mark_end);
+ sbuf_free (bar_buffer);
}
void
@@ -253,11 +252,13 @@ marked_message (char *msg, int mark_start, int mark_end)
lgc = XCreateGC(dpy, s->root, mask, &lgv);
XFillRectangle (dpy, s->bar_window, lgc, start, 0, width, height);
+ XFreeGC (dpy, lgc);
lgv.foreground = s->bg_color;
lgc = XCreateGC(dpy, s->root, mask, &lgv);
XFillRectangle (dpy, s->bar_window, lgc, start, 0, width, height);
+ XFreeGC (dpy, lgc);
}
/* Keep a record of the message. */
@@ -283,3 +284,11 @@ show_last_message ()
marked_message (msg, last_mark_start, last_mark_end);
free (msg);
}
+
+/* Free any memory associated with the bar. */
+void
+free_bar ()
+{
+ if (last_msg)
+ free (last_msg);
+}