Fixed minor bug in watchdog routine.

Fixed memory leak in tone generator.
Can preserve module symbols (make modules MODSTRIP=).


git-svn-id: http://yate.null.ro/svn/yate/trunk@90 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
paulc 2004-10-21 23:11:46 +00:00
parent aa926e22b6
commit 85685ea30c
8 changed files with 29 additions and 15 deletions

View File

@ -385,9 +385,11 @@ fi
fi
MODULE_CFLAGS="-fno-exceptions -fno-check-new $RTTI_OPT -fPIC $HAVE_GCC_FORMAT_CHECK"
MODULE_LDFLAGS="-export-dynamic -shared -Wl,--retain-symbols-file,/dev/null"
MODULE_LDFLAGS="-export-dynamic -shared"
MODULE_SYMBOLS="-Wl,--retain-symbols-file,/dev/null"
AC_SUBST(MODULE_CFLAGS)
AC_SUBST(MODULE_LDFLAGS)
AC_SUBST(MODULE_SYMBOLS)
AC_CONFIG_FILES([yate.spec
yate.pc

View File

@ -198,7 +198,7 @@ int Engine::run()
{
Debug(DebugAll,"Engine::run()");
install(new EngineStatusHandler);
if (s_super_handle)
if (s_super_handle >= 0)
install(new EngineSuperHandler);
loadPlugins();
Debug(DebugInfo,"plugins.count() = %d",plugins.count());

View File

@ -163,7 +163,9 @@ Debugger::Debugger(const char *name, const char *format, ...)
va_start(va,format);
dbg_output(buf,format,va);
va_end(va);
out_mux.lock();
s_indent++;
out_mux.unlock();
}
else
m_name = 0;
@ -179,7 +181,9 @@ Debugger::Debugger(int level, const char *name, const char *format, ...)
va_start(va,format);
dbg_output(buf,format,va);
va_end(va);
out_mux.lock();
s_indent++;
out_mux.unlock();
}
else
m_name = 0;
@ -188,7 +192,9 @@ Debugger::Debugger(int level, const char *name, const char *format, ...)
Debugger::~Debugger()
{
if (m_name) {
out_mux.lock();
s_indent--;
out_mux.unlock();
if (s_debugging) {
char buf[64];
::snprintf(buf,sizeof(buf),"<<< %s",m_name);
@ -201,12 +207,16 @@ Debugger::~Debugger()
void Debugger::setOutput(void (*outFunc)(const char *))
{
out_mux.lock();
s_output = outFunc ? outFunc : dbg_stderr_func;
out_mux.unlock();
}
void Debugger::setIntOut(void (*outFunc)(const char *))
{
out_mux.lock();
s_intout = outFunc;
out_mux.unlock();
}
void Debugger::enableOutput(bool enable)

View File

@ -14,6 +14,7 @@ INCLUDES := -I@top_srcdir@
CFLAGS := -O2 @MODULE_CFLAGS@
LDFLAGS:= -L.. -lyate
MODFLAGS:= @MODULE_LDFLAGS@
MODSTRIP:= @MODULE_SYMBOLS@
INCFILES := @top_srcdir@/telengine.h @top_srcdir@/telephony.h @top_srcdir@/yateversn.h
SUBDIRS :=
@ -59,8 +60,8 @@ LOCALFLAGS =
LOCALLIBS =
COMPILE = $(CC) $(DEFS) $(DEBUG) $(INCLUDES) $(CFLAGS)
LINK = $(CC) $(LDFLAGS)
MODLINK = $(CC) $(MODFLAGS) $(LDFLAGS)
MODCOMP = $(COMPILE) $(MODFLAGS) $(LDFLAGS)
MODLINK = $(CC) $(MODFLAGS) $(MODSTRIP) $(LDFLAGS)
MODCOMP = $(COMPILE) $(MODFLAGS) $(MODSTRIP) $(LDFLAGS)
prefix = @prefix@
exec_prefix = @exec_prefix@

View File

@ -34,6 +34,7 @@ private:
static const Tone *getBlock(const String &tone);
String m_name;
const Tone *m_tone;
DataBlock m_data;
unsigned m_brate;
unsigned m_total;
unsigned long long m_time;
@ -94,7 +95,7 @@ static const Tone t_specdial[] = { { 7600, tone421hz }, { 400, 0 }, { 0, 0 } };
static const Tone t_ring[] = { { 8000, tone421hz }, { 32000, 0 }, { 0, 0 } };
ToneSource::ToneSource(const String &tone)
: m_name(tone), m_tone(0), m_brate(16000), m_total(0), m_time(0)
: m_name(tone), m_tone(0), m_data(0,480), m_brate(16000), m_total(0), m_time(0)
{
Debug(DebugAll,"ToneSource::ToneSource(\"%s\") [%p]",tone.c_str(),this);
m_tone = getBlock(tone);
@ -148,14 +149,13 @@ void ToneSource::run()
Debug(DebugAll,"ToneSource::run() [%p]",this);
unsigned long long tpos = Time::now();
m_time = tpos;
DataBlock data(0,480);
int samp = 0; // sample number
int dpos = 1; // position in data
const Tone *tone = m_tone;
int nsam = tone->nsamples;
while (m_tone) {
short *d = (short *) data.data();
for (unsigned int i = data.length()/2; i--; samp++,dpos++) {
short *d = (short *) m_data.data();
for (unsigned int i = m_data.length()/2; i--; samp++,dpos++) {
if (samp >= nsam) {
samp = 0;
const Tone *otone = tone;
@ -181,9 +181,9 @@ void ToneSource::run()
#endif
::usleep((unsigned long)dly);
}
Forward(data,data.length()/2);
m_total += data.length();
tpos += (data.length()*1000000ULL/m_brate);
Forward(m_data,m_data.length()/2);
m_total += m_data.length();
tpos += (m_data.length()*1000000ULL/m_brate);
};
m_time = Time::now() - m_time;
m_time = (m_total*1000000ULL + m_time/2) / m_time;

View File

@ -8,6 +8,7 @@ INCLUDES := -I@top_srcdir@
CFLAGS := -O0 @MODULE_CFLAGS@
LDFLAGS:= -L.. -lyate
MODFLAGS:= @MODULE_LDFLAGS@
MODSTRIP:= @MODULE_SYMBOLS@
PROGS = msgsniff.yate randcall.yate
LIBS =
@ -17,8 +18,8 @@ LOCALFLAGS =
LOCALLIBS =
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CFLAGS)
LINK = $(CC) $(LDFLAGS)
MODLINK = $(CC) $(MODFLAGS) $(LDFLAGS)
MODCOMP = $(COMPILE) $(MODFLAGS) $(LDFLAGS)
MODLINK = $(CC) $(MODFLAGS) $(MODSTRIP) $(LDFLAGS)
MODCOMP = $(COMPILE) $(MODFLAGS) $(MODSTRIP) $(LDFLAGS)
prefix = @prefix@
exec_prefix = @exec_prefix@

View File

@ -13,7 +13,7 @@ moddir="@libdir@/yate"
confdir="@sysconfdir@/yate"
s1="@MODULE_CFLAGS@"
s2="-I@includedir@/yate"
s3="@MODULE_LDFLAGS@"
s3="@MODULE_LDFLAGS@ @MODULE_SYMBOLS@"
s4="-lyate"
while [ "$#" != 0 ]; do

View File

@ -9,5 +9,5 @@ yate-config=yate-config
Name: Yate
Description: Yet Another Telephony Engine
Version: @PACKAGE_VERSION@
Libs: -L${libdir} -lyate @MODULE_LDFLAGS@
Libs: -L${libdir} -lyate @MODULE_LDFLAGS@ @MODULE_SYMBOLS@
Cflags: -I${includedir}/yate @MODULE_CFLAGS@