summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorGarrett D'Amore <Garrett.Damore@Sun.COM>2009-09-24 13:34:13 -0700
committerGarrett D'Amore <Garrett.Damore@Sun.COM>2009-09-24 13:34:13 -0700
commit0a4675b3d422aaa480e8a456bc5dd2d67cc50222 (patch)
tree6c56a864510a4725e21ff0476f5b1d9f4a66fb54 /usr/src
parent60471b7bbfab236de7d8776aed871d919c5f81c3 (diff)
downloadillumos-joyent-0a4675b3d422aaa480e8a456bc5dd2d67cc50222.tar.gz
6885480 flash player hangs after 6885023
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/io/audio/impl/audio_sun.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/usr/src/uts/common/io/audio/impl/audio_sun.c b/usr/src/uts/common/io/audio/impl/audio_sun.c
index d95d7d057f..0758d1afa4 100644
--- a/usr/src/uts/common/io/audio/impl/audio_sun.c
+++ b/usr/src/uts/common/io/audio/impl/audio_sun.c
@@ -1014,7 +1014,7 @@ devaudio_output(audio_client_t *c)
mutex_enter(&dc->dc_lock);
while (((eof = list_head(&dc->dc_eofcnt)) != NULL) &&
- (eof->tail < tail)) {
+ (eof->tail <= tail)) {
list_remove(&dc->dc_eofcnt, eof);
kmem_free(eof, sizeof (*eof));
eofs++;
@@ -1344,6 +1344,11 @@ devaudio_rsrv(audio_client_t *c)
while ((mp = getq(rq)) != NULL) {
if ((queclass(mp) != QPCTL) && (!canputnext(rq))) {
+ /*
+ * Put it back in the queue so we can apply
+ * backpressure properly.
+ */
+ (void) putbq(rq, mp);
return;
}
putnext(rq, mp);
@@ -1457,7 +1462,7 @@ static struct audio_client_ops devaudioctl_ops = {
NULL, /* drain */
devaudioctl_wput,
NULL,
- NULL,
+ devaudio_rsrv
};
void