#include #include "session.h" std::string Session::m_last_name; Session::Session() { GError *error = NULL; m_connection = dbus_g_bus_get(DBUS_BUS_SESSION, &error); m_proxy = NULL; if (m_connection == NULL) return; m_proxy = dbus_g_proxy_new_for_name( m_connection, "org.jackaudio.sessionmanager", "/org/jackaudio/sessionmanager", "org.jackaudio.sessionmanager"); if (m_proxy == NULL) { g_object_unref(m_connection); m_connection = NULL; } } Session::~Session() { if (m_proxy) g_object_unref(m_proxy); } int Session::Save() { return SaveAs(m_last_name); } int Session::SaveAs(std::string name) { GError *error = NULL; int ret; if (m_proxy == NULL) return -1; dbus_g_proxy_call(m_proxy, "save_as", &error, G_TYPE_STRING, name.c_str(), G_TYPE_INVALID, G_TYPE_INT, &ret, G_TYPE_INVALID); m_last_name = name; return ret; } int Session::Load(std::string name) { GError *error = NULL; int ret; if (m_proxy == NULL) return -1; dbus_g_proxy_call(m_proxy, "load", &error, G_TYPE_STRING, name.c_str(), G_TYPE_INVALID, G_TYPE_INT, &ret, G_TYPE_INVALID); m_last_name = name; return ret; } std::list Session::List() { GError *error = NULL; char **session_list = NULL; char **session_list_ptr; std::list list; if (m_proxy == NULL) return list; dbus_g_proxy_call(m_proxy, "list", &error, G_TYPE_INVALID, G_TYPE_STRV, &session_list, G_TYPE_INVALID); if (session_list == NULL) return list; for (session_list_ptr = session_list; *session_list_ptr; session_list_ptr++) { list.push_back(*session_list_ptr); } g_strfreev(session_list); return list; }