ekiga r6343 - in trunk: . lib/engine/audioinput/skel lib/engine/audiooutput/skel src/gui
- From: mschneid svn gnome org
- To: svn-commits-list gnome org
- Subject: ekiga r6343 - in trunk: . lib/engine/audioinput/skel lib/engine/audiooutput/skel src/gui
- Date: Mon, 2 Jun 2008 15:05:34 +0000 (UTC)
Author: mschneid
Date: Mon Jun 2 15:05:33 2008
New Revision: 6343
URL: http://svn.gnome.org/viewvc/ekiga?rev=6343&view=rev
Log:
Add debug level 5.
Allow lower priority threads to catch the mutexes
in the audio cores by telling the high priority
threads to sleep 5 ms before taking it. Now
preferences can also be opened during a call
with decent latency.
Modified:
trunk/ChangeLog
trunk/lib/engine/audioinput/skel/audioinput-core.cpp
trunk/lib/engine/audioinput/skel/audioinput-core.h
trunk/lib/engine/audiooutput/skel/audiooutput-core.cpp
trunk/lib/engine/audiooutput/skel/audiooutput-core.h
trunk/src/gui/main.cpp
Modified: trunk/lib/engine/audioinput/skel/audioinput-core.cpp
==============================================================================
--- trunk/lib/engine/audioinput/skel/audioinput-core.cpp (original)
+++ trunk/lib/engine/audioinput/skel/audioinput-core.cpp Mon Jun 2 15:05:33 2008
@@ -138,6 +138,7 @@
audioinput_core_conf_bridge = NULL;
average_level = 0;
calculate_average = false;
+ yield = false;
}
AudioInputCore::~AudioInputCore ()
@@ -172,6 +173,7 @@
void AudioInputCore::visit_managers (sigc::slot<bool, AudioInputManager &> visitor)
{
+ yield = true;
PWaitAndSignal m(core_mutex);
bool go_on = true;
@@ -183,6 +185,7 @@
void AudioInputCore::get_devices (std::vector <AudioInputDevice> & devices)
{
+ yield = true;
PWaitAndSignal m(core_mutex);
devices.clear();
@@ -215,6 +218,7 @@
void AudioInputCore::add_device (const std::string & source, const std::string & device_name, HalManager* /*manager*/)
{
PTRACE(0, "AudioInputCore\tAdding Device " << device_name);
+ yield = true;
PWaitAndSignal m(core_mutex);
AudioInputDevice device;
@@ -234,6 +238,7 @@
void AudioInputCore::remove_device (const std::string & source, const std::string & device_name, HalManager* /*manager*/)
{
PTRACE(0, "AudioInputCore\tRemoving Device " << device_name);
+ yield = true;
PWaitAndSignal m(core_mutex);
AudioInputDevice device;
@@ -257,6 +262,7 @@
void AudioInputCore::start_preview (unsigned channels, unsigned samplerate, unsigned bits_per_sample)
{
+ yield = true;
PWaitAndSignal m(core_mutex);
PTRACE(4, "AudioInputCore\tStarting preview " << channels << "x" << samplerate << "/" << bits_per_sample);
@@ -283,6 +289,7 @@
void AudioInputCore::stop_preview ()
{
+ yield = true;
PWaitAndSignal m(core_mutex);
PTRACE(4, "AudioInputCore\tStopping Preview");
@@ -300,6 +307,7 @@
void AudioInputCore::set_stream_buffer_size (unsigned buffer_size, unsigned num_buffers)
{
+ yield = true;
PWaitAndSignal m(core_mutex);
PTRACE(4, "AudioInputCore\tSetting stream buffer size " << num_buffers << "/" << buffer_size);
@@ -313,6 +321,7 @@
void AudioInputCore::start_stream (unsigned channels, unsigned samplerate, unsigned bits_per_sample)
{
+ yield = true;
PWaitAndSignal m(core_mutex);
PTRACE(4, "AudioInputCore\tStarting stream " << channels << "x" << samplerate << "/" << bits_per_sample);
@@ -333,6 +342,7 @@
void AudioInputCore::stop_stream ()
{
+ yield = true;
PWaitAndSignal m(core_mutex);
PTRACE(4, "AudioInputCore\tStopping Stream");
@@ -353,6 +363,10 @@
unsigned size,
unsigned & bytes_read)
{
+ if (yield) {
+ yield = false;
+ PThread::Current()->Sleep(5);
+ }
PWaitAndSignal m_var(core_mutex);
if (current_manager) {
Modified: trunk/lib/engine/audioinput/skel/audioinput-core.h
==============================================================================
--- trunk/lib/engine/audioinput/skel/audioinput-core.h (original)
+++ trunk/lib/engine/audioinput/skel/audioinput-core.h Mon Jun 2 15:05:33 2008
@@ -351,6 +351,7 @@
float average_level;
bool calculate_average;
+ bool yield;
};
/**
* @}
Modified: trunk/lib/engine/audiooutput/skel/audiooutput-core.cpp
==============================================================================
--- trunk/lib/engine/audiooutput/skel/audiooutput-core.cpp (original)
+++ trunk/lib/engine/audiooutput/skel/audiooutput-core.cpp Mon Jun 2 15:05:33 2008
@@ -62,6 +62,7 @@
audiooutput_core_conf_bridge = NULL;
average_level = 0;
calculate_average = false;
+ yield = false;
}
AudioOutputCore::~AudioOutputCore ()
@@ -97,6 +98,7 @@
void AudioOutputCore::visit_managers (sigc::slot<bool, AudioOutputManager &> visitor)
{
+ yield = true;
PWaitAndSignal m_pri(core_mutex[primary]);
PWaitAndSignal m_sec(core_mutex[secondary]);
bool go_on = true;
@@ -134,6 +136,7 @@
void AudioOutputCore::get_devices (std::vector <AudioOutputDevice> & devices)
{
+ yield = true;
PWaitAndSignal m_pri(core_mutex[primary]);
PWaitAndSignal m_sec(core_mutex[secondary]);
@@ -157,11 +160,12 @@
void AudioOutputCore::set_device(AudioOutputPS ps, const AudioOutputDevice & device)
{
PTRACE(4, "AudioOutputCore\tSetting device[" << ps << "]: " << device);
-
+ yield = true;
PWaitAndSignal m_sec(core_mutex[secondary]);
switch (ps) {
case primary:
+ yield = true;
core_mutex[primary].Wait();
internal_set_primary_device (device);
desired_primary_device = device;
@@ -188,6 +192,7 @@
void AudioOutputCore::add_device (const std::string & sink, const std::string & device_name, HalManager* /*manager*/)
{
PTRACE(0, "AudioOutputCore\tAdding Device " << device_name);
+ yield = true;
PWaitAndSignal m_pri(core_mutex[primary]);
AudioOutputDevice device;
@@ -208,6 +213,7 @@
void AudioOutputCore::remove_device (const std::string & sink, const std::string & device_name, HalManager* /*manager*/)
{
PTRACE(0, "AudioOutputCore\tRemoving Device " << device_name);
+ yield = true;
PWaitAndSignal m_pri(core_mutex[primary]);
AudioOutputDevice device;
@@ -231,6 +237,7 @@
void AudioOutputCore::start (unsigned channels, unsigned samplerate, unsigned bits_per_sample)
{
+ yield = true;
PWaitAndSignal m_pri(core_mutex[primary]);
if (current_primary_config.active) {
@@ -250,6 +257,7 @@
void AudioOutputCore::stop()
{
+ yield = true;
PWaitAndSignal m_pri(core_mutex[primary]);
average_level = 0;
@@ -260,6 +268,7 @@
}
void AudioOutputCore::set_buffer_size (unsigned buffer_size, unsigned num_buffers) {
+ yield = true;
PWaitAndSignal m_pri(core_mutex[primary]);
if (current_manager[primary])
@@ -273,6 +282,10 @@
unsigned size,
unsigned & bytes_written)
{
+ if (yield) {
+ yield = false;
+ PThread::Current()->Sleep(5);
+ }
PWaitAndSignal m_pri(core_mutex[primary]);
if (current_manager[primary]) {
Modified: trunk/lib/engine/audiooutput/skel/audiooutput-core.h
==============================================================================
--- trunk/lib/engine/audiooutput/skel/audiooutput-core.h (original)
+++ trunk/lib/engine/audiooutput/skel/audiooutput-core.h Mon Jun 2 15:05:33 2008
@@ -371,6 +371,7 @@
float average_level;
bool calculate_average;
+ bool yield;
};
/**
* @}
Modified: trunk/src/gui/main.cpp
==============================================================================
--- trunk/src/gui/main.cpp (original)
+++ trunk/src/gui/main.cpp Mon Jun 2 15:05:33 2008
@@ -4254,7 +4254,7 @@
{
{
"debug", 'd', 0, G_OPTION_ARG_INT, &debug_level,
- N_("Prints debug messages in the console (level between 1 and 4)"),
+ N_("Prints debug messages in the console (level between 1 and 5)"),
NULL
},
{
@@ -4311,7 +4311,7 @@
static GnomeMeeting instance;
if (debug_level != 0)
- PTrace::Initialise (PMAX (PMIN (4, debug_level), 0), NULL,
+ PTrace::Initialise (PMAX (PMIN (5, debug_level), 0), NULL,
PTrace::Timestamp | PTrace::Thread
| PTrace::Blocks | PTrace::DateAndTime);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]