summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColin Guthrie <cguthrie@mandriva.org>2010-04-20 19:06:01 +0100
committerColin Guthrie <cguthrie@mandriva.org>2010-04-20 19:11:14 +0100
commitcbcdd0f49c0cdf570d2a4c90f8daf5f229e54bec (patch)
tree1f508c86fde8d28174d0fa3f3874b1d6cc4e26a0
parent8959744e60d9561c2f824a7ce0b315d354e11718 (diff)
Split out the creation of the PA context a little.
This is a precursor to adding reconnection support.
-rw-r--r--src/pavucontrol.cc44
1 files changed, 26 insertions, 18 deletions
diff --git a/src/pavucontrol.cc b/src/pavucontrol.cc
index 867e523..f65298a 100644
--- a/src/pavucontrol.cc
+++ b/src/pavucontrol.cc
@@ -42,7 +42,8 @@
#include "rolewidget.h"
#include "mainwindow.h"
-static pa_context *context = NULL;
+static pa_context* context = NULL;
+static pa_mainloop_api* api = NULL;
static int n_outstanding = 0;
void show_error(const char *txt) {
@@ -386,6 +387,9 @@ void context_state_callback(pa_context *c, void *userdata) {
case PA_CONTEXT_READY: {
pa_operation *o;
+ /* Create event widget immediately so it's first in the list */
+ w->createEventRoleWidget();
+
pa_context_set_subscribe_callback(c, subscribe_cb, w);
if (!(o = pa_context_subscribe(c, (pa_subscription_mask_t)
@@ -493,6 +497,25 @@ void context_state_callback(pa_context *c, void *userdata) {
}
}
+static pa_context* create_context(MainWindow* w) {
+ g_assert(api);
+
+ pa_proplist *proplist = pa_proplist_new();
+ pa_proplist_sets(proplist, PA_PROP_APPLICATION_NAME, _("PulseAudio Volume Control"));
+ pa_proplist_sets(proplist, PA_PROP_APPLICATION_ID, "org.PulseAudio.pavucontrol");
+ pa_proplist_sets(proplist, PA_PROP_APPLICATION_ICON_NAME, "audio-card");
+ pa_proplist_sets(proplist, PA_PROP_APPLICATION_VERSION, PACKAGE_VERSION);
+
+ pa_context* c = pa_context_new_with_proplist(api, NULL, proplist);
+ g_assert(c);
+
+ pa_proplist_free(proplist);
+
+ pa_context_set_state_callback(c, context_state_callback, w);
+
+ return c;
+}
+
pa_context* get_context(void) {
return context;
}
@@ -512,27 +535,12 @@ int main(int argc, char *argv[]) {
MainWindow* mainWindow = MainWindow::create();
- /* Create event widget immediately so it's first in the list */
- mainWindow->createEventRoleWidget();
-
-
pa_glib_mainloop *m = pa_glib_mainloop_new(g_main_context_default());
g_assert(m);
- pa_mainloop_api *api = pa_glib_mainloop_get_api(m);
+ api = pa_glib_mainloop_get_api(m);
g_assert(api);
- pa_proplist *proplist = pa_proplist_new();
- pa_proplist_sets(proplist, PA_PROP_APPLICATION_NAME, _("PulseAudio Volume Control"));
- pa_proplist_sets(proplist, PA_PROP_APPLICATION_ID, "org.PulseAudio.pavucontrol");
- pa_proplist_sets(proplist, PA_PROP_APPLICATION_ICON_NAME, "audio-card");
- pa_proplist_sets(proplist, PA_PROP_APPLICATION_VERSION, PACKAGE_VERSION);
-
- context = pa_context_new_with_proplist(api, NULL, proplist);
- g_assert(context);
-
- pa_proplist_free(proplist);
-
- pa_context_set_state_callback(context, context_state_callback, mainWindow);
+ context = create_context(mainWindow);
if (pa_context_connect(context, NULL, (pa_context_flags_t) 0, NULL) < 0)
goto finish;