Alexandre Julliard : winealsa: Make sure we can set volume before reporting WAVECAPS_VOLUME.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Jul 17 07:36:53 CDT 2007


Module: wine
Branch: master
Commit: edff53387a2186a51834c7b03d48307b9e335293
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=edff53387a2186a51834c7b03d48307b9e335293

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Tue Jul 17 13:35:53 2007 +0200

winealsa: Make sure we can set volume before reporting WAVECAPS_VOLUME.

---

 dlls/winealsa.drv/waveinit.c |   20 ++++++++++++++++----
 1 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/dlls/winealsa.drv/waveinit.c b/dlls/winealsa.drv/waveinit.c
index 11f8fdd..a19e332 100644
--- a/dlls/winealsa.drv/waveinit.c
+++ b/dlls/winealsa.drv/waveinit.c
@@ -307,10 +307,22 @@ static int ALSA_ComputeCaps(snd_ctl_t *ctl, snd_pcm_t *pcm,
 
     /* check for volume control support */
     if (ctl) {
-        *supports |= WAVECAPS_VOLUME;
-
-        if (chmin <= 2 && 2 <= chmax)
-            *supports |= WAVECAPS_LRVOLUME;
+        if (snd_ctl_name(ctl))
+        {
+            snd_hctl_t *hctl;
+            if (snd_hctl_open(&hctl, snd_ctl_name(ctl), 0) >= 0)
+            {
+                snd_hctl_load(hctl);
+                if (!ALSA_CheckSetVolume( hctl, NULL, NULL, NULL, NULL, NULL, NULL, NULL ))
+                {
+                    *supports |= WAVECAPS_VOLUME;
+                    if (chmin <= 2 && 2 <= chmax)
+                        *supports |= WAVECAPS_LRVOLUME;
+                }
+                snd_hctl_free(hctl);
+                snd_hctl_close(hctl);
+            }
+        }
     }
 
     if (*formats & (WAVE_FORMAT_1M08  | WAVE_FORMAT_2M08  |




More information about the wine-cvs mailing list