From 48a1081ddce1d9dee32249b957f1af484b9f5392 Mon Sep 17 00:00:00 2001 From: jpbl <jpbl> Date: Wed, 31 Aug 2005 18:16:11 +0000 Subject: [PATCH] See ChangeLog --- CHANGES | 4 ++ ChangeLog | 10 ++++- configure.ac | 14 +++++-- src/Makefile.am | 6 +-- src/audio/Makefile.am | 2 +- src/audio/audiolayer.cpp | 14 ++++--- src/audio/audiolayer.h | 2 +- .../pacpp/source/portaudiocpp/Makefile.am | 2 +- src/gui/Makefile.am | 1 + src/gui/qt/Makefile.am | 2 +- src/gui/qt/configurationpanel.ui.h | 2 +- src/main.cpp | 16 +++++++- src/managerimpl.cpp | 39 +++++++++++++++---- src/user_cfg.h | 3 +- 14 files changed, 86 insertions(+), 31 deletions(-) diff --git a/CHANGES b/CHANGES index cdbf50b138..fce0b265e8 100644 --- a/CHANGES +++ b/CHANGES @@ -4,6 +4,10 @@ SFLphone (0.4.1-pre2) / now * Bug fix when trying to use more than 6 lines. * Now, we send a final response to reINVITEs (thanks to Mikael Magnusson) + * We can build in different build directories. + (thanks to Mikael Magnusson) + * We actualy check if portaudio and eXosip2 libs + are installed SFLphone (0.4.1-pre1) / 2005-08-11 * Use libeXosip2 diff --git a/ChangeLog b/ChangeLog index 3a7eecc9b0..4c3114ee33 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Jean-Philippe Barette-LaPierre (30 April 2005) version 0.4.1-pre1 +- Changed the order of initialization of modules, in order to + removed a race condition. +- We can build in different build directories. + (thanks to Mikael Magnusson) +- We actualy check if portaudio and eXosip2 libs + are installed. (thanks to Mikael Magnusson) + Jean-Philippe Barette-LaPierre (30 April 2005) version 0.4.1-pre1 - Now, we send a final response to reINVITEs (thanks to Mikael Magnusson) @@ -21,7 +29,7 @@ Laurielle LEA (29 July 2005) version 0.4 Laurielle LEA (27 July 2005) version 0.4 - Migrate from libeXoSIP 0.9.0 to libeXosip2-1.9.1-pre15 -(http://www.antisip.com/download/) + (http://www.antisip.com/download/) Laurielle LEA (21 July 2005) version 0.4 - Change README. diff --git a/configure.ac b/configure.ac index e582e9268d..8df70437c9 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ AC_INIT(acinclude.m4) AM_CONFIG_HEADER(config.h) dnl figure out the sflphone version -VERSION=`sed -ne 's/^#define VERSION "\(.*\)"/\1/p' src/global.h` +VERSION=`sed -ne 's/^#define VERSION "\(.*\)"/\1/p' ${srcdir}/src/global.h` AC_SUBST(VERSION) dnl get rid of release number @@ -81,7 +81,10 @@ SFLPHONE_LIBS="$SFLPHONE_LIBS $libosip2_LIBS" if test $ac_cv_header_eXosip2_eXosip_h = no; then AC_MSG_ERROR([*** missing eXosip2/eXosip.h. You need a working eXosip2 installation. See http://www.antisip.com/download/]) fi -libexosip2_LIBS="-leXosip2 " + +AC_CHECK_LIB([eXosip2], [eXosip_init],[libexosip2_LIBS="-leXosip2 "],[ + AC_MSG_ERROR([*** missing eXosip2 library. You need a working eXosip2 installation. See http://www.antisip.com/download/])]) + SFLPHONE_LIBS="$SFLPHONE_LIBS $libexosip2_LIBS" AC_SUBST(LIBQT) @@ -112,8 +115,11 @@ AM_CONDITIONAL(MAINTENER_CODE, test x$maintener = xyes) if test $ac_cv_header_portaudio_h = no; then AC_MSG_ERROR([*** missing portaudio.h. You need a working PortAudio installation. See http://www.portaudio.com]) fi -portaudio_LIBS="-lportaudio " -portaudio_CFLAGS="-DAUDIO_PORTAUDIO " +AC_CHECK_LIB([portaudio], [Pa_GetDeviceCount], [ + portaudio_LIBS="-lportaudio " + portaudio_CFLAGS="-DAUDIO_PORTAUDIO "], + [AC_MSG_ERROR([*** missing portaudio V19 library. You need a working PortAudio installation. See http://www.portaudio.com])]) + SFLPHONE_LIBS="$SFLPHONE_LIBS $portaudio_LIBS" SFLPHONE_CXXFLAGS=="$SFLPHONE_CXXFLAGS $portaudio_CFLAGS" AC_SUBST(portaudio_CFLAGS) diff --git a/src/Makefile.am b/src/Makefile.am index 7bff0dc923..6460e28926 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -44,9 +44,5 @@ sflphone_CXXFLAGS = -DPREFIX=\"$(prefix)\" -DPROGSHAREDIR=\"${datadir}/sflphone\ sflphone_LDFLAGS = $(QT_LDFLAGS) $(X_LDFLAGS) -static sflphone_LDADD = gui/libguiframework.la audio/libaudio.la ../stund/libstun.la ../utilspp/libutilspp.la -lpthread $(LIBQT) $(SFLPHONE_LIBS) KDE_CXXFLAGS = $(USE_EXCEPTIONS) -AM_CPPFLAGS = $(QT_INCLUDES) $(X_INCLUDES) -Iaudio/pacpp/include $(libccext2_CFLAGS) $(libccgnu2_CFLAGS) $(portaudio_CFLAGS) - - - - +AM_CPPFLAGS = $(QT_INCLUDES) $(X_INCLUDES) -I$(top_srcdir) -Igui/qt -I$(srcdir)/audio/pacpp/include $(libccext2_CFLAGS) $(libccgnu2_CFLAGS) $(portaudio_CFLAGS) diff --git a/src/audio/Makefile.am b/src/audio/Makefile.am index 8bd1b8fc92..7c82edb0a4 100644 --- a/src/audio/Makefile.am +++ b/src/audio/Makefile.am @@ -18,6 +18,6 @@ libaudio_la_SOURCES = \ tonegenerator.cpp tonegenerator.h \ ulaw.cpp ulaw.h -AM_CXXFLAGS = -Ipacpp/include/ $(libccext2_CFLAGS) $(libccrtp1_CFLAGS) $(portaudio_CFLAGS) +AM_CXXFLAGS = -I$(top_srcdir) -I$(srcdir)/pacpp/include/ $(libccext2_CFLAGS) $(libccrtp1_CFLAGS) $(portaudio_CFLAGS) libaudio_la_LIBADD = gsm/libgsm.la pacpp/source/portaudiocpp/libportaudiocpp.la diff --git a/src/audio/audiolayer.cpp b/src/audio/audiolayer.cpp index dbf1c5e796..be779b9ecf 100644 --- a/src/audio/audiolayer.cpp +++ b/src/audio/audiolayer.cpp @@ -35,7 +35,9 @@ AudioLayer::AudioLayer () , _mainSndRingBuffer(SIZEBUF) , _micRingBuffer(SIZEBUF) , _stream(NULL) -{} +{ + portaudio::System::initialize(); +} // Destructor AudioLayer::~AudioLayer (void) @@ -53,20 +55,20 @@ AudioLayer::closeStream (void) } void -AudioLayer::openDevice (int index) +AudioLayer::openDevice (int outputIndex, int inputIndex) { closeStream(); // Set up the parameters required to open a (Callback)Stream: portaudio::DirectionSpecificStreamParameters - outParams(portaudio::System::instance().deviceByIndex(index), + outParams(portaudio::System::instance().deviceByIndex(outputIndex), 2, portaudio::INT16, true, - portaudio::System::instance().deviceByIndex(index).defaultLowOutputLatency(), + portaudio::System::instance().deviceByIndex(outputIndex).defaultLowOutputLatency(), NULL); portaudio::DirectionSpecificStreamParameters - inParams(portaudio::System::instance().deviceByIndex(index), + inParams(portaudio::System::instance().deviceByIndex(inputIndex), 2, portaudio::INT16, true, - portaudio::System::instance().deviceByIndex(index).defaultLowInputLatency(), + portaudio::System::instance().deviceByIndex(inputIndex).defaultLowInputLatency(), NULL); portaudio::StreamParameters const params(inParams, outParams, diff --git a/src/audio/audiolayer.h b/src/audio/audiolayer.h index 165e455fa8..61931ba067 100644 --- a/src/audio/audiolayer.h +++ b/src/audio/audiolayer.h @@ -42,7 +42,7 @@ public: AudioLayer(); ~AudioLayer (void); - void openDevice (int); + void openDevice (int, int); void startStream (void); void stopStream (void); void sleep (int); diff --git a/src/audio/pacpp/source/portaudiocpp/Makefile.am b/src/audio/pacpp/source/portaudiocpp/Makefile.am index 2704bf039c..dbc2826645 100644 --- a/src/audio/pacpp/source/portaudiocpp/Makefile.am +++ b/src/audio/pacpp/source/portaudiocpp/Makefile.am @@ -19,4 +19,4 @@ libportaudiocpp_la_SOURCES = \ SystemHostApiIterator.cxx -AM_CXXFLAGS = -I../../include +AM_CXXFLAGS = -I$(srcdir)/../../include diff --git a/src/gui/Makefile.am b/src/gui/Makefile.am index 4c0431e0b1..303b8b1879 100644 --- a/src/gui/Makefile.am +++ b/src/gui/Makefile.am @@ -5,5 +5,6 @@ noinst_LTLIBRARIES = libguiframework.la libguiframework_la_SOURCES = \ guiframework.cpp guiframework.h +libguiframework_la_CPPFLAGS = -I$(top_srcdir) libguiframework_la_CXXFLAGS = $(libccext2_CFLAGS) libguiframework_la_LIBADD = qt/libsflphoneqt.la \ No newline at end of file diff --git a/src/gui/qt/Makefile.am b/src/gui/qt/Makefile.am index d6cd37a5cf..b448fe3a66 100644 --- a/src/gui/qt/Makefile.am +++ b/src/gui/qt/Makefile.am @@ -38,7 +38,7 @@ libsflphoneqt_la_CXXFLAGS = -DPREFIX=\"$(prefix)\" -DPROGSHAREDIR=\"${datadir}/s libsflphoneqt_la_LIBADD = $(portaudio_LIBS) KDE_CXXFLAGS = $(USE_EXCEPTIONS) -AM_CPPFLAGS = -I../../audio/pacpp/include/ $(QT_INCLUDES) $(X_INCLUDES) $(libccext2_CFLAGS) $(portaudio_CFLAGS) +AM_CPPFLAGS = -I$(top_srcdir) -I$(srcdir)/../../audio/pacpp/include/ $(QT_INCLUDES) $(X_INCLUDES) $(libccext2_CFLAGS) $(portaudio_CFLAGS) %.h: %.ui diff --git a/src/gui/qt/configurationpanel.ui.h b/src/gui/qt/configurationpanel.ui.h index 15bf76339d..0f377596d5 100644 --- a/src/gui/qt/configurationpanel.ui.h +++ b/src/gui/qt/configurationpanel.ui.h @@ -111,7 +111,7 @@ void ConfigurationPanel::init() ((QRadioButton*)stunButtonGroup->find(get_config_fields_int(SIGNALISATION, USE_STUN)))->setChecked(true); // For audio tab -((QRadioButton*)DriverChoice->find(get_config_fields_int(AUDIO, DRIVER_NAME)))->setChecked(true); +((QRadioButton*)DriverChoice->find(get_config_fields_int(AUDIO, OUTPUT_DRIVER_NAME)))->setChecked(true); codec1->setCurrentText(QString(get_config_fields_str(AUDIO, CODEC1))); codec2->setCurrentText(QString(get_config_fields_str(AUDIO, CODEC2))); diff --git a/src/main.cpp b/src/main.cpp index 72662bd115..93d944d9fe 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -44,18 +44,30 @@ main (int argc, char **argv) { { QApplication a(argc, argv); Manager::instance().initConfigFile(); + + try { + Manager::instance().init(); + } + catch (const exception &e) { + std::cerr << e.what() << std::endl; + } + catch (...) { + std::cerr << + "An unknown exception occured when initializing the system." << + std::endl; + } + GUI = new QtGUIMainWindow (0, 0 , Qt::WDestructiveClose | Qt::WStyle_Customize | Qt::WStyle_NoBorder); Manager::instance().setGui(GUI); - Manager::instance().init(); a.setMainWidget((QtGUIMainWindow*)GUI); exit_code = a.exec(); Manager::instance().terminate(); - } #endif + } return exit_code; } diff --git a/src/managerimpl.cpp b/src/managerimpl.cpp index de1a7a2675..7495b9f47f 100644 --- a/src/managerimpl.cpp +++ b/src/managerimpl.cpp @@ -74,6 +74,8 @@ ManagerImpl::ManagerImpl (void) _ringback = false; _exist = 0; _loaded = false; + _gui = NULL; + _audiodriverPA = NULL; } ManagerImpl::~ManagerImpl (void) @@ -465,9 +467,10 @@ ManagerImpl::unregisterVoIPLink (void) int ManagerImpl::quitApplication (void) { - // Quit VoIP-link library + // Quit VoIP-link library terminate(); Config::deleteTree(); + return 0; } int @@ -586,25 +589,45 @@ ManagerImpl::peerHungupCall (short id) void ManagerImpl::displayTextMessage (short id, const string& message) { - _gui->displayTextMessage(id, message); + if(_gui) { + _gui->displayTextMessage(id, message); + } + else { + std::cout << message << std::endl; + } } void ManagerImpl::displayErrorText (short id, const string& message) { - _gui->displayErrorText(id, message); + if(_gui) { + _gui->displayErrorText(id, message); + } + else { + std::cerr << message << std::endl; + } } void ManagerImpl::displayError (const string& error) { - _gui->displayStatus(error); + if(_gui) { + _gui->displayStatus(error); + } + else { + std::cerr << error << std::endl; + } } void ManagerImpl::displayStatus (const string& status) { - _gui->displayStatus(status); + if(_gui) { + _gui->displayStatus(status); + } + else { + std::cout<< status << std::endl; + } } int @@ -851,7 +874,8 @@ ManagerImpl::initConfigFile (void) fill_config_fields_str(SIGNALISATION, STUN_SERVER, DFT_STUN_SERVER); fill_config_fields_int(SIGNALISATION, USE_STUN, NO); - fill_config_fields_int(AUDIO, DRIVER_NAME, DFT_DRIVER); + fill_config_fields_int(AUDIO, OUTPUT_DRIVER_NAME, DFT_DRIVER); + fill_config_fields_int(AUDIO, INPUT_DRIVER_NAME, DFT_DRIVER); fill_config_fields_int(AUDIO, NB_CODEC, DFT_NB_CODEC); fill_config_fields_str(AUDIO, CODEC1, DFT_CODEC); fill_config_fields_str(AUDIO, CODEC2, DFT_CODEC); @@ -891,7 +915,8 @@ ManagerImpl::selectAudioDriver (void) #if defined(AUDIO_PORTAUDIO) _audiodriverPA = new AudioLayer(); - _audiodriverPA->openDevice(get_config_fields_int(AUDIO, DRIVER_NAME)); + _audiodriverPA->openDevice(get_config_fields_int(AUDIO, OUTPUT_DRIVER_NAME), + get_config_fields_int(AUDIO, INPUT_DRIVER_NAME)); #else # error You must define one AUDIO driver to use. #endif diff --git a/src/user_cfg.h b/src/user_cfg.h index c57c2a220b..a8cdc27ae8 100644 --- a/src/user_cfg.h +++ b/src/user_cfg.h @@ -63,7 +63,8 @@ #define SEND_DTMF_AS "DTMF.sendDTMFas" #define STUN_SERVER "STUN.STUNserver" #define USE_STUN "STUN.useStun" -#define DRIVER_NAME "Drivers.driverName" +#define OUTPUT_DRIVER_NAME "Drivers.outputDriverName" +#define INPUT_DRIVER_NAME "Drivers.inputDriverName" #define NB_CODEC "Codecs.nbCodec" #define CODEC1 "Codecs.codec1" #define CODEC2 "Codecs.codec2" -- GitLab