From 64c4669f579dc5ad8d05329abffbd752ad0ed8f2 Mon Sep 17 00:00:00 2001 From: Anatol Pomozov Date: Tue, 5 May 2020 18:28:49 -0700 Subject: Introduce event types for start/end database list download Multiplexed database/files downloads will use multiple progress bars. The UI logic is quite complicated and printing error messages while handling multiple progress bars is going to be challenging. Instead we are going to save all ALPM error messages to a list and flush it at the end of the download process. Use on_progress variable that blocks error messages printing. Signed-off-by: Anatol Pomozov Signed-off-by: Allan McRae --- src/pacman/callback.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/pacman/callback.c b/src/pacman/callback.c index 8fb89b39..a129758b 100644 --- a/src/pacman/callback.c +++ b/src/pacman/callback.c @@ -280,8 +280,12 @@ void cb_event(alpm_event_t *event) case ALPM_EVENT_SCRIPTLET_INFO: fputs(event->scriptlet_info.line, stdout); break; - case ALPM_EVENT_RETRIEVE_START: + case ALPM_EVENT_DB_RETRIEVE_START: + on_progress = 1; + break; + case ALPM_EVENT_PKG_RETRIEVE_START: colon_printf(_("Retrieving packages...\n")); + on_progress = 1; break; case ALPM_EVENT_DISKSPACE_START: if(config->noprogressbar) { @@ -338,6 +342,13 @@ void cb_event(alpm_event_t *event) } } break; + case ALPM_EVENT_DB_RETRIEVE_DONE: + case ALPM_EVENT_DB_RETRIEVE_FAILED: + case ALPM_EVENT_PKG_RETRIEVE_DONE: + case ALPM_EVENT_PKG_RETRIEVE_FAILED: + flush_output_list(); + on_progress = 0; + break; /* all the simple done events, with fallthrough for each */ case ALPM_EVENT_FILECONFLICTS_DONE: case ALPM_EVENT_CHECKDEPS_DONE: @@ -349,8 +360,6 @@ void cb_event(alpm_event_t *event) case ALPM_EVENT_KEY_DOWNLOAD_DONE: case ALPM_EVENT_LOAD_DONE: case ALPM_EVENT_DISKSPACE_DONE: - case ALPM_EVENT_RETRIEVE_DONE: - case ALPM_EVENT_RETRIEVE_FAILED: case ALPM_EVENT_HOOK_DONE: case ALPM_EVENT_HOOK_RUN_DONE: /* we can safely ignore those as well */ -- cgit v1.2.3-70-g09d2