ailurux
4353779810
WIP: Add last_position field to track data and start on implementation
7 months ago
jacqueline
e6921dc055
Use libogg + our own parser for ogg files
...
This is somewhat faster than relying on libtags to parse these, and also better handles cornercases such as tags that cross physical page boundaries.
8 months ago
jacqueline
2ad83cb210
Shard searching for new tracks across multiple tasks
...
This also has the effect of breaking up the enormous 'updateIndexes'
method into one call per file, which means database updates also no
longer monopolise a single background task for their entire duration.
avg. time per new file is now <140ms for a completely fresh database,
which is pretty good i think!
8 months ago
jacqueline
28cf749951
Make FileGatherer shaped more like a normal iterator
8 months ago
jacqueline
30aaefca64
Batch up the db operations associated with adding new tracks
...
This is ostensibly yet another 'prepare for multithreaded updates'
commit, however it does actually save us another 60(!!) odd milliseconds
per track.
8 months ago
jacqueline
b5dc53670a
Derive the next track id from stored track data, instead of tracking it explicitly
...
This saves about 1ms per new track right now, but more importantly means
that minting a new track id is now a single atomic operation, rather
than being its own database write. This is a useful property that will
come in handy in a few commits time.
8 months ago
jacqueline
a9d2335e1d
Break FatfsStreamFactory's dep on ServiceLocator
9 months ago
jacqueline
370d1853b5
Break FatfsStreamFactory's dep on ServiceLocator
10 months ago
jacqueline
7d7f7755d1
start moving include files into subdirs
12 months ago
jacqueline
1573a8c4cd
WIP merge cyclically dependent components into one big component
12 months ago
jacqueline
3dc0989c7f
fix db key prefix format, and use per-file modification times
1 year ago
Hailey Somerville
44d848ac66
define database::kCurrentDbVersion publicly
1 year ago
jacqueline
dad159dc3c
Use a single pool of bg workers instead of separate tasks per use case
...
Also: bump the number of workers tasks up to 3 from 2!
This makes bg db updates + playback work :)
1 year ago
jacqueline
eacea59e8a
Do more to avoid and recover from partial db updates
...
- do not power off in an update is in progress
- explicitly store last update time, rather than deriving it from
unchanged tracks.
1 year ago
jacqueline
7cdcd44e0c
Begin migration of remaining screens to Lua
1 year ago
jacqueline
01eb868373
Support more datatypes in track tags
1 year ago
jacqueline
3f7f199cb9
Remove pre-iterator concepts
...
- No more IndexRecord/Result/dbGetPage nonsense
- Queue is just track ids
- i am so tired and have so much to do
1 year ago
jacqueline
009f69c929
Add basic track queue save/load support
...
Not wired up yet; I need to do a bunch of cleanup before i wire it in
1 year ago
jacqueline
4f5422e906
Rewrite the track queue to work directly with database iterators
1 year ago
jacqueline
09c0e1608f
Implement adding to the playback queue from lua
1 year ago
jacqueline
06aca259cb
Add basic lua browser screen
1 year ago
jacqueline
cd46d7bd20
Make lua db iterators async
1 year ago
jacqueline
d70ec9bf44
Add lua functions to get database content
1 year ago
jacqueline
8a0a167adb
Convert the main menu screen to lua lol
1 year ago
jacqueline
499d5a942f
Add a wrapper codec source that does readahead
1 year ago
jacqueline
b58c081508
add locale-aware colation to db indexes
1 year ago
jacqueline
2086ab09b8
Implement incremental updates of database indexes
...
This makes rescanning the library *so* much faster. Yay!
2 years ago
jacqueline
20d1c280a7
Remove templating of Continuation
2 years ago
jacqueline
f09ba5ffd5
Use bindey for databinding instead of hand rolling ui updates
2 years ago
jacqueline
4d99d22e10
std::string -> std::pmr::string in psram
2 years ago
jacqueline
6d831fa7a8
Don't reuse iterators across page fetches
...
This was done for performance reasons, but performance seems okay
without it, and it introduces a bunch of memory management headaches.
2 years ago
jacqueline
320fdeb9d8
Use a service locator instead of passing around subsets of drivers between FSMs
2 years ago
jacqueline
23227d0986
clang format
2 years ago
jacqueline
df22bed072
Include title in indexes to avoid a per-record disk read
...
GOTTA GO FAST
2 years ago
jacqueline
39f7545cd5
wire up the playing screen with some real data
...
Includes implementing song duration calculation for CBR MP3 files
2 years ago
jacqueline
245d9ff4b9
add indexing to the database
...
idk man i wrote most of this in a fugue state whilst high on the couch
with my cat
2 years ago
jacqueline
6ff8b5886e
Support playing tracks by track id
2 years ago
jacqueline
c6bb42cdd2
song -> track
2 years ago
jacqueline
a4f94c812a
Annote E V E R Y T H I N G with license info
2 years ago
jacqueline
5ac4d3949c
Generalise worker tasks, and centralise task priorities + stacks
...
Includes making the display driver use a worker task for flushes, so
that our double buffering actually does something useful /facepalm
2 years ago
jacqueline
d71f726c42
Add pagination to database queries
2 years ago
jacqueline
961c8014ad
Add some basic tests for the database
2 years ago
jacqueline
16e6180ba7
Database init is now stable!
2 years ago
jacqueline
cd520b9360
Make queries a little less copy-paste
2 years ago
jacqueline
5d7cbec34c
Move DB interactions to a background thread
2 years ago
jacqueline
fbe047a35f
Add some basic data and retrieval
2 years ago
jacqueline
083f4011aa
removed unused raw db stuff
2 years ago
jacqueline
4887f37898
add leveldb
2 years ago