diff options
| author | sommersoft <sommersoft@gmail.com> | 2019-02-22 23:12:11 +0000 |
|---|---|---|
| committer | sommersoft <sommersoft@gmail.com> | 2019-02-22 23:12:11 +0000 |
| commit | a1060747f866073dba4782d3067038cd7148cdb0 (patch) | |
| tree | 71b193e4a5f8217c619da7c59b6e6a70948d29bf /shared-module | |
| parent | ea9200a042e4a0c5fe0e773498d7697a5ea1c07f (diff) | |
| parent | d33923942bfa69c9a9ae30d5ee62f86e402b1b48 (diff) | |
Merge branch 'new_master' into new_freq_in
Diffstat (limited to 'shared-module')
| -rw-r--r-- | shared-module/displayio/Display.c | 2 | ||||
| -rw-r--r-- | shared-module/displayio/__init__.c | 20 | ||||
| -rw-r--r-- | shared-module/storage/__init__.c | 5 |
3 files changed, 23 insertions, 4 deletions
diff --git a/shared-module/displayio/Display.c b/shared-module/displayio/Display.c index f14a27b78..da3424a36 100644 --- a/shared-module/displayio/Display.c +++ b/shared-module/displayio/Display.c @@ -121,7 +121,7 @@ void common_hal_displayio_display_construct(displayio_display_obj_t* self, // Always set the backlight type in case we're reusing memory. self->backlight_inout.base.type = &mp_type_NoneType; if (backlight_pin != NULL && common_hal_mcu_pin_is_free(backlight_pin)) { - pwmout_result_t result = common_hal_pulseio_pwmout_construct(&self->backlight_pwm, backlight_pin, 0, 5000, false); + pwmout_result_t result = common_hal_pulseio_pwmout_construct(&self->backlight_pwm, backlight_pin, 0, 50000, false); if (result != PWMOUT_OK) { self->backlight_inout.base.type = &digitalio_digitalinout_type; common_hal_digitalio_digitalinout_construct(&self->backlight_inout, backlight_pin); diff --git a/shared-module/displayio/__init__.c b/shared-module/displayio/__init__.c index c4f9cbeb7..0d35abf0f 100644 --- a/shared-module/displayio/__init__.c +++ b/shared-module/displayio/__init__.c @@ -2,10 +2,12 @@ #include <string.h> #include "shared-module/displayio/__init__.h" +#include "py/reload.h" #include "shared-bindings/displayio/Bitmap.h" #include "shared-bindings/displayio/Display.h" #include "shared-bindings/displayio/Group.h" #include "shared-bindings/displayio/Palette.h" +#include "supervisor/shared/autoreload.h" #include "supervisor/shared/display.h" #include "supervisor/memory.h" #include "supervisor/usb.h" @@ -18,7 +20,19 @@ static inline void swap(uint16_t* a, uint16_t* b) { *b = temp; } +bool refreshing_displays = false; + void displayio_refresh_displays(void) { + // Somehow reloads from the sdcard are being lost. So, cheat and reraise. + if (reload_requested) { + mp_raise_reload_exception(); + return; + } + + if (refreshing_displays) { + return; + } + refreshing_displays = true; for (uint8_t i = 0; i < CIRCUITPY_DISPLAY_LIMIT; i++) { if (displays[i].display.base.type == NULL || displays[i].display.base.type == &mp_type_NoneType) { continue; @@ -27,6 +41,7 @@ void displayio_refresh_displays(void) { displayio_display_update_backlight(display); if (!displayio_display_frame_queued(display)) { + refreshing_displays = false; return; } if (displayio_display_refresh_queued(display)) { @@ -89,8 +104,9 @@ void displayio_refresh_displays(void) { index += 1; // The buffer is full, send it. if (index >= buffer_size) { - if (!displayio_display_send_pixels(display, buffer, buffer_size / 2)) { + if (!displayio_display_send_pixels(display, buffer, buffer_size / 2) || reload_requested) { displayio_display_finish_region_update(display); + refreshing_displays = false; return; } // TODO(tannewt): Make refresh displays faster so we don't starve other @@ -103,12 +119,14 @@ void displayio_refresh_displays(void) { // Send the remaining data. if (index && !displayio_display_send_pixels(display, buffer, index * 2)) { displayio_display_finish_region_update(display); + refreshing_displays = false; return; } displayio_display_finish_region_update(display); } displayio_display_finish_refresh(display); } + refreshing_displays = false; } void common_hal_displayio_release_displays(void) { diff --git a/shared-module/storage/__init__.c b/shared-module/storage/__init__.c index f09edd785..215e1356a 100644 --- a/shared-module/storage/__init__.c +++ b/shared-module/storage/__init__.c @@ -143,7 +143,7 @@ mp_obj_t common_hal_storage_getmount(const char *mount_path) { return storage_object_from_path(mount_path); } -void common_hal_storage_remount(const char *mount_path, bool readonly) { +void common_hal_storage_remount(const char *mount_path, bool readonly, bool disable_concurrent_write_protection) { if (strcmp(mount_path, "/") != 0) { mp_raise_OSError(MP_EINVAL); } @@ -156,7 +156,8 @@ void common_hal_storage_remount(const char *mount_path, bool readonly) { } #endif - supervisor_flash_set_usb_writable(readonly); + filesystem_set_internal_writable_by_usb(readonly); + filesystem_set_internal_concurrent_write_protection(!disable_concurrent_write_protection); } void common_hal_storage_erase_filesystem(void) { |
