summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorArnavion <arnavion@gmail.com>2014-09-13 00:23:44 -0700
committerArnavion <arnavion@gmail.com>2014-09-13 00:23:44 -0700
commite209e55e5921e9ccaf1f713aa5010ddf1cb1c2d8 (patch)
tree615c190bbf1f166e8835364213a61de9b021efdf /src
parentad2300f2365e4499fb559c80a6c313d82e8c36d6 (diff)
Use PlaySoundW to play sounds on Windows.
Fixes #1133
Diffstat (limited to 'src')
-rw-r--r--src/common/text.c9
-rw-r--r--src/fe-gtk/fe-gtk.c7
2 files changed, 12 insertions, 4 deletions
diff --git a/src/common/text.c b/src/common/text.c
index 22467c99..329ef37b 100644
--- a/src/common/text.c
+++ b/src/common/text.c
@@ -2300,7 +2300,14 @@ sound_play (const char *file, gboolean quiet)
 	if (g_access (wavfile, R_OK) == 0)
 	{
 #ifdef WIN32
-		PlaySound (wavfile, NULL, SND_NODEFAULT|SND_FILENAME|SND_ASYNC);
+		gunichar2 *wavfile_utf16 = g_utf8_to_utf16 (wavfile, -1, NULL, NULL, NULL);
+
+		if (wavfile_utf16 != NULL)
+		{
+			PlaySoundW (wavfile_utf16, NULL, SND_NODEFAULT | SND_FILENAME | SND_ASYNC);
+
+			g_free (wavfile_utf16);
+		}
 #else
 #ifdef USE_LIBCANBERRA
 		if (ca_con == NULL)
diff --git a/src/fe-gtk/fe-gtk.c b/src/fe-gtk/fe-gtk.c
index 3c97a904..4b7d916f 100644
--- a/src/fe-gtk/fe-gtk.c
+++ b/src/fe-gtk/fe-gtk.c
@@ -656,10 +656,11 @@ void
 fe_beep (session *sess)
 {
 #ifdef WIN32
-	if (!PlaySound ("Notification.IM", NULL, SND_ALIAS|SND_ASYNC))
+	/* Play the "Instant Message Notification" system sound
+	 */
+	if (!PlaySoundW (L"Notification.IM", NULL, SND_ALIAS | SND_ASYNC))
 	{
-		/* This is really just a fallback attempt, may or may not work on new Windows releases, especially on x64.
-		 * You should set up the "Instant Message Notification" system sound instead, supported on Vista and up.
+		/* The user does not have the "Instant Message Notification" sound set. Fall back to system beep.
 		 */
 		Beep (1000, 50);
 	}