Clear stale exception in _exec_result; more status_bar fixups
This commit is contained in:
parent
2fa671c0f8
commit
2c42a48962
4
main.c
4
main.c
@ -458,6 +458,7 @@ STATIC bool run_code_py(safe_mode_t safe_mode, bool first_run, bool *simulate_re
|
|||||||
|
|
||||||
// Finished executing python code. Cleanup includes filesystem flush and a board reset.
|
// Finished executing python code. Cleanup includes filesystem flush and a board reset.
|
||||||
cleanup_after_vm(heap, _exec_result.exception);
|
cleanup_after_vm(heap, _exec_result.exception);
|
||||||
|
_exec_result.exception = NULL;
|
||||||
|
|
||||||
// If a new next code file was set, that is a reason to keep it (obviously). Stuff this into
|
// If a new next code file was set, that is a reason to keep it (obviously). Stuff this into
|
||||||
// the options because it can be treated like any other reason-for-stickiness bit. The
|
// the options because it can be treated like any other reason-for-stickiness bit. The
|
||||||
@ -841,6 +842,7 @@ STATIC void __attribute__ ((noinline)) run_boot_py(safe_mode_t safe_mode) {
|
|||||||
port_post_boot_py(true);
|
port_post_boot_py(true);
|
||||||
|
|
||||||
cleanup_after_vm(heap, _exec_result.exception);
|
cleanup_after_vm(heap, _exec_result.exception);
|
||||||
|
_exec_result.exception = NULL;
|
||||||
|
|
||||||
port_post_boot_py(false);
|
port_post_boot_py(false);
|
||||||
|
|
||||||
@ -992,7 +994,7 @@ int __attribute__((used)) main(void) {
|
|||||||
supervisor_workflow_start();
|
supervisor_workflow_start();
|
||||||
|
|
||||||
#if CIRCUITPY_STATUS_BAR
|
#if CIRCUITPY_STATUS_BAR
|
||||||
supervisor_status_bar_start();
|
supervisor_status_bar_request_update(true);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Boot script is finished, so now go into REPL or run code.py.
|
// Boot script is finished, so now go into REPL or run code.py.
|
||||||
|
@ -40,6 +40,11 @@ bool shared_module_supervisor_status_bar_get_console(supervisor_status_bar_obj_t
|
|||||||
}
|
}
|
||||||
|
|
||||||
void shared_module_supervisor_status_bar_set_console(supervisor_status_bar_obj_t *self, bool enabled) {
|
void shared_module_supervisor_status_bar_set_console(supervisor_status_bar_obj_t *self, bool enabled) {
|
||||||
|
if (self->console == enabled) {
|
||||||
|
// Do nothing if not changing the state.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (self->written) {
|
if (self->written) {
|
||||||
// Clear before changing state. If disabling, will remain cleared.
|
// Clear before changing state. If disabling, will remain cleared.
|
||||||
supervisor_status_bar_clear();
|
supervisor_status_bar_clear();
|
||||||
@ -57,6 +62,11 @@ bool shared_module_supervisor_status_bar_get_display(supervisor_status_bar_obj_t
|
|||||||
|
|
||||||
#if CIRCUITPY_TERMINALIO
|
#if CIRCUITPY_TERMINALIO
|
||||||
void shared_module_supervisor_status_bar_set_display(supervisor_status_bar_obj_t *self, bool enabled) {
|
void shared_module_supervisor_status_bar_set_display(supervisor_status_bar_obj_t *self, bool enabled) {
|
||||||
|
if (self->display == enabled) {
|
||||||
|
// Do nothing if not changing the state.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (self->written) {
|
if (self->written) {
|
||||||
// Clear before changing state. If disabling, will remain cleared.
|
// Clear before changing state. If disabling, will remain cleared.
|
||||||
terminalio_terminal_clear_status_bar(&supervisor_terminal);
|
terminalio_terminal_clear_status_bar(&supervisor_terminal);
|
||||||
|
@ -50,13 +50,6 @@ static background_callback_t status_bar_background_cb;
|
|||||||
static bool _forced_dirty = false;
|
static bool _forced_dirty = false;
|
||||||
static bool _suspended = false;
|
static bool _suspended = false;
|
||||||
|
|
||||||
void supervisor_status_bar_init(void) {
|
|
||||||
shared_module_supervisor_status_bar_obj.console = true;
|
|
||||||
shared_module_supervisor_status_bar_obj.display = true;
|
|
||||||
shared_module_supervisor_status_bar_obj.update_in_progress = false;
|
|
||||||
shared_module_supervisor_status_bar_obj.written = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Clear if possible, but give up if we can't do it now.
|
// Clear if possible, but give up if we can't do it now.
|
||||||
void supervisor_status_bar_clear(void) {
|
void supervisor_status_bar_clear(void) {
|
||||||
if (!_suspended) {
|
if (!_suspended) {
|
||||||
@ -121,8 +114,6 @@ static void status_bar_background(void *data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void supervisor_status_bar_start(void) {
|
void supervisor_status_bar_start(void) {
|
||||||
status_bar_background_cb.fun = status_bar_background;
|
|
||||||
status_bar_background_cb.data = NULL;
|
|
||||||
supervisor_status_bar_request_update(true);
|
supervisor_status_bar_request_update(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,3 +132,13 @@ void supervisor_status_bar_resume(void) {
|
|||||||
_suspended = false;
|
_suspended = false;
|
||||||
supervisor_status_bar_request_update(false);
|
supervisor_status_bar_request_update(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void supervisor_status_bar_init(void) {
|
||||||
|
status_bar_background_cb.fun = status_bar_background;
|
||||||
|
status_bar_background_cb.data = NULL;
|
||||||
|
|
||||||
|
shared_module_supervisor_status_bar_obj.console = true;
|
||||||
|
shared_module_supervisor_status_bar_obj.display = true;
|
||||||
|
shared_module_supervisor_status_bar_obj.update_in_progress = false;
|
||||||
|
shared_module_supervisor_status_bar_obj.written = false;
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user