diff --git a/src/task.c b/src/task.c index ceea09126c4461135c53c5a5b70355398bb475e7..d787e92af8cfffbfb397da254ca50515383e0194 100644 --- a/src/task.c +++ b/src/task.c @@ -261,6 +261,11 @@ void task_unlock(struct task *t) { /* Act based on task type. */ switch (type) { + case task_type_drift: + cell_unlocktree(ci); + cell_gunlocktree(ci); + break; + case task_type_sort: cell_unlocktree(ci); break; @@ -328,6 +333,15 @@ int task_lock(struct task *t) { #endif break; + case task_type_drift: + if (ci->hold || ci->ghold) return 0; + if (cell_locktree(ci) != 0) return 0; + if (cell_glocktree(ci) != 0) { + cell_unlocktree(ci); + return 0; + } + break; + case task_type_sort: if (cell_locktree(ci) != 0) return 0; break;