Age | Commit message (Collapse) | Author | Files | Lines |
|
Instead return NULL and let the client handle it.
|
|
When there are no seeds (i.e. genre station), do not display initial “Delete”.
|
|
It does not have any modes anyway.
Fixes #723.
|
|
Fixes #700.
|
|
Prevent stuttering on low-power devices like Android phones by moving
playback to its own thread and decoupling it from decoding through a
reasonably sized buffer.
Fixes #665.
|
|
See #668.
|
|
The volatile keyword neither guarantees atomic access nor memory
visibility[1]. Although this is usually not a problem on x86, it is
incorrect to rely on this. Use mutex locks to protect all shared player
variables and enforce memory visibility.
[1] https://wiki.sei.cmu.edu/confluence/display/c/CON02-C.+Do+not+use+volatile+as+a+synchronization+primitive
|
|
Iff song’s station is not the current station. This is only the case for
the song history right now.
Closes #638
|
|
Eventcmd uses both, selStation and selSong. Fixes #617.
|
|
The event did not contain any song data (title, artist, …), because the
playlist was destroyed by the ui command. Now the actual station switch
is deferred by introducing nextStation and letting the main loop handle
it.
Fixes issue #584.
|
|
I removed most of the *BSD-related stuff, because I can’t test these. If
this breaks your build, send me a patch please.
|
|
Currently exposed settings: Username, password and explicit content
filter. New key for settings is ‘!’, changeable with “act_settings”.
Fixes issues #524 and #506.
|
|
Drops libwaitress. Adds the new dependency libcurl and drops gnutls.
I wouldn’t say writing my own HTTP library was a mistake – it was not
and the experience gained was worth it. Instead I have to acknowledge
that libcurl is just better than my own implementation. Sure, it does a
lot more than HTTP – one could call that bloat. Yet if you just want to
get the job done™ reusing code is the way to go.
See #512 and #513.
|
|
This should not be an assertion, it is expected to happen. Test with
`echo -e "s0\nu" > ctl`. Fixes #509.
|
|
Fixes #442.
|
|
libav 9.12 and ffmpeg 2.2 have been tested.
Here’s why: My mp4 “parser” *cough* never was a mp4 parser in the sense
that it actually understood the file format. Instead it grepped the
input stream for “magic” strings (section identifiers). That alone
should be sufficient to throw away the code and rewrite it. Additionally
libfaad2 has not been updated for ages. I guess it was abandoned in
favor of libav/ffmpeg.
With libav/ffmpeg, which we support both as long as the API’s don’t
diverge too much, pianobar gains fast and reliable AAC and MP3 decoding
without bothering too much about the details. Most users will have it
installed already. On my own machine libav consumes about 2/3 CPU time
compared to the previous solution when playing AAC. Unfortunately memory
usage doubled and my attempts to disable unused protocols/formats/codec
failed due to libav’s API limitations.
While cleaning up a small detail regarding the eventcmd API has changed
too: Song duration and position are measured in seconds instead of
milliseconds now. Since libav/ffmpeg keeps track of accurate timing the
precision pianobar keeps track of can be reduced, while still being
sufficient for most users.
|
|
|
|
|
|
Introduces generic linked list structure and functions (like append,
delete, …). Removes a lot of copy&pasted code and improves code
readability/reusability.
Heads up: This change breaks libpiano’s ABI.
|
|
Closes #377.
|
|
Two new events: stationfetchgenre, stationaddgenre
|
|
|
|
Loving/banning a song from a shared station while playing quickmix
resulted in “call not allowed”, because we tried to transform the
quickmix instead of the song’s real station. Fixes #354.
|
|
Add commands that always play and always pause, in addition to the
current toggle pause command.
Closes #342.
|
|
New keybinding ‘v’, new setting act_createstationfromsong.
|
|
Doesn’t work with JSON API. See #280.
|
|
|
|
This reverts commit 7df9371491e96a99c1e463f7787aede352ac5a37.
|
|
This reverts commit f6dffd1822404522b8354ac453a911a0d98bfc61.
|
|
1) Realtime signals don’t exist in OS X
2) libao apparently locks a mutex in ao_play, which is locked again in
ao_close and causes a deadlock
Closes #256, although I’m considering the option of partially reverting
7df9371491e96a99c1e463f7787aede352ac5a37, as this introduces more nasty
behavior than it solves.
|
|
No more mutex locking/checking for quit condition. Should (slightly)
increase responsiveness of the player thread. Closes #250.
|
|
There does not seem to be an API call for that.
|
|
In random order: Thanks to Chris Eby for his work on pithos, to an
anonymous coward for sending me his Android client, to Alex Howard for
sending me the webOS client, to ZigZagJoe for providing a temporary fix
and thanks to everyone who sent Pandora a message.
Although there are a few rough edges here and there this fixes #236.
|
|
Strict pthread implementations (like OpenBSD’s rthreads with
PTHREAD_MUTEX_TYPE_STRICT_NP set) don’t allow unlocking a mutex that is
not locked, resulting in abort() being called. Always aquiring the lock
before unlocking it while skipping to the next song fixes this. Thanks
to David Coppa.
|
|
See #231.
|
|
|
|
Enable/disable delete options depending on availability.
|
|
addFeedback call changed. Input keys changed. Thanks to ZigZagJoe.
Closes #171
|
|
Fixes #165
|
|
Keys stay the same. Quickmix and seed suggestion API calls changed.
Listener id is not part of the url any more.
Bookmark API calls seem to be deprecated.
|
|
Regression introduced by 0728b6a89de607e211bbc075b34f08495ac0d22f
|
|
Closes #141
|
|
...instead of the current song. Closes #131.
|
|
Closes #88
|
|
Closes #115
|
|
See #99.
|
|
|
|
|
|
|
|
|