]> granicus.if.org Git - python/commitdiff
Fix #8618. Ask the Windows mixer API if there are any playback devices
authorBrian Curtin <brian.curtin@gmail.com>
Tue, 1 Jun 2010 13:29:13 +0000 (13:29 +0000)
committerBrian Curtin <brian.curtin@gmail.com>
Tue, 1 Jun 2010 13:29:13 +0000 (13:29 +0000)
configured before attempting to test PlaySound.

Lib/test/test_winsound.py

index 228dfa146abb0d72ac000ac9c2f4f69048387b0d..366c74b6cdaea6aca8d66bb678d2f958c2c2641e 100644 (file)
@@ -5,6 +5,7 @@ from test import test_support
 import time
 import os
 import subprocess
+import ctypes
 
 winsound = test_support.import_module('winsound')
 import _winreg
@@ -12,6 +13,11 @@ import _winreg
 def has_sound(sound):
     """Find out if a particular event is configured with a default sound"""
     try:
+        # Ask the mixer API for the number of devices it knows about.
+        # When there are no devices, PlaySound will fail.
+        if ctypes.windll.winmm.mixerGetNumDevs() is 0:
+            return False
+
         key = _winreg.OpenKeyEx(_winreg.HKEY_CURRENT_USER,
                 "AppEvents\Schemes\Apps\.Default\{0}\.Default".format(sound))
         value = _winreg.EnumValue(key, 0)[1]