diff options
author | Arnavion <arnavion@gmail.com> | 2014-09-13 00:23:44 -0700 |
---|---|---|
committer | Arnavion <arnavion@gmail.com> | 2014-09-13 00:23:44 -0700 |
commit | e209e55e5921e9ccaf1f713aa5010ddf1cb1c2d8 (patch) | |
tree | 615c190bbf1f166e8835364213a61de9b021efdf /src | |
parent | ad2300f2365e4499fb559c80a6c313d82e8c36d6 (diff) |
Use PlaySoundW to play sounds on Windows.
Fixes #1133
Diffstat (limited to 'src')
-rw-r--r-- | src/common/text.c | 9 | ||||
-rw-r--r-- | src/fe-gtk/fe-gtk.c | 7 |
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); } |