Commit Graph

1181 Commits

Author SHA1 Message Date
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. 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
Casey Langen
d865931fab Fixed *nix compile. 2016-12-30 21:57:48 -08:00
casey langen
7efcf60e1d General repo/build/project cleanup:
- Removed unused md5 and fftw-3 remnants
- Renamed 3rdparty/lib -> 3rdparty/win32_lib to match win32_include
- Removed core/sdk/config.h
- Fixed various compiler warnings
2016-12-30 21:49:50 -08:00
casey langen
f0505363c5 Tweaked the way the CPU load easling logic works in Player. 2016-12-29 18:11:21 -08:00
casey langen
6ac1926611 Version bump -- we're getting close to release. 2016-12-29 16:06:18 -08:00
casey langen
1c68635e4d Moved common CPU easing calculations from DirectSoundOut and WasapiOut and
into Player. This also fixes Visualizer sluggishness.
2016-12-29 16:05:42 -08:00
casey langen
887fd77516 - Ease CPU load in both DirectSoundOut and WasapiOut by being less
aggressive about keeping the internal buffer 100% full. For now, 75%
  full should be sufficient
- Fixed ALL OutputPlay values to be negative -- in some cases output
  plugins were returning a "0" delay which was causing buffers to not get
  properly cleaned up, causing bad memory leaks.
2016-12-28 20:38:49 -08:00
casey langen
15d2ea2c17 A more generic strategy for avoid sleeping in output plugins that may have
lock contention: IOutput::Play() returns an int with a negative number as
an error code, or a positive value as the number of milliseconds to wait
until trying to play the buffer again.
2016-12-28 01:10:03 -08:00
casey langen
ef3fd3c7cc Don't block the UI when switching from Crossfade -> Gapless transport. 2016-12-27 21:02:54 -08:00
casey langen
1be4e3fd70 Added more error handling to PlaybackOverlays -- also, ensure we set the
selected index on the transport and output device overlays.
2016-12-27 19:07:08 -08:00
casey langen
76fbc5e6bd Added ListOverlay::SetSelectedIndex 2016-12-27 19:06:57 -08:00
Casey Langen
a2d95a6698 Improved the transport selection logic to use a ListOverlay and also display an error for invalid outputs. 2016-12-27 17:37:33 -08:00
casey langen
c3653ffa19 Yikes! Fixed a really, really bad first run bug I never noticed because I
never go through the first run process.
2016-12-27 17:33:51 -08:00