1243 Commits

Author SHA1 Message Date
casey langen
904293f080 More macOS fixes. 2017-01-10 07:07:26 -08:00
casey langen
b94f29305e This should fix ConsoleLayout's compile on macOS. 2017-01-10 07:01:19 -08:00
casey langen
f6403bd5f7 - Deleted MetadataKeyValue and MetadataValue from core. No idea what these
are/were, but they're not used anymore
- Deleted OutputWindow.h -- not necessary to subclass
- Moved ListView::SetAdapter functionality into the ScrollableWindow base
  class
- Cleaned up adapter ownership by using shared, instead of raw, pointers.
2017-01-09 23:15:26 -08:00
casey langen
05afff01ad Fixed Linux compile... surprising it worked on macOS. 2017-01-09 21:40:30 -08:00
casey langen
f7d660720c A few more prototype updates -- working transport buttons, fixed listview
styling, etc.
2017-01-08 21:17:00 -08:00
casey langen
c71f5a5f10 Updated musikbox to take advantage of LocalLibrary's ability to dispatch
results on a specified MessageQueue to reduce gymnastics required to
update category and track list views.
2017-01-08 21:16:14 -08:00
casey langen
5af9b778f5 Added PlaybackEvent, VolumeChanged, and TimeChanged to PlaybackService.
Mirrors the underlying Transport events, but will raise them on the
MessageQueue thread.
2017-01-08 13:14:38 -08:00
casey langen
4474b96f28 Updated prototype to run queries in the background and update on the main
thread. Also, track filtering works properly.
2017-01-07 23:19:35 -08:00
casey langen
442697e9ce Modified ILibrary interface to also accept an IMessageQueue reference. The
implementation will dispatch results on this queue if it's non-null.
2017-01-07 22:53:06 -08:00
casey langen
c9619c88d6 More proof of concept work, showing core and glue can be re-used for other
apps easily.
2017-01-07 15:44:37 -08:00
casey langen
49abe0526d Proof of concept MessageQueue implementation for raw Win32 with
PlaybackService integration. Visualizers work too.
2017-01-07 13:07:22 -08:00
casey langen
138766e8ff Don't re-define WINVER in core/config.h if it's already defined. 2017-01-07 13:06:27 -08:00
casey langen
1ff0ac00f3 Added a protected method to MessageQueue to get the next dispatch time. 2017-01-07 12:23:23 -08:00
Casey Langen
2f57240125 Fixed macOS compile again. 2017-01-07 00:14:37 -08:00
casey langen
9812e2fe3d - Moved PlaybackService and TrackList from glue to core
- Moved all current queries from box to blue
2017-01-06 23:49:46 -08:00
Casey Langen
79cf91851d Fixed macOS (and likely Linux) compile. 2017-01-06 18:34:33 -08:00
casey langen
0d7dfce805 Moved some sources out of "musikbox" and into a new "glue" directory. This
is for non-UI code that doesn't necessarily belong in core, but can be
reused across clients.
2017-01-06 18:28:00 -08:00
casey langen
45bac55dc3 Put MessageQueue behind an interface so implementation can vary on
different platforms.
2017-01-06 16:07:47 -08:00
casey langen
3ba692d20a Added back some old files I deleted a long time ago, just so we can do
some platform-specific testing easily.
2017-01-06 12:37:08 -08:00
casey langen
40fe1512de Ninja fix for non-win32 platforms. 2017-01-05 23:29:01 -08:00
casey langen
158ba27528 Some win32-specific optimizations -- don't worry about redrawing the
window nearly as frequently when minimized. Further reduces CPU usage in
the common case (music playing in the background).
2017-01-05 23:28:12 -08:00
casey langen
8e94592f55 Updated message queue next time check to not require a mutex -- just use
an atomic int instead.
2017-01-05 20:45:46 -08:00
casey langen
1475abbbac - Fixed nomad float sample scaling to use fewer instructions.
- Fixed PlaybackService to read duration from transport first.
2017-01-05 01:44:53 -08:00
casey langen
fd39258578 Fixed Outputs.cpp to load correct default plugins. 2017-01-05 00:13:01 -08:00
casey langen
a6e78c0941 Updated optimization flags. 2017-01-04 19:22:05 -08:00
casey langen
be51dcd0f5 More small Stream tweaks to prevent bursts of CPU usage. 2017-01-04 17:22:58 -08:00
casey langen
9af25a1541 Playing with some buffering improvements -- try to buffer samples in
chunks, instead of one at a time. Increased the default stream buffer
size.
2017-01-04 01:32:49 -08:00
casey langen
165b5aeb32 Some more profiling revealed we were doing more work than we needed to in
TransportWindow every tick -- locks, map look ups, utf8 -> utf16
conversions, and column width calculations. We can cache most of these
operations easily and transparently.
2017-01-03 22:23:51 -08:00
casey langen
602f61eab6 - Tweaked Player to no longer keep a list of pending buffers -- a count is
good enough.
- Use raw buffers between Player and Stream. A bit less safe, but improves
  performance a bit.
