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