summaryrefslogtreecommitdiff
path: root/src/libsink
diff options
context:
space:
mode:
Diffstat (limited to 'src/libsink')
-rw-r--r--src/libsink/sink.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/libsink/sink.c b/src/libsink/sink.c
index 0eca9f5..4aa1d51 100644
--- a/src/libsink/sink.c
+++ b/src/libsink/sink.c
@@ -308,6 +308,8 @@ static void handle_sink_cmd(struct camu_sink *sink, struct camu_sink_cmd *cmd)
if (sink->video.state == SINK_PLAYING) {
sink->callback(sink->userdata, CAMU_SINK_STOP, CAMU_SINK_VIDEO, NULL);
sink->video.state = SINK_PAUSED;
+ } else {
+ sink->callback(sink->userdata, CAMU_SINK_REFRESH_VIDEO, 0, NULL);
}
break;
#endif
@@ -743,7 +745,7 @@ static void switch_to(struct camu_sink *sink, struct camu_sink_entry *target)
sink->current = target;
sink->current->audio.ignore_paused = false;
if (!sink->current->buffers_paused) {
- camu_audio_buffer_unpause(&sink->current->audio.buf);
+ camu_audio_buffer_resync(&sink->current->audio.buf);
}
}
@@ -1438,7 +1440,7 @@ static bool set_command_callback(void *userdata, struct nn_rpc_connection *conn,
if (entry != current) {
switch_to(sink, entry);
} else {
- camu_audio_buffer_unpause(&entry->audio.buf);
+ camu_audio_buffer_resync(&entry->audio.buf);
}
camu_clock_resume(&entry->clock, at);
break;
@@ -1471,7 +1473,7 @@ static bool set_command_callback(void *userdata, struct nn_rpc_connection *conn,
sink->target = entry;
} else {
sink->target = NULL;
- camu_audio_buffer_unpause(&entry->audio.buf);
+ camu_audio_buffer_resync(&entry->audio.buf);
}
camu_clock_pause(&prev_target->clock, at);
} else {
@@ -1528,7 +1530,7 @@ static bool pause_command_callback(void *userdata, struct nn_rpc_connection *con
entry->buffers_paused = false;
camu_clock_resume(&entry->clock, at);
if (!AUDIO_EMPTY(entry)) {
- camu_audio_buffer_unpause(&entry->audio.buf);
+ camu_audio_buffer_resync(&entry->audio.buf);
queue_cmd(entry->sink, (struct camu_sink_cmd){
.op = START,
.value.i = CAMU_SINK_AUDIO