From 68d2dd02f438d83dcd28c5ad04a9034c2a0c6492 Mon Sep 17 00:00:00 2001 From: Damian Minkov <damencho@jitsi.org> Date: Wed, 17 Oct 2012 16:50:23 +0000 Subject: [PATCH] Fixes double playing of audio notification if notification and playback device are the same. --- .../notify/AudioNotifierServiceImpl.java | 24 +++++++++++++++++++ .../audionotifier/AudioNotifierService.java | 7 ++++++ 2 files changed, 31 insertions(+) diff --git a/src/org/jitsi/impl/neomedia/notify/AudioNotifierServiceImpl.java b/src/org/jitsi/impl/neomedia/notify/AudioNotifierServiceImpl.java index 09b4a26a..7fc5a359 100644 --- a/src/org/jitsi/impl/neomedia/notify/AudioNotifierServiceImpl.java +++ b/src/org/jitsi/impl/neomedia/notify/AudioNotifierServiceImpl.java @@ -16,6 +16,8 @@ import org.jitsi.service.libjitsi.*; import org.jitsi.service.resources.*; +import javax.media.*; + /** * The implementation of the AudioNotifierService. * @@ -218,6 +220,28 @@ public void propertyChange(PropertyChangeEvent event) } } + /** + * Checks whether the playback and notification configuration + * share the same device. + * @return are audio out and notifications using the same device. + */ + public boolean audioOutAndNotificationsShareSameDevice() + { + CaptureDeviceInfo notifyInfo = + getDeviceConfiguration().getAudioSystem() + .getDevice(AudioSystem.NOTIFY_INDEX); + CaptureDeviceInfo playbackInfo = + getDeviceConfiguration().getAudioSystem() + .getDevice(AudioSystem.PLAYBACK_INDEX); + + if(notifyInfo != null && playbackInfo != null) + { + return notifyInfo.getLocator().equals(playbackInfo.getLocator()); + } + + return false; + } + /** * Key for clips. */ diff --git a/src/org/jitsi/service/audionotifier/AudioNotifierService.java b/src/org/jitsi/service/audionotifier/AudioNotifierService.java index 95de4045..968ba73c 100644 --- a/src/org/jitsi/service/audionotifier/AudioNotifierService.java +++ b/src/org/jitsi/service/audionotifier/AudioNotifierService.java @@ -53,4 +53,11 @@ public interface AudioNotifierService * @return TRUE if currently the sound is off, FALSE otherwise */ public boolean isMute(); + + /** + * Checks whether the playback and notification configuration + * share the same device. + * @return are audio out and notifications using the same device. + */ + public boolean audioOutAndNotificationsShareSameDevice(); } -- GitLab