Scott Shawcroft
5d17d6402d
Merge pull request #3366 from kmatch98/refresh_now
...
Update refresh to force immediate redraw with `display.refresh()`
2020-09-02 16:37:46 -07:00
Scott Shawcroft
786f4ed114
Merge pull request #3344 from jepler/issue-3184
...
Fix RGBMatrix, FrameBufferDisplay bugs
2020-09-02 15:32:30 -07:00
Jeff Epler
17a5a85528
rgbmatrix: Move struct definition to shared-module, rename 'core' member
2020-09-02 13:34:16 -05:00
Jeff Epler
3c083330f8
RGBMatrix: Remove unused, dead allocation
...
@tannewt noticed this in a pull request review. The allocated
memory was never used, but the GC would have collected it eventually.
2020-09-01 11:00:22 -05:00
Jeff Epler
71c63c2812
FramebufferDisplay: Don't set rotation via core_construct
...
The expectations of displayio.Display and frambufferio.FramebufferDisplay
are different when it comes to rotation.
In displayio.Display, if you call core_construct with a WxH = 64x32
and rotation=90, you get something that is 32 pixels wide and 64 pixels
tall in the LCD's coordinate system.
This is fine, as the existing definitions were written to work like this.
With framebuffer displays, however, the underlying framebuffer (such as
RGBMatrix) says "I am WxH pixels wide in my coordinate system" and the
constructor is given a rotation; when the rotation indicates a transpose
that means "exchange rows and columns, so that to the Groups displayed
on it, there is an effectively HxW pixel region for use".
Happily, we already have a set_rotation method. Thus (modulo the time
spent debugging things anyway:) the fix is simple: Always request no
rotation from core_construct, then immediately fix up the rotation
to match what was requested.
Testing performed: 32x16 RGBMatrix on Metro M4 Express (but using
the Airlift firmware, as this is the configuration the error was reported
on):
* initially construct display at 0, 90, 180, 270 degrees
* later change angle to 0, 90, 180, 270 degrees
* no garbled display
* no safe mode crashes
2020-09-01 11:00:22 -05:00
Jeff Epler
ce603dfebf
rgbmatrix: Disable timer while reconstructing the display
2020-09-01 11:00:22 -05:00
Jeff Epler
dfa90cc11d
allocator.h: add a missing license notice
2020-09-01 11:00:19 -05:00
Jeff Epler
e01ade3848
rgbmatrix: Don't inline the allocator functions
2020-09-01 11:00:07 -05:00
Jeff Epler
2f120c70ee
rgbmatrix: recover gracefully from allocation errors
...
e.g., allocating a 192x32x6bpp matrix would be enough to trigger this
reliably on a Metro M4 Express using the "memory hogging" layout.
Allocating 64x32x6bpp could trigger it, but somewhat unreliably.
There are several things going on here:
* we make the failing call with interrupts off
* we were throwing an exception with interrupts off
* protomatter failed badly in _PM_free when it was partially-initialized
Incorporate the fix from protomatter, switch to a non-throwing malloc
variant, and ensure that interrupts get turned back on.
This decreases the quality of the MemoryError (it cannot report the size
of the failed allocation) but allows CircuitPython to survive, rather
than faulting.
2020-09-01 10:55:45 -05:00
Kevin Matocha
fc513956be
Update refresh to force immediate redraw with display.refresh() or display.refresh(target_frames_per_second=None), even with auto_refresh=False
2020-09-01 09:36:29 -05:00
Dan Halbert
6dbd369272
merge from upstream
2020-08-30 14:39:03 -04:00
Scott Shawcroft
1527a3ce92
Merge remote-tracking branch 'adafruit/main' into add_pwmio
2020-08-24 18:25:18 -07:00
Kevin Matocha
983e1af33d
remove other extraneous files
2020-08-21 19:10:13 -05:00
Kevin Matocha
dc502a5f26
remove extraneous files
2020-08-21 19:08:25 -05:00
Kevin Matocha
a9f6d147c4
Merge adafruit/main latest
2020-08-21 14:37:32 -05:00
Kevin Matocha
7e529ed4c5
Merge with latest adafruit/main
2020-08-21 14:28:24 -05:00
Kevin Matocha
3753ea3cd8
Merge remote-tracking branch 'source/main' into main
2020-08-21 14:19:58 -05:00
Kevin Matocha
24ca133396
Updating main to adafruit/main
2020-08-21 14:19:28 -05:00
Scott Shawcroft
5771be9510
Merge pull request #3292 from jepler/allocate_display_bus_bug
...
allocate_display_bus: fix bug where in-use bus would be returned
2020-08-21 11:19:50 -07:00
Dan Halbert
0e30dd8bcc
merge from upstream; working; includes debug_out code for debugging via Saleae for posterity
2020-08-20 20:29:57 -04:00
Scott Shawcroft
6857f98426
Split pulseio.PWMOut into pwmio
...
This gives us better granularity when implementing new ports because
PWMOut is commonly implemented before PulseIn and PulseOut.
Fixes #3211
2020-08-18 13:08:33 -07:00
Scott Shawcroft
33c9bdb778
Merge pull request #3277 from jepler/sharpmemory-bugs
...
sharpdisplay: Prevent 'ValueError: <pin> in use' exception
2020-08-18 11:54:53 -07:00
Jeff Epler
f2f18da189
Fix build error for !SHARPDISPLAY
2020-08-18 10:59:55 -05:00
Jeff Epler
9e66f71a31
Fix build error for \!DISPLAY
2020-08-18 10:03:45 -05:00
Jeff Epler
0bec39118f
displayio: Don't need to specialcase reset of sharpdisplay framebuffer
...
.. for the case where the bus was not in use
2020-08-18 09:32:28 -05:00
Jeff Epler
b542c1486f
reset_board_buses: need to check if sharpdisplay uses SPI bus
2020-08-18 09:32:28 -05:00
Jeff Epler
6d2d36db3d
Finish implementing scott's suggestion
2020-08-17 21:09:21 -05:00
Jeff Epler
6425a411ca
Update shared-module/displayio/__init__.c
...
Co-authored-by: Scott Shawcroft <scott@tannewt.org>
2020-08-17 21:07:24 -05:00
Jeff Epler
1ccd2e234f
allocate_display_bus: fix bug where in-use bus would be returned
2020-08-17 10:48:23 -05:00
Kevin Matocha
fc1347ac2a
deleted whitespace
2020-08-14 13:37:06 -05:00
Kevin Matocha
ba5dedc1df
deleted whitespace
2020-08-14 13:37:06 -05:00
Kevin Matocha
b1fce9e933
Deleted trailing whitespace
2020-08-14 13:36:59 -05:00
Kevin Matocha
a66ef32da2
Added inclusive indexing for x2,y2, fixed default value handling for x1,y1, added bitmap palette comparison
2020-08-14 13:15:01 -05:00
Margaret Matocha
824f47d6e9
Added bitmap.blit function for bitmap slice copy
2020-08-14 12:59:57 -05:00
Margaret Matocha
4ba9ff892c
Added bitmap.blit function for copying slices of bitmaps
2020-08-14 12:59:48 -05:00
Kevin Matocha
14f5d03b6d
bringing up to date
2020-08-13 18:59:00 -05:00
Scott Shawcroft
ff5902f9f8
Merge branch 'main' into pixelbuf-iterable
2020-08-13 11:55:51 -07:00
Jeff Epler
195c0ea986
sharpdisplay: Make PARTIAL_UPDATES unconditional
2020-08-12 13:01:43 -05:00
Jeff Epler
d61f66d173
Update shared-module/framebufferio/FramebufferDisplay.h
...
Co-authored-by: Scott Shawcroft <scott@tannewt.org>
2020-08-12 12:50:08 -05:00
Jeff Epler
759ded9c38
Fix build errors when SHARPDISPLAY && !RGBMATRIX
2020-08-12 07:39:12 -05:00
Jeff Epler
c1400bae9b
sharpmemory: Implement support for Sharp Memory Displays in framebufferio
2020-08-12 07:32:18 -05:00
Jeff Epler
9c4f644641
framebufferio: add dirty row tracking
2020-08-12 07:32:18 -05:00
Jeff Epler
5e4ed93415
framebufferio: Add getters for remaining displayio_display_core_construct arguments
...
.. and introduce a convenience macro that helps many of them be required
(if their values match defaults or are inapplicable)
2020-08-12 07:32:18 -05:00
Jeff Epler
1ee2062c1b
framebufferio: Check early if framebuffer is big enough
2020-08-12 07:32:18 -05:00
Jeff Epler
a33e48c065
framebufferio: add "first pixel offset" and "row stride"
2020-08-12 07:32:18 -05:00
Jeff Epler
8021f3b4cb
framebufferio: handle sharp memory displays
...
A bit of cheating; we need to add a protocol getter for
reverse_bytes_in_word
2020-08-12 07:32:18 -05:00
Jeff Epler
a84cc19499
framebufferio: Handle 1 (tested), 2, and 4 bpp displays
2020-08-12 07:32:18 -05:00
Jeff Epler
6d19a09888
framebufferio: Set type to none when releasing
...
This avoids the message "Too many displays in use" when they are released
directly, rather than via release_displays().
2020-08-12 07:32:18 -05:00
Jeff Epler
5a7b2a2038
framebufferio: Don't call swapbuffers unnecessarily
2020-08-12 07:32:18 -05:00
Jeff Epler
ffc488e748
framebufferio: Fix crash calling unimplemented get_brightness
...
If set_brightness was implemented but get_brightness wasn't, this
would hard fault
2020-08-12 07:32:18 -05:00