From e34209e5df13b4f3dd228af857cf0d303b21db48 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sun, 15 Aug 2004 00:03:01 +0000 Subject: Update to current polypaudio library git-svn-id: file:///home/lennart/svn/public/paman/trunk@6 cdefa82f-4ce1-0310-97f5-ab6066f37c3c --- paman.cc | 78 ++++++++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 47 insertions(+), 31 deletions(-) (limited to 'paman.cc') diff --git a/paman.cc b/paman.cc index 6fb0d88..0c1741d 100644 --- a/paman.cc +++ b/paman.cc @@ -16,30 +16,52 @@ ServerInfoManager *serverInfoManager = NULL; struct pa_context *context = NULL; struct pa_mainloop_api *mainloop_api = NULL; -static void context_complete_callback(struct pa_context *c, int success, void *userdata) { - g_assert(c && mainWindow && !serverInfoManager); - - if (!success) { - mainWindow->showFailure(pa_strerror(pa_context_errno(c))); - //pa_context_free(context); /* Mrprmfmfl! */ +static void context_state_callback(struct pa_context *c, void *userdata) { + g_assert(c && mainWindow); + + switch (pa_context_get_state(c)) { + case PA_CONTEXT_CONNECTING: + mainWindow->showSuccess("Connecting ..."); + mainWindow->connectButton->set_sensitive(false); + return; + + case PA_CONTEXT_AUTHORIZING: + mainWindow->showSuccess("Authorizing ..."); + return; + + case PA_CONTEXT_SETTING_NAME: + mainWindow->showSuccess("Setting name ..."); + return; + + case PA_CONTEXT_READY: + mainWindow->showSuccess("Ready"); + g_assert(!serverInfoManager); + serverInfoManager = new ServerInfoManager(*c); + return; + + case PA_CONTEXT_TERMINATED: + mainWindow->showSuccess("Disconnected"); + break; + + case PA_CONTEXT_FAILED: + default: + mainWindow->showFailure(pa_strerror(pa_context_errno(c))); + break; + + } + + if (context) { + pa_context_unref(context); context = NULL; - mainWindow->connectButton->set_sensitive(true); - return; } - mainWindow->showSuccess("Connected"); - mainWindow->connectButton->set_sensitive(false); - serverInfoManager = new ServerInfoManager(*c); -} - -static void die_callback(struct pa_context *c, void *userdata) { - mainWindow->clearAllData(); - mainWindow->showFailure(pa_strerror(pa_context_errno(c))); - delete serverInfoManager; - serverInfoManager = NULL; - //pa_context_free(contetx); /* Mrprmfmfl! */ - context = NULL; + if (serverInfoManager) { + delete serverInfoManager; + serverInfoManager = NULL; + } + mainWindow->connectButton->set_sensitive(true); + mainWindow->clearAllData(); } void create_connection() { @@ -47,22 +69,16 @@ void create_connection() { delete serverInfoManager; serverInfoManager = NULL; } + if (context) { - pa_context_free(context); + pa_context_unref(context); context = NULL; } - mainWindow->showSuccess("Connecting ..."); context = pa_context_new(mainloop_api, "Polypaudio Manager"); g_assert(context); - pa_context_set_die_callback(context, die_callback, NULL); - - if (pa_context_connect(context, NULL, context_complete_callback, NULL) < 0) { - context_complete_callback(context, 0, NULL); - return; - } - - mainWindow->connectButton->set_sensitive(false); + pa_context_set_state_callback(context, context_state_callback, NULL); + pa_context_connect(context, NULL); } int main(int argc, char *argv[]) { @@ -89,7 +105,7 @@ quit: delete serverInfoManager; if (context) - pa_context_free(context); + pa_context_unref(context); mainloop_api = NULL; if (mainWindow) -- cgit