Update webpage
[browser-switch] / launcher.c
index 9c7893b..6a70c82 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * launcher.c -- functions for launching web browsers for browser-switchboard
  *
- * Copyright (C) 2009 Steven Luo
+ * Copyright (C) 2009-2010 Steven Luo
  * Derived from a Python implementation by Jason Simpson and Steven Luo
  *
  * This program is free software; you can redistribute it and/or
@@ -32,6 +32,7 @@
 
 #ifdef FREMANTLE
 #include <dbus/dbus.h>
+#include <signal.h>
 #endif
 
 #include "browser-switchboard.h"
@@ -190,7 +191,7 @@ void launch_microb(struct swb_context *ctx, char *uri) {
        printf("launch_microb with uri '%s'\n", uri);
 
        /* Launch browserd if it's not running */
-       status = system("pidof /usr/sbin/browserd > /dev/null");
+       status = system("pidof browserd > /dev/null");
        if (WIFEXITED(status) && WEXITSTATUS(status)) {
                kill_browserd = 1;
 #ifdef FREMANTLE
@@ -307,6 +308,7 @@ void launch_microb(struct swb_context *ctx, char *uri) {
                                exit(1);
                        }
                }
+               g_object_unref(g_proxy);
 
                /* Workaround: the browser process we started is going to want
                   to hang around forever, hogging the com.nokia.osso_browser
@@ -370,20 +372,10 @@ void launch_microb(struct swb_context *ctx, char *uri) {
                dbus_connection_close(raw_connection);
                dbus_connection_unref(raw_connection);
 
-               /* Tell browser UI to exit nicely */
-               printf("Closing MicroB\n");
-               if (!dbus_g_proxy_call(g_proxy, "exit_browser", &gerror,
-                                      G_TYPE_INVALID, G_TYPE_INVALID)) {
-                       /* We don't expect a reply; any other error indicates
-                          a problem */
-                       if (gerror->domain != DBUS_GERROR ||
-                           gerror->code != DBUS_GERROR_NO_REPLY) {
-                               printf("exit_browser failed: %s\n",
-                                      gerror->message);
-                               exit(1);
-                       }
-               }
-               g_object_unref(g_proxy);
+               /* Kill off browser UI
+                  XXX: Hope we don't cause data loss here! */
+               printf("Killing MicroB\n");
+               kill(pid, SIGTERM);
        } else {
                /* Child process */
                close_stdio();
@@ -419,7 +411,7 @@ void launch_microb(struct swb_context *ctx, char *uri) {
 
        /* Kill off browserd if we started it */
        if (kill_browserd)
-               system("kill `pidof /usr/sbin/browserd`");
+               system("kill `pidof browserd`");
 
        if (!ctx || !ctx->continuous_mode) 
                exit(0);