File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -2046,11 +2046,13 @@ void cmd_randomize() {
20462046 * DELAY
20472047 */
20482048void cmd_delay () {
2049- uint32_t ms = par_getint ();
2049+ int32_t ms = par_getint ();
20502050 if (prog_error ) {
20512051 return ;
20522052 }
2053- dev_delay (ms );
2053+ if (ms > 0 ) {
2054+ dev_delay (ms );
2055+ }
20542056}
20552057
20562058/**
Original file line number Diff line number Diff line change @@ -880,7 +880,8 @@ void Runtime::pause(int timeout) {
880880 delete event;
881881 }
882882 } else {
883- uint32_t startTime = dev_get_millisecond_count ();
883+ int slept;
884+ int now = dev_get_millisecond_count ();
884885 while (true ) {
885886 pollEvents (false );
886887 if (isBreak ()) {
@@ -890,8 +891,11 @@ void Runtime::pause(int timeout) {
890891 processEvent (*event);
891892 delete event;
892893 }
893- usleep (1000 );
894- if (timeout > 0 && (dev_get_millisecond_count () - startTime) > timeout) {
894+ slept = dev_get_millisecond_count () - now;
895+ if (timeout - slept > WAIT_INTERVAL) {
896+ usleep (WAIT_INTERVAL * 1000 );
897+ } else {
898+ usleep ((timeout - slept) * 1000 );
895899 break ;
896900 }
897901 }
Original file line number Diff line number Diff line change @@ -444,18 +444,17 @@ int osd_textheight(const char *str) {
444444// delay while pumping events
445445//
446446void dev_delay (uint32_t timeout) {
447- uint32_t slept = 0 ;
447+ uint32_t slept;
448448 uint32_t now = dev_get_millisecond_count ();
449449 while (1 ) {
450450 if (osd_events (0 ) < 0 ) {
451451 break ;
452452 }
453- if (dev_get_millisecond_count () - now > timeout) {
454- break ;
455- }
456- usleep (WAIT_INTERVAL * 1000 );
457- slept += WAIT_INTERVAL;
458- if (timeout > 0 && slept > timeout) {
453+ slept = dev_get_millisecond_count () - now;
454+ if (timeout - slept > WAIT_INTERVAL) {
455+ usleep (WAIT_INTERVAL * 1000 );
456+ } else {
457+ usleep ((timeout - slept) * 1000 );
459458 break ;
460459 }
461460 }
Original file line number Diff line number Diff line change @@ -417,7 +417,8 @@ void Runtime::pause(int timeout) {
417417 delete event;
418418 }
419419 } else {
420- int slept = 0 ;
420+ int slept;
421+ int now = dev_get_millisecond_count ();
421422 while (true ) {
422423 pollEvents (false );
423424 if (isBreak ()) {
@@ -427,9 +428,11 @@ void Runtime::pause(int timeout) {
427428 processEvent (*event);
428429 delete event;
429430 }
430- usleep (WAIT_INTERVAL * 1000 );
431- slept += WAIT_INTERVAL;
432- if (timeout > 0 && slept > timeout) {
431+ slept = dev_get_millisecond_count () - now;
432+ if (timeout - slept > WAIT_INTERVAL) {
433+ usleep (WAIT_INTERVAL * 1000 );
434+ } else {
435+ usleep ((timeout - slept) * 1000 );
433436 break ;
434437 }
435438 }
You can’t perform that action at this time.
0 commit comments