- More old Player logic clean up -- removed some things here and there.
- Updated MessageQueue to cache the next dispatch time so it can short
  circuit an explicit Dispatch() without messing around with iterators.
- Fixed TransportWindow to sync time immediately wheen a seek is detected.
- Updated logic in Player to be more seek friendly -- the user shouldn't
  observe time jumping around while seeking anymore!
2017-01-03 21:03:40 -08:00
casey langen
f3564378f4 Don't try to be smart about buffer fill rate -- just keep it full. Also,
use std::deque instead of std::list to maintain the buffer collection in
Player -- it has better performance characteristics for what we're doing.
2017-01-02 23:07:40 -08:00
casey langen
5849a7a8f9 Fixed the win32 global hotkey hook. 2017-01-02 15:45:46 -08:00
casey langen
790fed8943 Fixed dropdown arrow character to something that is implemented by more
fonts.
2017-01-02 15:19:38 -08:00
casey langen
a22d83c911 Added audio stream routing to the WASAPI output plugin. If the default
playback device changes, we'll switch over to it automatically without
interruption.
2017-01-02 15:01:31 -08:00
casey langen
43b4260713 Version bump for all bundled plugins. 2017-01-02 10:50:39 -08:00
casey langen
93a82f1e21 Added an "sdk" command to the console layout. 0.7.1 2017-01-02 10:47:56 -08:00
casey langen
b917953286 Version bump. 2017-01-02 00:22:44 -08:00
casey langen
d594bee4ca Fixed Linux compile. 2017-01-02 00:20:28 -08:00
Casey Langen
e1bcd3b0f2 Fixed macOS (and probably Linux) compile. 2017-01-02 00:15:00 -08:00
casey langen
cb4156dbac Added plugin versioning. 2017-01-02 00:06:30 -08:00
casey langen
6ec4418cfd Removed prebuffer code from Player -- let the Stream worry about that. 2017-01-01 16:43:51 -08:00
Casey Langen
99f3c25a13 Fixed Linux/macOS compile after boost removals. 2017-01-01 15:12:54 -08:00
casey langen
0d8c86be4f Found one more usage of boost::recursive_mutex in PlaybackService. Removed
it.
2017-01-01 15:06:55 -08:00
casey langen
c5d8a3c608 Fixed most of the remaining boost thread/mutex/recursive_mutex/condition
usage to use the std:: variants. Only thing remaining is the Indexer,
which is currently using boost::asio and boost::thread_group.
2017-01-01 14:59:33 -08:00
casey langen
f34b2c87c2 Ugh. Fixed FlacDecoder I broke recently. 2017-01-01 14:59:33 -08:00
casey langen
f57abafb42 Removed some unnecessary dependencies from CMakeLists and fixed compile on older versions of clang. 2017-01-01 13:59:22 -08:00
casey langen
83fc208daf - Fixed focus issues when pressing enter in track and category filter
modes.
- Removed boost::chrono dependency -- just use std::chrono in all cases.
2017-01-01 12:09:28 -08:00
Casey Langen
6a6b842883 Upped CoreAudioOut's buffer count from 16 to 24. 2016-12-31 20:43:40 -08:00
casey langen
8c4a4ab248 Similar to some other micro-optimizations, don't keep recreating a new
list of messages to dispatch in MessageQueue -- create it once as a member
variable and reuse.

Also tweaked stream and output buffer sizes.
2016-12-31 20:35:45 -08:00
casey langen
8f51b6c191 Added a little more state to Player to cut down on CPU thrash when dealing
with mixpoints. We now cache the next mixpoint time when the set of
mixpoints changes (or we seek), so we don't always have to iterate over
all of them.

Also, don't re-create the temp MixPointList in Player::OnBufferProcessed
-- there's a bit of overhead involved there. Instead, use a temp member
variable.
2016-12-31 15:19:25 -08:00
casey langen
60e120e1e9 - When asked to play a track in the CrossfadeTransport, first check to see
if it's already available as the next track. It very well may be!
- Small code cleanups.
2016-12-31 11:41:44 -08:00