summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@samsung.com>2013-12-19 14:56:34 -0500
committerMike Blumenkrantz <zmike@samsung.com>2013-12-19 14:56:34 -0500
commitd2168532529081d77c4662a4d3f067c639860e57 (patch)
treee324b56a396b0547a66fa9f7903945cffd94c0d4 /src
parentc2c9c3ab721db560f67a90f21cb7e7e1a75c8c96 (diff)
when rolling back an efm_op task, also remove children tasks
this simplifies/fixes the case where copying directories and canceling the operation would not correctly propagate the cancel to subtasks (contents of the directory) T680
Diffstat (limited to 'src')
-rw-r--r--src/bin/e_fm_op.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/bin/e_fm_op.c b/src/bin/e_fm_op.c
index 88b15d77d..f7fd78b60 100644
--- a/src/bin/e_fm_op.c
+++ b/src/bin/e_fm_op.c
@@ -975,9 +975,26 @@ static void
975_e_fm_op_rollback(E_Fm_Op_Task *task) 975_e_fm_op_rollback(E_Fm_Op_Task *task)
976{ 976{
977 E_Fm_Op_Copy_Data *data; 977 E_Fm_Op_Copy_Data *data;
978 E_Fm_Op_Task *t;
979 Eina_List *l, *ll;
978 980
979 if (!task) return; 981 if (!task) return;
980 982
983 EINA_LIST_FOREACH_SAFE(_e_fm_op_scan_queue, l, ll, t)
984 {
985 if (t == task) continue;
986 if (t->parent != task) continue;
987 _e_fm_op_scan_queue = eina_list_remove_list(_e_fm_op_scan_queue, l);
988 _e_fm_op_task_free(t);
989 }
990 EINA_LIST_FOREACH_SAFE(_e_fm_op_work_queue, l, ll, t)
991 {
992 if (t == task) continue;
993 if (t->parent != task) continue;
994 _e_fm_op_work_queue = eina_list_remove_list(_e_fm_op_work_queue, l);
995 _e_fm_op_task_free(t);
996 }
997
981 if (task->type == E_FM_OP_COPY) 998 if (task->type == E_FM_OP_COPY)
982 { 999 {
983 data = task->data; 1000 data = task->data;