pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/audio/esound In the new nonblocking write code, abort ...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/e02920205b28
branches:  trunk
changeset: 545346:e02920205b28
user:      drochner <drochner%pkgsrc.org@localhost>
date:      Thu Jul 31 14:03:16 2008 +0000

description:
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:

 audio/esound/Makefile         |   3 ++-
 audio/esound/distinfo         |   3 ++-
 audio/esound/patches/patch-ac |  42 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 46 insertions(+), 2 deletions(-)

diffs (71 lines):

diff -r 036e6341bc36 -r e02920205b28 audio/esound/Makefile
--- a/audio/esound/Makefile     Thu Jul 31 13:42:57 2008 +0000
+++ b/audio/esound/Makefile     Thu Jul 31 14:03:16 2008 +0000
@@ -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 -r 036e6341bc36 -r e02920205b28 audio/esound/distinfo
--- a/audio/esound/distinfo     Thu Jul 31 13:42:57 2008 +0000
+++ b/audio/esound/distinfo     Thu Jul 31 14:03:16 2008 +0000
@@ -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 -r 036e6341bc36 -r e02920205b28 audio/esound/patches/patch-ac
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/audio/esound/patches/patch-ac     Thu Jul 31 14:03:16 2008 +0000
@@ -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);



Home | Main Index | Thread Index | Old Index