fixed 2 small memory leaks & adds format attribute to log.

This commit is contained in:
taiyu 2015-08-15 21:21:20 -07:00
parent d3d0ba3a4b
commit 083d1eed1f
6 changed files with 26 additions and 17 deletions

View file

@ -31,6 +31,9 @@ static void free_swayc(swayc_t *c) {
} }
remove_child(c->parent, c); remove_child(c->parent, c);
} }
if (c->name) {
free(c->name);
}
free(c); free(c);
} }

View file

@ -88,21 +88,21 @@ static void handle_output_focused(wlc_handle output, bool focus) {
static bool handle_view_created(wlc_handle handle) { static bool handle_view_created(wlc_handle handle) {
swayc_t *focused = get_focused_container(&root_container); swayc_t *focused = get_focused_container(&root_container);
swayc_t *view = new_view(focused, handle); swayc_t *view = new_view(focused, handle);
//Leave unamanaged windows alone
if (view) { if (view) {
//Set maximize flag for windows. arrange_windows(view->parent, -1, -1);
//TODO: floating windows have this unset
wlc_view_set_state(handle, WLC_BIT_MAXIMIZED, true); wlc_view_set_state(handle, WLC_BIT_MAXIMIZED, true);
if (!(wlc_view_get_state(focused->handle) & WLC_BIT_FULLSCREEN)) {
unfocus_all(&root_container); unfocus_all(&root_container);
focus_view(view); focus_view(view);
arrange_windows(view->parent, -1, -1); }
} else { //Unmanaged view else {
wlc_view_set_state(handle, WLC_BIT_ACTIVATED, true); wlc_view_set_state(handle, WLC_BIT_ACTIVATED, true);
wlc_view_focus(handle); wlc_view_focus(handle);
} }
if (wlc_view_get_state(focused->handle) & WLC_BIT_FULLSCREEN) { } else {
unfocus_all(&root_container); wlc_view_set_state(handle, WLC_BIT_ACTIVATED, true);
focus_view(focused); wlc_view_focus(handle);
arrange_windows(focused, -1, -1);
} }
return true; return true;
} }

View file

@ -215,10 +215,10 @@ swayc_t *get_swayc_for_handle(wlc_handle handle, swayc_t *parent) {
} }
swayc_t *get_focused_container(swayc_t *parent) { swayc_t *get_focused_container(swayc_t *parent) {
if (parent->focused == NULL) { while (parent->focused) {
return parent; parent = parent->focused;
} }
return get_focused_container(parent->focused); return parent;
} }
void unfocus_all(swayc_t *container) { void unfocus_all(swayc_t *container) {

View file

@ -1,6 +1,10 @@
#ifndef _SWAY_LOG_H #ifndef _SWAY_LOG_H
#define _SWAY_LOG_H #define _SWAY_LOG_H
#ifndef __GNUC__
# define __attribute__(x)
#endif
typedef enum { typedef enum {
L_SILENT = 0, L_SILENT = 0,
L_ERROR = 1, L_ERROR = 1,
@ -8,9 +12,10 @@ typedef enum {
L_DEBUG = 3, L_DEBUG = 3,
} log_importance_t; } log_importance_t;
void init_log(int verbosity); void init_log(int verbosity);
void sway_log_colors(int mode); void sway_log_colors(int mode);
void sway_log(int verbosity, char* format, ...); void sway_log(int verbosity, char* format, ...)__attribute__((format (printf,2,3)));
void sway_abort(char* format, ...); void sway_abort(char* format, ...) __attribute__((format (printf,1,2)));
#endif #endif

View file

@ -67,6 +67,7 @@ list_t *split_string(const char *str, const char *delims) {
j++; j++;
i++; i++;
} }
free(left);
} }
} }
return res; return res;

View file

@ -26,7 +26,7 @@ char *workspace_next_name(void) {
list_t *args = split_string(command, " "); list_t *args = split_string(command, " ");
if (strcmp("workspace", args->items[0]) == 0 && args->length > 1) { if (strcmp("workspace", args->items[0]) == 0 && args->length > 1) {
sway_log(L_DEBUG, "Got valid workspace command for target: '%s'", args->items[1]); sway_log(L_DEBUG, "Got valid workspace command for target: '%s'", (char *)args->items[1]);
char* target = malloc(strlen(args->items[1]) + 1); char* target = malloc(strlen(args->items[1]) + 1);
strcpy(target, args->items[1]); strcpy(target, args->items[1]);
while (*target == ' ' || *target == '\t') while (*target == ' ' || *target == '\t')