summaryrefslogtreecommitdiff
path: root/audio
diff options
context:
space:
mode:
authordrochner <drochner@pkgsrc.org>2008-07-31 14:03:16 +0000
committerdrochner <drochner@pkgsrc.org>2008-07-31 14:03:16 +0000
commit2f1aa1dd6d799baa520659ad1505141c8487fa09 (patch)
tree7f4b76aad0ca2b76439194308abb9b830c2d4be7 /audio
parent6e80035f262298deafe2d1e343c01aeb9720de69 (diff)
downloadpkgsrc-2f1aa1dd6d799baa520659ad1505141c8487fa09.tar.gz
In the new nonblocking write code, abort on write errors, especially
on EPIPE. This fixes Gnome session hangs if sounds are switched off. See Gnome bugzilla #542391 for details. Bump PKGREVISION.
Diffstat (limited to 'audio')
-rw-r--r--audio/esound/Makefile3
-rw-r--r--audio/esound/distinfo3
-rw-r--r--audio/esound/patches/patch-ac42
3 files changed, 46 insertions, 2 deletions
diff --git a/audio/esound/Makefile b/audio/esound/Makefile
index 51bf3a020fd..60790bce00a 100644
--- a/audio/esound/Makefile
+++ b/audio/esound/Makefile
@@ -1,6 +1,7 @@
-# $NetBSD: Makefile,v 1.70 2008/07/30 10:24:40 drochner Exp $
+# $NetBSD: Makefile,v 1.71 2008/07/31 14:03:16 drochner Exp $
DISTNAME= esound-0.2.39
+PKGREVISION= 1
CATEGORIES= audio
MASTER_SITES= ${MASTER_SITE_GNOME:=sources/esound/0.2/}
EXTRACT_SUFX= .tar.bz2
diff --git a/audio/esound/distinfo b/audio/esound/distinfo
index 4a225d7cc18..71480db3535 100644
--- a/audio/esound/distinfo
+++ b/audio/esound/distinfo
@@ -1,7 +1,8 @@
-$NetBSD: distinfo,v 1.25 2008/07/29 21:58:13 wiz Exp $
+$NetBSD: distinfo,v 1.26 2008/07/31 14:03:16 drochner Exp $
SHA1 (esound-0.2.39.tar.bz2) = 71dd61502224309784f1d9c274914731cde7c628
RMD160 (esound-0.2.39.tar.bz2) = 1f719fdefe2bb9bc38d7dbf178d84e45451d8249
Size (esound-0.2.39.tar.bz2) = 423581 bytes
SHA1 (patch-aa) = d734a1004026287071e571ceb3fd346b809a6a30
SHA1 (patch-ab) = cb6d32ce121e46d53286c1d9bdb9b15c411d0c6c
+SHA1 (patch-ac) = e36246569d85f0baf957d2faa5f787a214054894
diff --git a/audio/esound/patches/patch-ac b/audio/esound/patches/patch-ac
new file mode 100644
index 00000000000..a297d9d0672
--- /dev/null
+++ b/audio/esound/patches/patch-ac
@@ -0,0 +1,42 @@
+$NetBSD: patch-ac,v 1.5 2008/07/31 14:03:16 drochner Exp $
+
+--- esdlib.c.orig 2008-07-15 17:35:15.000000000 +0200
++++ esdlib.c
+@@ -90,7 +90,7 @@ read_timeout (int fd, char *buf, size_t
+ do {
+ pfd[0].revents = 0;
+ rv = poll (pfd, 1, 100);
+- } while (rv == -1 && errno == EINTR);
++ } while (rv == -1 && (errno == EINTR || errno == EAGAIN));
+
+ if (rv < 1 || !(pfd[0].revents & POLLIN)) {
+ errno = ETIMEDOUT;
+@@ -138,9 +138,9 @@ write_timeout (int fd, const char *buf,
+ do {
+ pfd[0].revents = 0;
+ rv = poll (pfd, 1, 100);
+- } while (rv == -1 && errno == EINTR);
++ } while (rv == -1 && (errno == EINTR || errno == EAGAIN));
+
+- if (rv < 1 || !(pfd[0].revents & POLLOUT)) {
++ if (rv < 1 || (pfd[0].revents & (POLLERR | POLLHUP | POLLOUT)) != POLLOUT) {
+ fcntl (fd, F_SETFL, flags);
+ errno = ETIMEDOUT;
+ return -1;
+@@ -150,8 +150,14 @@ write_timeout (int fd, const char *buf,
+ n = write (fd, buf + nwritten, buflen - nwritten);
+ } while (n == -1 && errno == EINTR);
+
+- if (n > 0)
+- nwritten += n;
++ if (n == -1) {
++ rv = errno;
++ fcntl (fd, F_SETFL, flags);
++ errno = rv;
++ return -1;
++ }
++
++ nwritten += n;
+ } while (nwritten < buflen);
+
+ fcntl (fd, F_SETFL, flags);