Merge pull request #2037 from Airblader/bug-run-assignments

Fix assignments bug and a small logging bug
This commit is contained in:
Michael Stapelberg 2015-10-25 16:48:32 +01:00
commit b328d2423e
1 changed files with 8 additions and 6 deletions

View File

@ -40,6 +40,13 @@ void run_assignments(i3Window *window) {
if (skip) if (skip)
continue; continue;
/* Store that we ran this assignment to not execute it again. We have
* to do this before running the actual command to prevent infinite
* loops. */
window->nr_assignments++;
window->ran_assignments = srealloc(window->ran_assignments, sizeof(Assignment *) * window->nr_assignments);
window->ran_assignments[window->nr_assignments - 1] = current;
DLOG("matching assignment, would do:\n"); DLOG("matching assignment, would do:\n");
if (current->type == A_COMMAND) { if (current->type == A_COMMAND) {
DLOG("execute command %s\n", current->dest.command); DLOG("execute command %s\n", current->dest.command);
@ -53,11 +60,6 @@ void run_assignments(i3Window *window) {
command_result_free(result); command_result_free(result);
} }
/* Store that we ran this assignment to not execute it again */
window->nr_assignments++;
window->ran_assignments = srealloc(window->ran_assignments, sizeof(Assignment *) * window->nr_assignments);
window->ran_assignments[window->nr_assignments - 1] = current;
} }
/* If any of the commands required re-rendering, we will do that now. */ /* If any of the commands required re-rendering, we will do that now. */
@ -76,7 +78,7 @@ Assignment *assignment_for(i3Window *window, int type) {
if ((type != A_ANY && (assignment->type & type) == 0) || if ((type != A_ANY && (assignment->type & type) == 0) ||
!match_matches_window(&(assignment->match), window)) !match_matches_window(&(assignment->match), window))
continue; continue;
DLOG("got a matching assignment (to %s)\n", assignment->dest.workspace); DLOG("got a matching assignment\n");
return assignment; return assignment;
} }