示例#1
0
void viewerappapi_init(ViewerAppAPI *server)
{
	// Connect to the default DBUS, register our service/API.
	LL_DEBUGS("DBUS")<< "Debug DBUS2"<< LL_ENDL;
	if (!dbus_server_init)
	{
		LL_DEBUGS("DBUS")<< "Debug DBUS3"<< LL_ENDL;
		GError *error = NULL;
		
		server->connection = dbus_g_bus_get(DBUS_BUS_SESSION, &error);
		LL_DEBUGS("DBUS")<< "Debug DBUS4"<< LL_ENDL;
		if (server->connection)
		{
			dbus_g_object_type_install_info(viewerappapi_get_type(), &dbus_glib_viewerapp_object_info);
			LL_DEBUGS("DBUS")<< "Debug DBUS5"<< LL_ENDL;			
			dbus_g_connection_register_g_object(server->connection, VIEWERAPI_PATH, G_OBJECT(server));
			LL_DEBUGS("DBUS")<< "Debug DBUS6"<< LL_ENDL;

			DBusGProxy *serverproxy = dbus_g_proxy_new_for_name(server->connection, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS);
			LL_DEBUGS("DBUS")<< "Debug DBUS7"<< LL_ENDL;

			guint request_name_ret_unused;
			// akin to org_freedesktop_DBus_request_name
			if (dbus_g_proxy_call(serverproxy, "RequestName", &error, G_TYPE_STRING, VIEWERAPI_SERVICE, G_TYPE_UINT, 0, G_TYPE_INVALID, G_TYPE_UINT, &request_name_ret_unused, G_TYPE_INVALID))
			{
				// total success.
				dbus_server_init = true;
				LL_DEBUGS("DBUS")<< "Debug DBUS8"<< LL_ENDL;
			}
			else 
			{
				llwarns << "Unable to register service name: " << error->message << llendl;
			}
	
			g_object_unref(serverproxy);
			LL_DEBUGS("DBUS")<< "Debug DBUS9"<< LL_ENDL;
		}
		else
		{
			g_warning("Unable to connect to dbus: %s", error->message);
		}

		if (error)
		{
			g_error_free(error);
			LL_DEBUGS("DBUS")<< "Debug DBUS10"<< LL_ENDL;
		}

	}
	else
		LL_DEBUGS("DBUS")<< "Debug DBUS11"<< LL_ENDL;

	LL_DEBUGS("DBUS")<< "Debug DBUS End"<< LL_ENDL;
}
示例#2
0
//virtual
bool LLAppViewerLinux::initSLURLHandler()
{
	if (gSavedSettings.getBOOL("DisableDBUS"))
		return false;

	g_type_init();
	LL_DEBUGS("DBUS")<< "Debug DBUS Start"<< LL_ENDL;

	//ViewerAppAPI *api_server = (ViewerAppAPI*)
	g_object_new(viewerappapi_get_type(), NULL);

	return true;
}
//virtual
bool LLAppViewerLinux::initSLURLHandler()
{
	if (!grab_dbus_syms(DBUSGLIB_DYLIB_DEFAULT_NAME))
	{
		return false; // failed
	}

	g_type_init();

	//ViewerAppAPI *api_server = (ViewerAppAPI*)
	g_object_new(viewerappapi_get_type(), NULL);

	return true;
}
示例#4
0
//virtual
bool LLAppViewerLinux::initSLURLHandler()
{
	if (gSavedSettings.getBOOL("DisableDBUS"))
		return false;

	g_type_init();
	LL_DEBUGS("DBUS")<< "Debug DBUS Start"<< LL_ENDL;

	//ViewerAppAPI *api_server = (ViewerAppAPI*)

	g_object_new(viewerappapi_get_type(), NULL, (void*)NULL);
///	also possible instead:
/*	GType obj_type = viewerappapi_get_type();
	g_object_newv(obj_type, 0, NULL);	//gpointer g_object_newv  (GType object_type,
						//				guint n_parameters,
						//				GParameter *parameters);

*/
	return true;
}