Commit Graph

1301 Commits

Author SHA1 Message Date
casey langen
7caeb3c20f Update README.md 2017-04-16 00:36:31 -07:00
casey langen
8b2752abe5 Updated HttpServer to allow querying audio data by either id or
external_id.
2017-04-15 23:45:20 -07:00
casey langen
59946d3cea Data layer and IIndexerSource plugin updates:
1. Drop indexes before sync, then re-create after. This speeds up the
indexing process.

2. 'external_id' field now required for all tracks.

3. Added IIndexerSource::HasStableIds(). We use this as a hint to not
remove orphaned tracks from existing playlists when re-scanning.

4. Removed 'track_id' from 'playlist_tracks' table, and added
'track_external_id' and 'source_id' instead.

5. Indexer will only scan for plugins once now, during initialization.
2017-04-15 21:20:37 -07:00
Casey Langen
cb4c1adc5b Integrated libmicrohttpd into the websocket_remote plugin to serve track audio
data (not metadata). Clients using the websocket interface can use this to play
music locally, instead of just remotely.
2017-04-14 10:04:48 -07:00
casey langen
83b371103f Fixed some musikdroid bugs related to blank/empty artists/albums/titles. 2017-04-13 18:58:30 -07:00
Casey Langen
0fe6983706 Merge branch 'master' of github.com:clangen/musikcube 2017-04-09 12:20:42 -07:00
casey langen
63381607a9 Fixed broken "sync on startup" preference. 2017-04-09 12:20:15 -07:00
Casey Langen
ccb1fc8ef9 Indexer sources can now be interrupted, and failed sources can have their
transactions rolled back.
2017-04-09 12:10:40 -07:00
casey langen
1dd69725f5 Update README.md 2017-04-09 00:02:58 -07:00
casey langen
fb879e23eb Update README.md 2017-04-09 00:00:30 -07:00
casey langen
a459230eb9 Upgraded Visual Studio projects to use Windows SDK 10 and the VS141
tooling. Upgraded to boost 1.64.0 (B2). Also, cleaned up a bunch of
stale include and library paths in various projects.
2017-04-08 23:50:57 -07:00
casey langen
b3df1787c6 Version bump and CHANGELOG updates. 2017-04-04 07:33:13 -07:00
casey langen
23b8b3cc9e Fixed weird auto scroll behavior in NowPlayingLayout when manually
selecting a new play index. Also, added ListWindow::IsEntryVisible().
2017-04-03 20:56:54 -07:00
casey langen
82485ba6f3 - Created a denormalized "tracks_view" sqlite view that will come in
useful for things like dynamic playlists.
- Updated CategoryListQuery to initialize mappings statically, instead
  of during construction, locking a mutex.
2017-04-02 14:26:09 -07:00
casey langen
6241774454 A couple cross-compiler compatibility fixes: (1) no virtual destructor
in SDK interfaces, and (2) no method overloading.
2017-04-01 12:26:42 -07:00
casey langen
68b2d5c1d1 Fixed the album overlay's title string. 2017-04-01 11:13:12 -07:00
casey langen
e6d296334c - Fixed header offset calculation for real this time
- Added an [unknown album] header for search results without an album
name
2017-03-31 23:20:26 -07:00
casey langen
bf1af609b2 A massive overhaul to the CD Audio plugin:
- Integrated with the new IIndexerSource, IIndexerWriter, and
  IIndexerNotifier SDK interfaces
- Added a simple capabilities model to the playback infrastructure. This
  is used to detect whether or not streams can be prefetched. For example,
  CDDA cannot because of seek times while playing tracks.
- Added bare-bones CddaDataModel that uses the win32 api to enumerate
  connected devices. This is used for disc fingerprinting (using the CDDB
  algorithm) and encapsulating data related to discs and tracks. Also,
  use the WM_DEVICECHANGE API to detect when new discs are inserted, or
  existing discs are removed.
- Don't install the global hotkey hook when running in a debugger.
- Added the ability for the user to configure seeking vs scrubbing when
  changing the playhead
2017-03-31 22:27:23 -07:00
casey langen
2dac91c429 Added SDK support for plugins that can index their own audio content.
- Added IIndexerSource interface: plugins will be able to implement this
  interface to add tracks to the library that will be indexed and
  maintained like all other tracks
- Added IIndexerWriter interface: IIndexerSource plugins will use this
  interface to add/remove/update track info with the main app
- Added IIndexerNotifier: interface used to notify the app that it needs
  to be re-indexed.
- Added "source_id" , "external_id", and "visible" column to the tracks
  table, with appropriate indexes.
- Updated all queries to take "source_id" and "visible" into account
- Extracted TrackMetadataQuery from TrackList. Never should have been
  there to begin with, but was due to some technical limitations that no
  longer exist.
- Fixed a really old indexer bug where the reported number of file scanned
  was not accurate. Strange this wasn't noticed before.
- Added "SetIndexerNotifier" injection method
- Fixed a bug in TrackMetadataQuery -- it was unnecessarily relying upon
  the paths table, which was causing query errors when the table was
  empty.
- Use a cache for local file paths instead of requiring an async round
  trip when adding/removing
- Remove use of manual "ANALYZE", it was causing strange performance
  degradation issues. Instead, move to a set of PRAGMAs that instructs
  sqlite to run these optimizations when necessary.
