diff options
author | Hans de Goede <hdegoede@redhat.com> | 2012-12-04 15:56:25 +0100 |
---|---|---|
committer | Hans de Goede <hdegoede@redhat.com> | 2012-12-05 00:39:10 +0100 |
commit | 4ad0b847f1c41493886aada74946ac3da75166d5 (patch) | |
tree | 484d196b391f28c4832ec2fa46ca3ab74e3e1d54 /usbredirhost | |
parent | 7c27620ccc24b57f53901a7e89d4ca54ac56ba60 (diff) |
usbredirhost: Add usbredirhost_stop_stream() helper function
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Diffstat (limited to 'usbredirhost')
-rw-r--r-- | usbredirhost/usbredirhost.c | 42 |
1 files changed, 14 insertions, 28 deletions
diff --git a/usbredirhost/usbredirhost.c b/usbredirhost/usbredirhost.c index 860978d..85fa546 100644 --- a/usbredirhost/usbredirhost.c +++ b/usbredirhost/usbredirhost.c @@ -993,6 +993,18 @@ static int usbredirhost_start_stream_unlocked(struct usbredirhost *host, return usb_redir_success; } +static void usbredirhost_stop_stream(struct usbredirhost *host, + uint64_t id, uint8_t ep) +{ + if (host->disconnected) { + return; + } + + usbredirhost_cancel_stream(host, ep); + usbredirhost_send_stream_status(host, id, ep, usb_redir_success); + FLUSH(host); +} + /* Called from both parser read and packet complete callbacks */ static void usbredirhost_alloc_stream_unlocked(struct usbredirhost *host, uint64_t id, uint8_t ep, uint8_t type, uint8_t pkts_per_transfer, @@ -1582,20 +1594,7 @@ static void usbredirhost_start_iso_stream(void *priv, uint64_t id, static void usbredirhost_stop_iso_stream(void *priv, uint64_t id, struct usb_redir_stop_iso_stream_header *stop_iso_stream) { - struct usbredirhost *host = priv; - uint8_t ep = stop_iso_stream->endpoint; - uint8_t status = usb_redir_success; - - if (host->disconnected) { - status = usb_redir_ioerror; - goto exit; - } - - usbredirhost_cancel_stream(host, ep); - -exit: - usbredirhost_send_stream_status(host, id, ep, status); - FLUSH(host); + usbredirhost_stop_stream(priv, id, stop_iso_stream->endpoint); } static void usbredirhost_start_interrupt_receiving(void *priv, uint64_t id, @@ -1612,20 +1611,7 @@ static void usbredirhost_start_interrupt_receiving(void *priv, uint64_t id, static void usbredirhost_stop_interrupt_receiving(void *priv, uint64_t id, struct usb_redir_stop_interrupt_receiving_header *stop_interrupt_receiving) { - struct usbredirhost *host = priv; - uint8_t ep = stop_interrupt_receiving->endpoint; - uint8_t status = usb_redir_success; - - if (host->disconnected) { - status = usb_redir_ioerror; - goto exit; - } - - usbredirhost_cancel_stream(host, ep); - -exit: - usbredirhost_send_stream_status(host, id, ep, status); - FLUSH(host); + usbredirhost_stop_stream(priv, id, stop_interrupt_receiving->endpoint); } static void usbredirhost_alloc_bulk_streams(void *priv, uint64_t id, |