diff --git a/source/ngc/menu.cpp b/source/ngc/menu.cpp index a6b9feb..998f057 100644 --- a/source/ngc/menu.cpp +++ b/source/ngc/menu.cpp @@ -299,6 +299,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) { @@ -361,7 +363,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; @@ -377,7 +389,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) { @@ -410,6 +430,7 @@ static void * ProgressThread (void *arg) LWP_SuspendThread (progressthread); ProgressWindow(progressTitle, progressMsg); + usleep(THREAD_SLEEP); } return NULL; } @@ -452,7 +473,7 @@ CancelAction() void ShowProgress (const char *msg, int done, int total) { - if(!mainWindow) + if(!mainWindow || ExitRequested || ShutdownRequested) return; if(total < (256*1024)) @@ -483,7 +504,7 @@ ShowProgress (const char *msg, int done, int total) void ShowAction (const char *msg) { - if(!mainWindow) + if(!mainWindow || ExitRequested || ShutdownRequested) return; if(showProgress != 0)