- Updated ::GetInt32 and ::GetUint32 return types to be explicit as to play
  more nicely with clang -- may as well, we're updating the SDK version
  anyway.
2017-03-31 21:45:14 -07:00
casey langen
c5e57094d5 Revert the off-by-1 "fix". It didn't actually fix anything, and
introduced a bug.
2017-03-29 23:46:21 -07:00
casey langen
9ce7f1a030 Fixed bug in ApplyHeaderOffset calculation. 2017-03-28 14:12:58 -07:00
casey langen
8c9117f437 Fixed some weirdness when reading CDDA data in Windows. The beginning of
tracks don't seem skip anymore.
2017-03-27 23:12:32 -07:00
casey langen
e49506fe3c Added Bill Gray's improved message pump patch. 2017-03-27 12:04:24 -07:00
casey langen
fb12405015 Fixed clang 7.3 compile error. 2017-03-27 10:30:45 -07:00
casey langen
52f9375ec4 dang 2017-03-27 00:50:52 -07:00
casey langen
9326b0723f Updated CHANGELOG for release, and tweaked the archive filenames. 2017-03-26 20:53:05 -07:00
casey langen
68a7e2994c Tweaked pdcurses message pump patch to avoid potential overflows. Also
updated musikboix.rc's FileDescription field to be more inline with what
other apps display here.
2017-03-26 12:06:14 -07:00
casey langen
b6514b05f2 Added a version metadata to musikbox.rc so the windows executable has
version information baked in.
2017-03-26 11:54:26 -07:00
casey langen
54f1097789 Use a stack to remember previously selected directories in the settings
layout. Updated CHANGELOG accordingly.
2017-03-26 00:18:49 -07:00
casey langen
45f6795ccf Updated CHANGELOG and fixed a couple compiler warnings. 2017-03-25 23:06:42 -07:00
casey langen
a3d2d54fc4 Added "jump to artist" and "jump to genre" options to "album header"
context menu. Added "jump to album", "jump to artist", and "jump to
genre" in track context menu.
2017-03-25 22:59:53 -07:00
casey langen
e3f4179978 Update README.md 2017-03-25 12:08:49 -07:00
casey langen
9241ba1e34 Small tweak to the main icon so it looks better in the taskbar. 2017-03-24 22:35:27 -07:00
casey langen
24e8d79b6f Fixed header offset bug in TrackListView. 2017-03-24 10:56:52 -07:00
casey langen
deb899b4f7 Wired TaskRunner library into musikdroid 2017-03-23 17:10:59 -07:00
casey langen
b9619ade2c * Tweaks to curses input polling to reduce CPU usage in Windows.
* Run Player thread in a higher prioirty in Windows
* Don't show the context menu on track row headers
2017-03-23 17:09:51 -07:00
casey langen
648edc92c8 Updated PDCurses's message pump to use way fewer CPU cycles. 2017-03-23 17:09:09 -07:00
casey langen
8f448e86ad - Fixed a bug in TrackListView where we may end up selecting the album
header after a rquery after being hidden, then re-displayed. ugh.
- Added explicit Interrupt() method to IDataStream because we're bumping
  the API version anyway
2017-03-22 22:59:50 -07:00
casey langen
0a271dbc25 Consolidated all messages into a single location. Unfortunate, but safer. 2017-03-22 19:07:09 -07:00
casey langen
7977e3f603 CHANGELOG update and version bump. 2017-03-22 17:08:21 -07:00
casey langen
10531de4e5 Fixed a couple auto-scroll bugs in TrackListView related to recent changes
that make the header views selectable.
2017-03-21 22:40:26 -07:00
casey langen
4f346aea5a Fixed SUPER old bug in ListWindow and ScrollAdapter where an adapter
refresh may scroll the view to a weird location. Also cleaned up
ScrollPosition handling.
2017-03-21 22:39:27 -07:00
casey langen
5cc5727fdd Explicitly enable RTTI for projects tha require it. 2017-03-21 22:38:46 -07:00
casey langen
0a57ccce25 Merge branch 'clangen/tracklist_headers' 2017-03-21 17:52:02 -07:00
casey langen
e97d948e91 Fixed a bug in the new play queue overlay popup's column name handling. 2017-03-21 17:08:03 -07:00
Casey Langen
2e1411e80b Fixed macOS compile. 2017-03-21 17:05:12 -07:00
casey langen
f7a4ecdf2e - Added "dimensions" support to Locale
- Added support for a "album header" play queue overlay
- Removed some code in Window that was causing unnecessary visibility
  changed callbacks
- Added Window::OnAddedToParent and Window::OnRemovedFromParent
- Updated themes to support "list_header_highlighted_background" and
  "list_header_highlighted_foreground"
2017-03-21 16:53:10 -07:00
casey langen
a37702f5da Added the concept of message queue "broadcasts" and the ability to
subscribe and unsubscribe to them.
2017-03-21 00:37:28 -07:00
casey langen
6188fce615 Updated IMetadataMap's interface with the same type-related changes as
ITrack. May s well while we're bumping the SDK version. This allows us to
remove some type conversion code from the websocket remote's plugin.
2017-03-20 22:22:01 -07:00
casey langen
bde694e9a8 Added ITrack methods for getting column values for types other than
strings. Required an SDK bump.
2017-03-20 21:13:28 -07:00