diff --git a/source/ngc/menu.cpp b/source/ngc/menu.cpp index 66a595b..fd73a9d 100644 --- a/source/ngc/menu.cpp +++ b/source/ngc/menu.cpp @@ -302,6 +302,8 @@ UpdateGUI (void *arg) * progress bar showing % completion, or a throbber that only shows that an * action is in progress. ***************************************************************************/ +static int progsleep = 0; + static void ProgressWindow(char *title, char *msg) { @@ -364,7 +366,17 @@ ProgressWindow(char *title, char *msg) promptWindow.Append(&throbberImg); } - usleep(400000); // wait to see if progress flag changes soon + // wait to see if progress flag changes soon + progsleep = 400000; + + while(progsleep > 0) + { + if(!showProgress) + break; + usleep(THREAD_SLEEP); + progsleep -= THREAD_SLEEP; + } + if(!showProgress) return; @@ -380,7 +392,15 @@ ProgressWindow(char *title, char *msg) while(showProgress) { - usleep(20000); + progsleep = 20000; + + while(progsleep > 0) + { + if(!showProgress) + break; + usleep(THREAD_SLEEP); + progsleep -= THREAD_SLEEP; + } if(showProgress == 1) { @@ -456,7 +476,7 @@ CancelAction() void ShowProgress (const char *msg, int done, int total) { - if(!mainWindow) + if(!mainWindow || ExitRequested || ShutdownRequested) return; if(total < (256*1024)) @@ -487,7 +507,7 @@ ShowProgress (const char *msg, int done, int total) void ShowAction (const char *msg) { - if(!mainWindow) + if(!mainWindow || ExitRequested || ShutdownRequested) return; if(showProgress != 0)