Need help with dbus
dibo20 at wp.pl
dibo20 at wp.pl
Tue Jan 25 09:31:57 EST 2011
Hi,
I'm not familiar in C/C++ programming. I analyze C examples and
transform them to Free Pascal. Free Pascal have no dbus-glib bindings
yet, so I can't use this example:
http://developer.pidgin.im/wiki/DbusHowto#DBUSglibexample
I must use low level API. I found DBUS function
"dbus_connection_try_register_object_path" for asynchronously listening
pidgin signals. This works but only on my computer. When I send this
plugin to my friend, "message_handler" function is never called. I don't
know what is a reason of this (Free Pascal compiler, DBUS or Pidgin), so
I'm trying to write this same in pure C to confirm what is the cause. As
mentioned earlier, I'm not familiar in C and below example is compiling
but doesn't work. This is modified example of skype DBUS client. Can
anyone help me?
Regards
#include <iostream>
#define DBUS_API_SUBJECT_TO_CHANGE
#include <dbus/dbus.h>
#include <glib.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <dbus/dbus-glib-lowlevel.h>
DBusConnection *connection;
using namespace std;
static DBusHandlerResult notify_handler( DBusConnection *bus,
DBusMessage *msg, void *user_data )
{
fprintf( stderr, "notify_handler called\n");
return (DBusHandlerResult) TRUE;
}
int main()
{
DBusObjectPathVTable vtable;
GMainLoop *loop;
DBusError error;
fprintf( stderr, "Main func\n" );
dbus_error_init( &error );
connection = dbus_bus_get( DBUS_BUS_SESSION, &error );
if ( connection == NULL )
{
fprintf( stderr, "Failed to open connection to bus: %s\n",
error.message );
dbus_error_free( &error );
exit( 1 );
}
loop = g_main_loop_new( NULL, FALSE );
dbus_connection_setup_with_g_main( connection, NULL ); // set up
te DBus connection
vtable.message_function = notify_handler; // register
handler for incoming data on DBus
if (dbus_connection_register_object_path( connection,
"/im/pidgin/purple/PurpleObject", &vtable, 0 )==0)
{
fprintf( stderr, "Cant register object path\n");
}
g_main_loop_run( loop ); // the main loop
return 0;
}
More information about the Support
mailing list