aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2014-02-20 15:21:11 -0600
committerTed Gould <ted@gould.cx>2014-02-20 15:21:11 -0600
commitb12215e8f5872e02c23fdceaa51415f1bd8dd058 (patch)
tree1b2a10d7a9d3a6386e224283e4562cc4c542cf9e
parente48b26bcffdf75b4454611f88018c1a783c2e9c9 (diff)
downloadayatana-indicator-application-b12215e8f5872e02c23fdceaa51415f1bd8dd058.tar.gz
ayatana-indicator-application-b12215e8f5872e02c23fdceaa51415f1bd8dd058.tar.bz2
ayatana-indicator-application-b12215e8f5872e02c23fdceaa51415f1bd8dd058.zip
Own the name
-rw-r--r--src/application-service.c45
1 files changed, 40 insertions, 5 deletions
diff --git a/src/application-service.c b/src/application-service.c
index 21e3f9d..7024e91 100644
--- a/src/application-service.c
+++ b/src/application-service.c
@@ -21,7 +21,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "libindicator/indicator-service.h"
+#include <gio/gio.h>
#include "application-service-appstore.h"
#include "application-service-watcher.h"
#include "dbus-shared.h"
@@ -33,22 +33,57 @@ static ApplicationServiceAppstore * appstore = NULL;
/* Interface for applications */
static ApplicationServiceWatcher * watcher = NULL;
-/* Builds up the core objects and puts us spinning into
- a main loop. */
-int
-main (int argc, char ** argv)
+/* Make sure we can set up all our objects before we get the name */
+static void
+bus_acquired (GDBusConnection * con, const gchar * name, gpointer user_data)
{
+ g_debug("Bus Acquired, building objects");
+
/* Building our app store */
appstore = application_service_appstore_new();
/* Adding a watcher for the Apps coming up */
watcher = application_service_watcher_new(appstore);
+}
+
+/* Nice to know, but we're not doing anything special */
+static void
+name_acquired (GDBusConnection * con, const gchar * name, gpointer user_data)
+{
+ g_debug("Name Acquired");
+}
+
+/* Shouldn't happen under normal usage */
+static void
+name_lost (GDBusConnection * con, const gchar * name, gpointer user_data)
+{
+ g_warning("Name Lost");
+ g_main_loop_quit(mainloop);
+}
+
+/* Builds up the core objects and puts us spinning into
+ a main loop. */
+int
+main (int argc, char ** argv)
+{
+ guint nameownership = g_bus_own_name(G_BUS_TYPE_SESSION,
+ INDICATOR_APPLICATION_DBUS_ADDR,
+ G_BUS_NAME_OWNER_FLAGS_NONE,
+ bus_acquired,
+ name_acquired,
+ name_lost,
+ NULL, NULL);
/* Building and executing our main loop */
mainloop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(mainloop);
+ g_debug("Finishing Main Loop");
+
+ g_bus_unown_name(nameownership);
+
/* Unref'ing all the objects */
+ g_main_loop_unref(mainloop);
g_object_unref(G_OBJECT(watcher));
g_object_unref(G_OBJECT(appstore));