diff options
author | sabetts <sabetts> | 2003-02-27 12:33:00 +0000 |
---|---|---|
committer | sabetts <sabetts> | 2003-02-27 12:33:00 +0000 |
commit | 293fca91a75f15c696c2f1d9dd4227f558cfc26f (patch) | |
tree | 9fa4d15ede6975b561b07d4d8004c0885c8124fd /src/manage.c | |
parent | 6b341ac568efd980ddbbbfbb2c4960204879afdb (diff) | |
download | ratpoison-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/manage.c')
-rw-r--r-- | src/manage.c | 47 |
1 files changed, 21 insertions, 26 deletions
diff --git a/src/manage.c b/src/manage.c index 451c809..1cdb66a 100644 --- a/src/manage.c +++ b/src/manage.c @@ -92,37 +92,30 @@ update_normal_hints (rp_window *win) static char * get_wmname (Window w) { - char *name; - XTextProperty text; - char **name_list; - int list_len; - - if (!XGetWMName (dpy, w, &text)) + Atom actual_type; + int actual_format; + int status; + unsigned long n; + unsigned long bytes_after; + unsigned char *name = NULL; + char *ret; + + status = XGetWindowProperty (dpy, w, wm_name, 0L, 100L, False, + XA_STRING, &actual_type, &actual_format, + &n, &bytes_after, &name); + + if (status != Success || name == NULL) { PRINT_DEBUG (("I can't get the WMName.\n")); return NULL; } - if (!XTextPropertyToStringList (&text, &name_list, &list_len)) - { - PRINT_DEBUG (("Error retrieving TextList.\n")); - return NULL; - } + /* duplicate the string into out own buffer, and free the one given + to us by X. */ + ret = xstrdup (name); + XFree (name); - if (list_len > 0) - { - name = xmalloc (strlen (name_list[0]) + 1); - strcpy (name, name_list[0]); - } - else - { - name = NULL; - } - - /* Its our responsibility to free this. */ - XFreeStringList (name_list); - - return name; + return ret; } static XClassHint * @@ -276,7 +269,7 @@ unmanage (rp_window *w) { return_window_number (w->number); list_del (&w->node); - free_window (w); + free_window (w); #ifdef AUTO_CLOSE if (rp_mapped_window_sentinel->next == rp_mapped_window_sentinel @@ -353,6 +346,8 @@ unmanaged_window (Window w) free (wname); return 1; } + + free (wname); } return 0; |