improve transaction cancellation

This commit is contained in:
guinux
2016-11-02 14:23:52 +01:00
parent 1315bb265e
commit 70fe12c83c
3 changed files with 23 additions and 3 deletions

View File

@@ -398,6 +398,11 @@ namespace Pamac {
emit_event (0, 0, {});
databases_lock_mutex.lock ();
}
if (cancellable.is_cancelled ()) {
databases_lock_mutex.unlock ();
cancellable.reset ();
return;
}
write_log_file ("synchronizing package lists");
current_error = ErrorInfos ();
int force = (force_refresh) ? 1 : 0;
@@ -1335,6 +1340,11 @@ namespace Pamac {
emit_event (0, 0, {});
databases_lock_mutex.lock ();
}
if (cancellable.is_cancelled ()) {
databases_lock_mutex.unlock ();
cancellable.reset ();
return false;
}
current_error = ErrorInfos ();
cancellable.reset ();
if (alpm_handle.trans_init (flags) == -1) {
@@ -1353,7 +1363,11 @@ namespace Pamac {
private void sysupgrade_prepare () {
current_error = ErrorInfos ();
if (!trans_init (0)) {
trans_prepare_finished (false);
if (cancellable.is_cancelled ()) {
trans_prepare_finished (true);
} else {
trans_prepare_finished (false);
}
return;
}
add_ignorepkgs ();
@@ -1610,7 +1624,11 @@ namespace Pamac {
trans_prepare_finished (false);
}
} else {
trans_prepare_finished (false);
if (cancellable.is_cancelled ()) {
trans_prepare_finished (true);
} else {
trans_prepare_finished (false);
}
}
}

View File

@@ -997,6 +997,7 @@ namespace Pamac {
action = dgettext (null, "Checking dependencies") + "...";
break;
case 3: //Alpm.Event.Type.FILECONFLICTS_START
start_transaction ();
action = dgettext (null, "Checking file conflicts") + "...";
break;
case 5: //Alpm.Event.Type.RESOLVEDEPS_START
@@ -1105,6 +1106,7 @@ namespace Pamac {
case 41: //Alpm.Event.Type.HOOK_START
switch (secondary_event) {
case 1: //Alpm.HookWhen.PRE_TRANSACTION
start_transaction ();
action = dgettext (null, "Running pre-transaction hooks") + "...";
break;
case 2: //Alpm.HookWhen.POST_TRANSACTION