Multiple instance patch for ESOUND
- From: Rocky Zhang <rocky userful com>
- To: gnome-multimedia gnome org
- Subject: Multiple instance patch for ESOUND
- Date: Thu, 21 Jul 2005 09:47:30 -0600
Hi everyone,
I found I can't launch esd daemon for multiple instances with default
socket in one computer. Here I connect 2 USB headsets to my computer and
2 different users to use the audio devices at the same time. I looked
into esound source code and found that it is a lock of socket
file /tmp/.esd/socket, and it prevent another user to launch multiple
instances. I slightly modify the source code, different screen # use
different socket directory, like testuser1 working on screen 0
( $DISPLAY = :0.0 ), use /tmp/.esd-0/socket; testuser2 works on screen 1
( $DISPLAY = :1.0 ) and so on; They can launch different esd daemon for
them.
See the patch in the attachment.
I wonder if it is valuable for others and if I can commit to CVS.
Thanks.
XiaoQian (Rocky) Zhang
--- ./util.c.userful 2005-05-13 10:32:58.000000000 -0600
+++ ./util.c 2005-05-17 09:58:23.000000000 -0600
@@ -25,6 +25,18 @@
{
char *audiodev;
static char *dirname = NULL;
+ //zxq add to use different socket dir for different station
+ int i,j;
+ char socket_dirname[16];
+ strcpy(socket_dirname, getenv("DISPLAY"));
+ j = strlen(socket_dirname);
+ for (i=0; i<j; i++)
+ if ( socket_dirname[i] == ':' )
+ socket_dirname[i] = '-';
+ else if ( socket_dirname[i] == '.' )
+ socket_dirname[i] = '\0';
+
+
if (dirname == NULL) {
if (!(audiodev = getenv("AUDIODEV"))) {
@@ -35,8 +47,10 @@
audiodev = newdev++;
}
}
- dirname = malloc(strlen(audiodev) + sizeof("/tmp/.esd"));
- strcpy(dirname, "/tmp/.esd");
+// dirname = malloc(strlen(audiodev) + sizeof("/tmp/.esd"));
+ dirname = malloc(strlen(audiodev) + sizeof("/tmp/.esd") + sizeof(socket_dirname));
+ strcpy(dirname, "/tmp/.esd");
+ strcat(dirname, socket_dirname);
strcat(dirname, audiodev);
}
--- ./esd.conf.userful 2005-06-24 10:56:40.000000000 -0600
+++ ./esd.conf 2005-06-24 10:57:01.000000000 -0600
@@ -1,6 +1,6 @@
[esd]
auto_spawn=1
-spawn_options=-terminate -nobeeps -as 2
+spawn_options=
spawn_wait_ms=100
# default options are used in spawned and non-spawned mode
-default_options=
+default_options=-terminate -nobeeps -as 2
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]