Update of /cvsroot/alsa/alsa-lib/src/pcm
In directory sc8-pr-cvs1:/tmp/cvs-serv17118/src/pcm
Modified Files:
pcm_local.h pcm_mmap.c pcm_plug.c
Log Message:
Takashi: added shadow pcm to avoid problem with plug plugin and mmaped access
Index: pcm_local.h
===================================================================
RCS file: /cvsroot/alsa/alsa-lib/src/pcm/pcm_local.h,v
retrieving revision 1.129
retrieving revision 1.130
diff -u -r1.129 -r1.130
--- pcm_local.h 23 Apr 2003 12:42:00 -0000 1.129
+++ pcm_local.h 8 Aug 2003 09:06:41 -0000 1.130
@@ -201,6 +201,7 @@
snd_pcm_rbptr_t hw;
snd_pcm_uframes_t min_align;
int mmap_rw;
+ int shadow_mmap;
int donot_close;
snd_pcm_channel_info_t *mmap_channels;
snd_pcm_channel_area_t *running_areas;
Index: pcm_mmap.c
===================================================================
RCS file: /cvsroot/alsa/alsa-lib/src/pcm/pcm_mmap.c,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -r1.67 -r1.68
--- pcm_mmap.c 22 Jun 2003 09:59:03 -0000 1.67
+++ pcm_mmap.c 8 Aug 2003 09:06:41 -0000 1.68
@@ -295,6 +295,8 @@
err = pcm->ops->mmap(pcm);
if (err < 0)
return err;
+ if (pcm->shadow_mmap)
+ return 0;
pcm->mmap_channels = calloc(pcm->channels, sizeof(pcm->mmap_channels[0]));
if (!pcm->mmap_channels)
return -ENOMEM;
@@ -427,6 +429,8 @@
unsigned int c;
assert(pcm);
assert(pcm->mmap_channels);
+ if (pcm->shadow_mmap)
+ return pcm->ops->munmap(pcm);
for (c = 0; c < pcm->channels; ++c) {
snd_pcm_channel_info_t *i = &pcm->mmap_channels[c];
unsigned int c1;
Index: pcm_plug.c
===================================================================
RCS file: /cvsroot/alsa/alsa-lib/src/pcm/pcm_plug.c,v
retrieving revision 1.123
retrieving revision 1.124
diff -u -r1.123 -r1.124
--- pcm_plug.c 25 Jul 2003 17:02:04 -0000 1.123
+++ pcm_plug.c 8 Aug 2003 09:06:41 -0000 1.124
@@ -937,13 +937,23 @@
return snd_pcm_channel_info(plug->slave, info);
}
-static int snd_pcm_plug_mmap(snd_pcm_t *pcm ATTRIBUTE_UNUSED)
+static int snd_pcm_plug_mmap(snd_pcm_t *pcm)
{
+ snd_pcm_plug_t *plug = pcm->private_data;
+ pcm->mmap_channels = plug->slave->mmap_channels;
+ pcm->running_areas = plug->slave->running_areas;
+ pcm->stopped_areas = plug->slave->stopped_areas;
+ pcm->shadow_mmap = 1;
return 0;
}
-static int snd_pcm_plug_munmap(snd_pcm_t *pcm ATTRIBUTE_UNUSED)
+static int snd_pcm_plug_munmap(snd_pcm_t *pcm)
{
+ // snd_pcm_plug_t *plug = pcm->private_data;
+ pcm->mmap_channels = NULL;
+ pcm->running_areas = NULL;
+ pcm->stopped_areas = NULL;
+ pcm->shadow_mmap = 0;
return 0;
}
-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog