summaryrefslogtreecommitdiff
path: root/usbredirhost/usbredirhost.c
diff options
context:
space:
mode:
Diffstat (limited to 'usbredirhost/usbredirhost.c')
-rw-r--r--usbredirhost/usbredirhost.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/usbredirhost/usbredirhost.c b/usbredirhost/usbredirhost.c
index 34f5b14..03c56e9 100644
--- a/usbredirhost/usbredirhost.c
+++ b/usbredirhost/usbredirhost.c
@@ -1044,10 +1044,17 @@ static int usbredirhost_can_write_iso_package(struct usbredirhost *host)
{
uint64_t size;
- if (!host->buffered_output_size_func)
- return true;
+ if (host->flags & usbredirhost_fl_write_cb_owns_buffer) {
+ if (!host->buffered_output_size_func) {
+ /* Application is not dropping isoc packages */
+ return true;
+ }
+ size = host->buffered_output_size_func(host->func_priv);
+ } else {
+ /* queue is on usbredirparser */
+ size = usbredirparser_get_bufferered_output_size(host->parser);
+ }
- size = host->buffered_output_size_func(host->func_priv);
if (size >= host->iso_threshold.higher) {
if (!host->iso_threshold.dropping)
DEBUG("START dropping isoc packets %" PRIu64 " buffer > %" PRIu64 " hi threshold",