When you removed all tracks from an on-disk playlist,
you were asked whether you wanted to save it, which
would fail, but did not show any accompanying message.
Instead of trying to save the playlist, after getting
the confirmation, delete the playlist file from disk.
Change-Id: Iad54f2f490b15dd9c8a8fdfb8f12e58fd17d5e36
Reset fd for the on-disk playlist at the place where
ownership is transferred in playlist_set_current (which
already has a note, that the playlist will be effectively
closed, but did not reset the fd).
Also ensure, that calling playlist_load closes the fd for
the on-disk playlist (and its control file), if any were
left open - even though this is not supposed to happen.
Generate name of control file in playlist_init to be more
consistent with the behavior for the current playlist.
Only a single playlist can be loaded in the playlist viewer
at the same time, so generating random names shouldn't be
needed.
Change-Id: I65e0fc07ce608c1d333a90447e18482787a98b8c
last patch limited this to the 6G but the ipod Video has similar reports
I have a feeling there are others and enabling this unconditionally shouldn't hurt
the other devices
Change-Id: Ie4077299550ee028c32d746e5fe6c60b707f052e
Positive values included a leading space, which
meant they weren't displayed center-aligned in
themes anymore.
Change-Id: Ibe75e9b81a2989c87630dd3ea78e4b90c6c74502
Brings it up to libmikmod 3.3.12, relased 2024-12-31
Also fix a segfault that only happened on simulators when using
non-default samplerates.
Change-Id: I2ade2d72a00edab5395328fe76a88a88516aac72
It makes no sense to prevent the current playlist
from resuming when some other playlist becomes empty.
Change-Id: Ibfb7a15b0826ed3baeefbc5060b13d73894b81e6
no functional changes.
remove some checks for screen when SCREEN_REMOTE
is not present
pack the skin_backdrop struct and use the space to remove
the static bool first_go variable
Change-Id: I17a96749d4995dd8124f3be4dd95bba58ee54b6d
Improve ADC behavior, add correct conversion
for die temperature, add readout of EGauge to debug screen.
Add delay to give ADC time to get a good reading. Initial reading
may still be 1-3% optimistic, which is probably ok.
EGauge appears to be pretty good, but no great need to convert
to using it either.
Change-Id: Iab9d50e2427f656ad0875f9a623b03545fc69881
This script has grown into a bit of a maintenance nightmare over the years.
I've cleaned up and better documented some of the nastier bits.
Change-Id: I2bb95a89b1edc9a294d9e1112f5be1b877567356
Java 17 on the host does no longer support targeting Java 1.6.
This causes the build to fail.
Build Tools 19.x support Java 1.7 bytecode and converts it to dex
files for Android 2.2 or later, unless one uses the
try-with-resources syntax which requires KitKat.
Change-Id: I523746427f9ba3b60bef73fe1379b272cf048a05
Google changed their site and the layout of downloaded SDK zips.
Also add a warning to configure if a r2x series NDK version is used, because those aren't supported - they no longer contain GCC, only clang.
Change-Id: I48a42c38c9b657ac6662162a39763aac73ec502a
I pushed the wrong version of the function it was an experiment
on resetting haystack past the searched string but it is missing the
rest of the logic and therefore misses strings that should match
Change-Id: I23391d2e753840bfeaab8e26d9987198272fe7b8
should be no functional changes
looking at the blame for this file shows the buffer was made
static originally due to stack overflow.
Removing static buffer in favor of using the skin buffer
directly shouldn't cause a regression.
Change-Id: I941ed675c5ba8799bea678af61c196eb453a4788
Borrowing the index buffer of the current playlist
can be problematic, since it is possible to start
playback of a different playlist from the playlist
viewer without leaving the viewer, thereby causing
a collision.
As long as we have a sufficiently large plugin
buffer, take advantage of it, regardless of
playback state.
When playback is stopped, always resume the playlist
from the control file before loading it, even if the
playlist has finished playing, to prevent running
into invalid indices.
Note:
dcfrefs_handle is initialized to 0 automatically for
the static on_disk_playlist struct.
Change-Id: I2a05a6a51a088ea9ba73858c353525db9e61c36e
speed up comparisons by getting length of the supplied english string
and filter based on length finally use our length to do memcmp since
we know where the null is already
Change-Id: I595f03ae4b08ee0d59bb9adacbe3b69f08991a9e
strlcpy returns the length of the string that would have been copied
had there been sufficient space basepath_max might still be
larger than buf_size yet smaller than len
which would result in a null terminator being written past buf[buf_size-1]
Change-Id: I43e8ba9f72ea35bfe4f759ecd102c2e4bd26eb75
This enables smooth resizing of the window using a
fixed aspect ratio, instead of snapping into the
correct aspect ratio only when the resize operation
has finished, by using an SDL event filter that gets
events delivered during the resize operation
(whereas SDL_PollEvent blocks until done on macOS).
Change-Id: Ie6614e4b6f49a24469c5ee6a69721c9fbd440dae
core_alloc works well for this and we can allow the alloc to be moved
bugfix compressor_process() possible buffer overflow
Change-Id: I701c6306c39cc1c7aa72b0dbe402b9b0d1a3fcda
On Windows, we need to prevent the event thread
from drawing at the same time as the main thread,
when window is being adjusted.
Change-Id: I2b4e4a50fec427e53e310593850e2a556a594b31
asan correctly identified an out of bound read in the test_mem plugin
This shouldn't cause any issue in normal use since the data isn't used
Change-Id: I52acabc4649397f9dd2ba7979f9210529ced2071
I meant to add this with the last patch b07d7d6
since it may supply UNBUFFERED_ID3 to the peek function
which uses UNBUFFERED_ID3 and will try to copy it back
wich is undefined behavior for memcpy
Change-Id: I91160570adac22134c84d3b37f8fcecb097d87d6
add function get_temp_mp3entry() to return a valid mp3entry from scratch_mem
UNBUFFERED_ID3
or if playback hasn't been started used statically allocated mp3entry
NEXTTRACK_ID3
Change-Id: I3909fb585e0f5ad590f917ce827e991440f1fe75
probably doesn't make much of a difference
for our use case but should prevent creation
of temp buffers
Change-Id: Ie2cbefcbd7b8f94bed340f08bf71f764a32ed1ea
No need to create a new texture for every
rendered frame, unless the scaling method
has been adjusted.
We also don't need to upload the (unchanged)
player interface to GPU memory repeatedly.
+ Remove unused lcd_display_redraw &
having_new_lcd variables
Change-Id: I5bff6aa2d54347a3f2c3afba8d8d7eb9e39f77f7
Press 0-3 to to adjust current zoom level
to 50% (0), 100% (1), 200% (2), or 300% (3).
Press 4 to switch between "best" (linear)
and nearest pixel sampling.
Change-Id: Id10d361659855a0ad9c97e6b341f498f72709ef5
SDL 2 lets us take advantage of a fixed logical resolution,
where the renderer scales content up or down automatically.
Relative mouse motion is also affected by renderer scaling
by default (see SDL_HINT_MOUSE_RELATIVE_SCALING).
If window zoom has been enabled from the command line,
set scaling quality to "nearest pixel sampling" instead
of "best" to allow pixel peeping.
Change-Id: I4e5c19d36b55c985c26ac5ae64c4a6b8dd9b308d
Tested on Linux, MacOS, and Windows.
On MacOS and Windows, we constrain the window's aspect
ratio by adjusting the size when responding to resize
events.
On Linux, I've not found a way to do so, that doesn't
result in fairly stuttery behavior and weird jumpy
behavior of the resize handle, possibly depending
on your window manager. So, black bars are displayed
around the content.
Maybe someone, at some point, finds a way.
(SDL3 seems to have SDL_SetWindowAspectRatio)
When the window is in fullscreen, black bars are
display necessarily, of course, on all systems,
unless the player GUI has exactly the same aspect
ratio as the screen...
Change-Id: I535e6617497611ea57a4c19e08e552f990859cfe