| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
There was a known deadlocking bug in the notify library: when the
other thread set notify->pending after the according check in
notify_wait(), the latter thread was deadlocked. Resolve this by
synchronizing all accesses to notify->pending with the notify object's
mutex. Since notify_signal_sync() was never used, we can remove it.
As a consequence, we don't need notify_enter() and notify_leave()
anymore; eliminate them, too.
|
|
|
|
|
| |
Get rid of CamelCase, and don't use a typedef, so we can
forward-declare it, and unclutter the include dependencies.
|
| |
|
| |
|
|
|
|
|
| |
Give player.c a better name, meaning that the code is used to control
the player thread.
|
| |
|
|
|
|
|
| |
This is the last of the three variables. Now we don't need
playerData.h anymore in most sources.
|
|
|
|
|
| |
Now that "dc" is available here, we don't have to pass it to
decoder_is_idle() and decoder_is_starting() anymore.
|
|
|
|
|
| |
decode() is a trivial wrapper for decodeParent(). Merge both and
rename them to do_play().
|
|
|
|
|
|
| |
Unfortunately, we have to pass the DecoderControl pointer to these
inline functions, because the global variable "dc" may not be
available here. This will be fixed later.
|
|
|
|
|
| |
When dc->error!=NOERROR, we do not need to check state!=START.
Simplify the checks by moving the error check to the top.
|
|
|
|
|
|
| |
The decoder thread is responsible for resetting dc->command after a
command was executed. As a consequence, we can assume that
dc->command is already NONE after decoder_stop().
|
|
|
|
|
|
| |
The source "decoder_control.c" provides an API for controlling the
decoder. This replaces various direct accesses to the DecoderControl
struct.
|
| |
|
|
|
|
|
|
|
| |
playerKill() was marked as deprecated, but it seems like a good idea
to do proper cleanup in all threads (e.g. for usable valgrind
results). Introduce the command "EXIT" which makes the player thread
exit cleanly.
|
|
|
|
|
|
|
|
|
| |
playerWait() stops the player thread (twice!) and closes the output
device. It should be well enough to just send CLOSE_AUDIO, without
STOP.
This requires a tiny change to the player thread code: make it break
when CLOSE_AUDIO is sent.
|
| |
|
|
|
|
|
| |
To make the code more consistent, call quitDecode() only at the end of
decodeParent().
|
|
Move code which runs in the player thread to player_thread.c. Having
a lot of player thread code in decode.c isn't easy to understand.
|