diff options
Diffstat (limited to 'qt/integrator.cpp')
| -rw-r--r-- | qt/integrator.cpp | 44 | 
1 files changed, 39 insertions, 5 deletions
diff --git a/qt/integrator.cpp b/qt/integrator.cpp index ca793a0a..4d42a76f 100644 --- a/qt/integrator.cpp +++ b/qt/integrator.cpp @@ -92,6 +92,13 @@ void dbusWakeupMain( void* )  {  } +void dbusNewConnection( DBusServer     *server, +                        DBusConnection *new_connection, +                        void           *data ) +{ +  Integrator *itg = static_cast<Integrator*>( data ); +  itg->handleConnection( new_connection ); +}  /////////////////////////////////////////////////////////////  Timeout::Timeout( QObject *parent, DBusTimeout *t ) @@ -112,26 +119,47 @@ void Timeout::start()    m_timer->start( dbus_timeout_get_interval( m_timeout ) );  } -Integrator::Integrator( Connection *parent ) -  : QObject( parent ), m_parent( parent ) +Integrator::Integrator( DBusConnection *conn, QObject *parent ) +  : QObject( parent ), m_connection( conn )  {    m_timeouts.setAutoDelete( true ); -  dbus_connection_set_watch_functions( m_parent->connection(), +  dbus_connection_set_watch_functions( m_connection,                                         dbusAddWatch,                                         dbusRemoveWatch,                                         dbusToggleWatch,                                         this, 0 ); -  dbus_connection_set_timeout_functions( m_parent->connection(), +  dbus_connection_set_timeout_functions( m_connection,                                           dbusAddTimeout,                                           dbusRemoveTimeout,                                           dbusToggleTimeout,                                           this, 0 ); -  dbus_connection_set_wakeup_main_function( m_parent->connection(), +  dbus_connection_set_wakeup_main_function( m_connection,  					    dbusWakeupMain,  					    this, 0 );  } +Integrator::Integrator( DBusServer *server, QObject *parent ) +  : QObject( parent ), m_server( server ) +{ +  m_connection = reinterpret_cast<DBusConnection*>( m_server ); +  m_timeouts.setAutoDelete( true ); + +  dbus_server_set_watch_functions( m_server, +                                   dbusAddWatch, +                                   dbusRemoveWatch, +                                   dbusToggleWatch, +                                   this, 0 ); +  dbus_server_set_timeout_functions( m_server, +                                     dbusAddTimeout, +                                     dbusRemoveTimeout, +                                     dbusToggleTimeout, +                                     this, 0 ); +  dbus_server_set_new_connection_function( m_server, +                                           dbusNewConnection, +                                           this,  0 ); +} +  void Integrator::slotRead( int fd )  {    Q_UNUSED( fd ); @@ -199,6 +227,12 @@ void Integrator::removeTimeout( DBusTimeout *timeout )    m_timeouts.remove( timeout );  } +void Integrator::handleConnection( DBusConnection *c ) +{ +  Connection *con = new Connection( c, this ); +  emit newConnection( con ); +} +  }//end namespace Internal  }//end namespace DBusQt  | 
