[Ekiga-devel-list] Win32 audio issues cleanup



As far as I can see Win32 Ekiga's audio device / file handling need some changes: 1) After the GetVolume issue has been fixed in Ptlib ( http://sourceforge.net/tracker/?func=detail&aid=2841719&group_id=204472&atid=989748 ) Win32 Ekiga can "store" the volume settings of its primary audio device in the OS's mixer settings similar to the Linux version. Now "commit d5761aedc38561b0e Keep the output sound volume across calls 2009-08-18 19:19:32" is counterproductive and should be reversed (see attached ekiga_1outvolume.diff). It was done under the assumption that Win32 Ekiga would have to store its volume settings in a config key. 2) Dominik's test results in http://mail.gnome.org/archives/ekiga-devel-list/2009-August/msg00021.html show that Win32 Ekiga suffers from a threading issue which prevents the desired primary audio output device to be saved across calls. I think that this relates to bug http://bugzilla.gnome.org/show_bug.cgi?id=586531#c6 . Win32 Ekiga really needs the patch (for reference see attached ekiga_outaudiodev.diff). 3) As Jarmo Pussinen reported Win32 Ekiga is unable to load dialtone.wav. It uses the wrong DATA_DIR because lib/engine/audiooutput/audiooutput-scheduler.cpp does not include lib/platform/winpaths.h. Attached ekiga_win32dirs2.diff fixes that.
Michael
diff -ur ekiga.orig/lib/engine/audiooutput/audiooutput-core.cpp ekiga/lib/engine/audiooutput/audiooutput-core.cpp
--- ekiga.orig/lib/engine/audiooutput/audiooutput-core.cpp	2009-08-21 08:06:31.000000000 +0200
+++ ekiga/lib/engine/audiooutput/audiooutput-core.cpp	2009-08-21 08:08:07.000000000 +0200
@@ -364,13 +364,6 @@
                                         AudioOutputSettings settings,
                                         AudioOutputManager *manager)
 {
-#ifdef WIN32
-  /* update the current volume to the desired one */
-  if (ps == primary) {
-    current_primary_volume = settings.volume;
-    settings.volume = desired_primary_volume;
-  }
-#endif
   device_opened.emit (*manager, ps, device, settings);
 }
 
diff -ur ekiga.orig/lib/engine/audiooutput/audiooutput-core.cpp ekiga/lib/engine/audiooutput/audiooutput-core.cpp
--- ekiga.orig/lib/engine/audiooutput/audiooutput-core.cpp	2009-08-16 14:25:21.000000000 +0200
+++ ekiga/lib/engine/audiooutput/audiooutput-core.cpp	2009-08-16 14:28:21.000000000 +0200
@@ -248,6 +248,8 @@
     return;
   }
 
+  internal_set_manager(primary, desired_primary_device);    /* may be left undetermined after the last call */
+
   average_level = 0;
   internal_open(primary, channels, samplerate, bits_per_sample);
   current_primary_config.active = true;
diff -ur ekiga.orig/lib/engine/audiooutput/audiooutput-scheduler.cpp ekiga/lib/engine/audiooutput/audiooutput-scheduler.cpp
--- ekiga.orig/lib/engine/audiooutput/audiooutput-scheduler.cpp	2009-08-18 19:46:47.000000000 +0200
+++ ekiga/lib/engine/audiooutput/audiooutput-scheduler.cpp	2009-08-18 19:47:39.000000000 +0200
@@ -37,6 +37,9 @@
 #include "audiooutput-scheduler.h"
 #include "audiooutput-core.h"
 #include "config.h"
+#ifdef WIN32
+#include "platform/winpaths.h"
+#endif
 
 using namespace Ekiga;
 
diff -ur ekiga.orig/lib/engine/audiooutput/Makefile.am ekiga/lib/engine/audiooutput/Makefile.am
--- ekiga.orig/lib/engine/audiooutput/Makefile.am	2009-08-18 19:46:47.000000000 +0200
+++ ekiga/lib/engine/audiooutput/Makefile.am	2009-08-18 19:48:43.000000000 +0200
@@ -5,6 +5,7 @@
 AM_CXXFLAGS = $(SIGC_CFLAGS) $(GLIB_CFLAGS) $(PTLIB_CFLAGS)
 
 INCLUDES = \
+	-I$(top_srcdir)/lib \
 	-I$(top_srcdir)/lib/gmconf \
 	-I$(top_srcdir)/lib/engine/framework \
 	-I$(top_srcdir)/lib/engine/audiooutput \


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]