the other items that scroll use the menu button and reset on STD_OK
OS stacks use STD_OK to scroll and any other button to reset
Change-Id: I1fa1caa322fe761c6f92d2d08cc418e78843863b
Fix FS#13832
If the remote is already plugged in when Rockbox boots, it stays dead
until you replug it. These remotes only send their identify packet
once at power-up, so we never see it and then throw away all button
events because lingo 0x02 was never negotiated. The OF doesn't care,
so accept ContextButtonStatus from unidentified devices too. Stray
bytes received before iap_setup() also made iap_getc() return false,
which the serial driver takes as "sync found" and locks autobaud onto
the wrong bitrate.
The ghost clicks come from the repeatbtn handshake. A held button
resends its down event every 30-100ms and each one re-armed
iap_repeatbtn, which stalls handling of the following packet. So
during a long press packets pile up, the event queue overflows, and
the leftovers replay as keypresses after you let go. Skipping fires
on button release which is why next/prev showed it the worst. Now
repeatbtn is only re-armed when the button state actually changes,
and iap_handlepkt() drains whatever complete packets are in the RX
buffer rather than relying on one queued event per packet.
While at it, fix two more things found along the way: the button
state is now written in one go (the temporary BUTTON_NONE could be
picked up by the button tick mid-update), and iap_rxlen is
decremented when a frame is received so the overflow check actually
does something.
Tested on ipodmini2g with an A1018 remote.
Change-Id: Ie18512e47d642fe6957fc010eaf79b6d2af4c070
Type 0 displays had to update the whole x line due to anything other
than a full line causing corruption and tearing
I figured out that flipping x and x_end
(LCD_W - x and LCD_W - x_end)
makes it work properly
Lowered the refresh rate to 95 Hz
Removed Fade in on screen enable
Change-Id: I0b8f76ad01ce7e48bd0a56aa321c30c30f91ce8d
Now that we have a datasheet for the type 1 display controller
it turns out the gamma correction was not being applied
the screen looks much better with it actually applied
also lowers display refresh from 120 HZ to 90 Hz and applied a mentioned
sleep mode (0x14) to save some power
Adds comments for the LCD commands ala type 0
Change-Id: I2d72df4d24b8bf9f3627bdb96ec9ce43ddd8b10a
Enable HAVE_LCD_FLIP for the Clip Zip and implement lcd_set_flip()
in the LCD driver, making the Display -> Flip Display setting work.
This lets the player be used upside down, e.g. clipped to clothing
with the control buttons pointing up and screen on the bottom.
Defining HAVE_LCD_FLIP also activates the existing button remap in
button_flip() (firmware/drivers/button.c) for this target: while the
display is flipped, LEFT/RIGHT, UP/DOWN and the volume keys are all
swapped to match the new orientation, so the whole device is usable
upside down, not just readable.
The flip is done in hardware by reversing the controller's GRAM write
direction and mirroring the write window in lcd_setup_rect, so partial
updates keep working and there is no per-frame cost. Both panel
variants are handled: the type 0 WiseChip/SEPS114A via MEMORY_WRITE/READ
(1Dh, 0x02), and the type 1 Visionox/LD7134 via the Graphic RAM Writing
Direction register (05h, 0x03). The direction register is written in
lcd_enable(), so it is set while the panel is powered and is re-applied
after display standby; lcd_set_flip() cycles the panel off and on so a
change to the setting takes effect immediately.
For the simulator, which has no real LCD controller, lcd_set_flip() is
implemented in the SDL LCD driver (lcd-bitmap.c) as a software mirror of
the framebuffer, so the flip is visible in theme previews; the generic
uisimulator stub is guarded out when HAVE_LCD_FLIP is defined.
Tested on real type 1 / LD7134 hardware in both orientations: display
content, button remapping and album art are all correct, and test_fps
shows partial updates run at full speed when flipped (1/4 frame 325 fps,
matching the non-flipped rate). The type 0 / SEPS114A path uses the same
approach; the 0x02 direction value was confirmed to flip a type 0 panel
by William Wilgus during review.
Change-Id: I99ef13949102b344826e72d1d90c71e2271448a6
display display type 0 / 1 in debug menu
update the comment on type 1 lcd I believe it to be a LDT LD7134 controller
the commands match up down to the gamma correction tables
Change-Id: Ic5d1d8db994a022a61db4a83a9f476cfafbcf51b
only load the namebuf once unless user changes the plugin
also displays the plugin name when user selects the whole context menu
Change-Id: I32b53729a3dcc2bf2c42393876407df7f3d38d8c
It is referenced by multiple threads, and as such needs to be both
volatile and SHAREDBSS to keep everyone happy.
...should address hangs on startup observed on nano2g and mini2g when
voiced menus are enabled
Regression introduced in dfa33c2 and made far worse by 759ef27
Change-Id: I202ec6c0d5825ff3a319b7d95d600b4ce06dd685
pcm_dma_set_freq expects the frequency index not the actual frequency
bug introduced in Commit dfa33c2 pcm: introduce pcm_sink
Change-Id: Idc521cfe1da22b112a16f81611dac720837eeea9
also fixes a bug where synclist viewport could be empty if the list isn't
initialized
voices path and parameters now
adds the item [Add] as the last item in the list
Change-Id: I1aad62baf3c19a67d04fa1fb3db8a7573e0a467f
open the glyph cache in a separate function so we can
get the MAX_PATH alloc off the stack quickly and
deal with the fd instead
Change-Id: I0e991a1286b29c781e3f03b6a49e100c70809920
Have a report of a hanging scrolling item, ensure the lists are stopped
on exit with gui_synclist_scroll_stop()
Change-Id: If670806f710118c79377bf8c5de6c1a5168e37fc
Always define storage_removable() and storage_present() so
that ifdefs are unnecessary. They were already defined as
constant for the CONFIG_STORAGE_MULTI case, but not in the
case of a single storage type.
Change-Id: I13073b3a72b201b5b11167deb050e6f27139c61c
Go to root menu when Start Screen has been set to "Resume Playback"
but playlist is finished
https://forums.rockbox.org/index.php?topic=55770
Change-Id: I6939fa313dd5fd6485628e22a2d860763492d5cf
Only react to Power button release if previous
button code was Power button press, so that
screen doesn't lock when device may have just
been turned on
Change-Id: I1ba228103efedeeceaaa00c49b1b1da66b63bb75
Clearing the display makes the backdrop come to the foreground.
which can look odd or glitchy, particularly for themes that do
custom drawing on the backdrop buffer (2c71aa9). It also causes
issues if the shutdown has to be canceled.
Instead, enable theme, then clear the UI vp.
Change-Id: Ia96d1e766a9b86ec133522f7cd259e8b88f64216
allows you to import a file and merge native keymaps
pops a yes no prompt to erase existing
duplicates will be overwritten
Change-Id: I167c6fac65775754b2a9874185d14f65638db9d7
Only apply dir filter to 'Browse' shortcuts, so that,
when trying to run a file from Shortcuts that is hidden
due to current dir filter settings, you don't get a 'Failed
reading Unknown' message (LANG_READ_FAILED/LANG_UNKNOWN)
because the tree entry can't be found in ft_enter.
Change-Id: I4eaad2ec415c9bac352a409922848e4407dac993
allows you to import a file and merge text keymaps
pops a yes no prompt to erase existing
duplicates will be overwritten
Change-Id: I0f4425e765f0a2ff6b73b830bcaea1b3f31e83cb
The skin is not unloaded using skin_unload_all in
settings_apply_skins anymore since commit 0ca4b38.
usb_screen was last remaining user until commit a969e1f.
Change-Id: I65a41ed220165587a04e699a7f210c575c00a4eb
I think they mean corrupted not crashes as I couldn't repro that
splash_scroller stepped by individual chars and split multibyte
sequences leaving corrupted chars
now it uses the new font_measurestring() to get the max_w and chops
it at break chars instead
this required a bit of a logic change to the function but should be
as good with less complications
Change-Id: I692db8b4737f41aec08dbc122fb844028498326d
This fixes the repeat_mode being stuck on Repeat Shuffle on the Hiby R1 WPS, and quick settings values being stuck at the last values for touch actions.
Regression from 9e254aca. The repeated state is used by the quick screen to detect repeated actions (see b918ec5) so I also removed "historical baggage" note.
Change-Id: Ic2a97058bbd17d232954ffe37f31a480ee11fe54
Follow-up to 9f20c45.
tagtree.c's retrieve_entries has significant stack usage
(>1.5k) and is called from tagtree_entries_iterate.
Further Reduce stack usage of tagtree_entries_iterate,
going from 784 B to 72 B, by using static memory allocation
for the the tagcache_search struct in the Properties plugin.
Change-Id: I75a170bea1c5392c18a891844a0ff31fbd2114eb
When a font doesn't have a glpyh for a given codepoint, the convertor
points it at the "default glyph". The plan is to replace this pointer
with a canary value so that rockbox genuinely knows this glpyh
does not exist, allowing a fallback path to be implemented.
(The plan is for the fallback path to attempt to compose a glpyh from
its decomposed codepoints, but this would make it be possible to
implement a true fallback/subsitute font mechanism)
Change-Id: If6fea29f5393a6d4b9d5747c911a36fdc8dda5ae