Skip to content

Commit d1d3dc8

Browse files
author
Chris Warren-Smith
committed
Merge branch '12_32_2' of github.com:chrisws/SmallBASIC into 12_32_2
2 parents b01f325 + 330883b commit d1d3dc8

4 files changed

Lines changed: 24 additions & 16 deletions

File tree

src/common/blib.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2046,11 +2046,13 @@ void cmd_randomize() {
20462046
* DELAY
20472047
*/
20482048
void 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
/**

src/platform/android/jni/runtime.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff 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
}

src/platform/console/device.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -444,18 +444,17 @@ int osd_textheight(const char *str) {
444444
// delay while pumping events
445445
//
446446
void 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
}

src/platform/sdl/runtime.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff 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
}

0 commit comments

Comments
 (0)