Index: /branches/libffado-2.0/support/dbus/ffado-dbus-server.cpp
===================================================================
--- /branches/libffado-2.0/support/dbus/ffado-dbus-server.cpp (revision 1238)
+++ /branches/libffado-2.0/support/dbus/ffado-dbus-server.cpp (revision 1297)
@@ -333,7 +333,7 @@
delete postupdate_functor;
delete container;
+ delete m_deviceManager;
signal (SIGINT, SIG_DFL);
- delete m_deviceManager;
printMessage(" Bye.\n");
Index: /branches/libffado-2.0/support/dbus/controlserver.cpp
===================================================================
--- /branches/libffado-2.0/support/dbus/controlserver.cpp (revision 1201)
+++ /branches/libffado-2.0/support/dbus/controlserver.cpp (revision 1297)
@@ -44,5 +44,5 @@
// allocate a lock
if(parent == NULL) {
- m_UpdateLock = new Util::PosixMutex();
+ m_UpdateLock = new Util::PosixMutex("CTLSVEL");
} else {
m_UpdateLock = NULL;
@@ -129,5 +129,5 @@
// register an update signal handler
- m_updateFunctor = new MemberSignalFunctor< Container*,
+ m_updateFunctor = new MemberSignalFunctor1< Container*,
void (Container::*)(int) >
( this, &Container::updated, (int)Control::Container::eS_Updated );
@@ -148,4 +148,7 @@
debugOutput( DEBUG_LEVEL_VERBOSE, "Deleting Container on '%s'\n",
path().c_str() );
+
+ Destroyed(); //send dbus signal
+
if(m_updateFunctor) {
if(!m_Slave.remSignalHandler(m_updateFunctor)) {
@@ -201,4 +204,6 @@
bool something_changed = false;
debugOutput( DEBUG_LEVEL_VERBOSE, "Updating tree...\n");
+ // send a pre update signal
+ PreUpdate();
debugOutput( DEBUG_LEVEL_VERBOSE, "Add handlers for elements...\n");
// add handlers for the slaves that don't have one yet
@@ -272,4 +277,6 @@
Updated();
}
+ // send a post update signal
+ PostUpdate();
}
Index: /branches/libffado-2.0/support/dbus/control-interface.xml
===================================================================
--- /branches/libffado-2.0/support/dbus/control-interface.xml (revision 1173)
+++ /branches/libffado-2.0/support/dbus/control-interface.xml (revision 1297)
@@ -31,5 +31,8 @@
+
+
+
Index: /branches/libffado-2.0/support/dbus/controlserver.h
===================================================================
--- /branches/libffado-2.0/support/dbus/controlserver.h (revision 1173)
+++ /branches/libffado-2.0/support/dbus/controlserver.h (revision 1297)
@@ -45,9 +45,9 @@
template< typename CalleePtr, typename MemFunPtr >
-class MemberSignalFunctor
+class MemberSignalFunctor0
: public Control::SignalFunctor
{
public:
- MemberSignalFunctor( const CalleePtr& pCallee,
+ MemberSignalFunctor0( const CalleePtr& pCallee,
MemFunPtr pMemFun,
int pSignalId)
@@ -57,6 +57,34 @@
{}
- virtual ~MemberSignalFunctor()
+ virtual ~MemberSignalFunctor0()
{}
+
+ virtual void operator() ()
+ {
+ ( ( *m_pCallee ).*m_pMemFun )();
+ }
+ virtual void operator() (int) {}
+private:
+ CalleePtr m_pCallee;
+ MemFunPtr m_pMemFun;
+};
+
+template< typename CalleePtr, typename MemFunPtr >
+class MemberSignalFunctor1
+ : public Control::SignalFunctor
+{
+public:
+ MemberSignalFunctor1( const CalleePtr& pCallee,
+ MemFunPtr pMemFun,
+ int pSignalId)
+ : Control::SignalFunctor( pSignalId )
+ , m_pCallee( pCallee )
+ , m_pMemFun( pMemFun )
+ {}
+
+ virtual ~MemberSignalFunctor1()
+ {}
+
+ virtual void operator() () {}
virtual void operator() (int value)
@@ -119,4 +147,6 @@
void updated(int new_nb_elements);
+ void destroyed();
+
void setVerboseLevel( const DBus::Int32 &);
private: