null: added option to disable timer synchronization
The null plugin synchronizes the playback so it will happen in real time. This patch adds a configuration option which disables this: the playback will then be as fast as possible. This can be useful to profile MPD.
This commit is contained in:
parent
0122510f2c
commit
d47be76ce0
1
NEWS
1
NEWS
|
@ -11,6 +11,7 @@ ver 0.15 - (200?/??/??)
|
|||
- mikmod disabled by default, due to severe security issues in libmikmod
|
||||
* audio outputs:
|
||||
- shout: enlarged buffer size to 32 kB
|
||||
- null: allow disabling synchronization
|
||||
* commands:
|
||||
- "playlistinfo" supports a range now
|
||||
- added "sticker database", command "sticker", which allows clients
|
||||
|
|
|
@ -24,6 +24,8 @@
|
|||
#include <assert.h>
|
||||
|
||||
struct null_data {
|
||||
bool sync;
|
||||
|
||||
Timer *timer;
|
||||
};
|
||||
|
||||
|
@ -34,6 +36,7 @@ null_init(G_GNUC_UNUSED struct audio_output *audio_output,
|
|||
{
|
||||
struct null_data *nd = g_new(struct null_data, 1);
|
||||
|
||||
nd->sync = config_get_block_bool(param, "sync", true);
|
||||
nd->timer = NULL;
|
||||
|
||||
return nd;
|
||||
|
@ -54,6 +57,7 @@ null_open(void *data, struct audio_format *audio_format)
|
|||
{
|
||||
struct null_data *nd = data;
|
||||
|
||||
if (nd->sync)
|
||||
nd->timer = timer_new(audio_format);
|
||||
|
||||
return true;
|
||||
|
@ -76,6 +80,9 @@ null_play(void *data, G_GNUC_UNUSED const char *chunk, size_t size)
|
|||
struct null_data *nd = data;
|
||||
Timer *timer = nd->timer;
|
||||
|
||||
if (!nd->sync)
|
||||
return true;
|
||||
|
||||
if (!timer->started)
|
||||
timer_start(timer);
|
||||
else
|
||||
|
@ -91,6 +98,9 @@ null_cancel(void *data)
|
|||
{
|
||||
struct null_data *nd = data;
|
||||
|
||||
if (!nd->sync)
|
||||
return;
|
||||
|
||||
timer_reset(nd->timer);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue