X-Git-Url: http://git.maemo.org/git/?p=browser-switch;a=blobdiff_plain;f=main.c;h=2e19b84bcff28cbad281d6525bcbf4605077bdc4;hp=30361c866563a6fbe3f14429d1611224abadc419;hb=41f4b720bf39224fd9be93d3b92f2c1b894eead4;hpb=ec8b58af1b1cf22f34478faf476047e7ce996245 diff --git a/main.c b/main.c index 30361c8..2e19b84 100644 --- a/main.c +++ b/main.c @@ -49,7 +49,15 @@ static void read_config(int signalnum) { swb_config_load(&cfg); log_config(cfg.logging); +#ifdef FREMANTLE + /* continuous mode is required on Fremantle */ + ctx.continuous_mode = 1; + if (!cfg.continuous_mode) + log_msg("continuous_mode = 0 operation no longer supported, ignoring config setting\n"); +#else ctx.continuous_mode = cfg.continuous_mode; +#endif + free(ctx.other_browser_cmd); if (cfg.other_browser_cmd) { if (!(ctx.other_browser_cmd = strdup(cfg.other_browser_cmd))) { log_perror(errno, "Failed to set other_browser_cmd"); @@ -58,6 +66,9 @@ static void read_config(int signalnum) { } else ctx.other_browser_cmd = NULL; update_default_browser(&ctx, cfg.default_browser); +#ifdef FREMANTLE + ctx.autostart_microb = cfg.autostart_microb; +#endif log_msg("continuous_mode: %d\n", cfg.continuous_mode); log_msg("default_browser: '%s'\n", cfg.default_browser); @@ -71,6 +82,7 @@ static void read_config(int signalnum) { int main() { OssoBrowser *obj_osso_browser, *obj_osso_browser_req; + OssoBrowser *obj_osso_browser_sys, *obj_osso_browser_sys_req; GMainLoop *mainloop; GError *error = NULL; int reqname_result; @@ -133,21 +145,43 @@ int main() { error->message); return 1; } - if (reqname_result != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { + if (reqname_result != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { log_msg("Another browser-switchboard already running\n"); return 1; } + /* Get a connection to the D-Bus system bus */ + ctx.system_bus = dbus_g_bus_get(DBUS_BUS_SYSTEM, &error); + if (!ctx.system_bus) { + log_msg("Couldn't get a D-Bus system bus connection\n"); + return 1; + } + ctx.dbus_system_proxy = dbus_g_proxy_new_for_name(ctx.system_bus, + "org.freedesktop.DBus", "/org/freedesktop/DBus", + "org.freedesktop.DBus"); + if (!ctx.dbus_system_proxy) { + log_msg("Couldn't get an org.freedesktop.DBus proxy\n"); + return 1; + } + dbus_request_osso_browser_name(&ctx); /* Register ourselves to handle the osso_browser D-Bus methods */ obj_osso_browser = g_object_new(OSSO_BROWSER_TYPE, NULL); obj_osso_browser_req = g_object_new(OSSO_BROWSER_TYPE, NULL); + obj_osso_browser_sys = g_object_new(OSSO_BROWSER_TYPE, NULL); + obj_osso_browser_sys_req = g_object_new(OSSO_BROWSER_TYPE, NULL); dbus_g_connection_register_g_object(ctx.session_bus, "/com/nokia/osso_browser", G_OBJECT(obj_osso_browser)); dbus_g_connection_register_g_object(ctx.session_bus, "/com/nokia/osso_browser/request", G_OBJECT(obj_osso_browser_req)); + dbus_g_connection_register_g_object(ctx.system_bus, + "/com/nokia/osso_browser", + G_OBJECT(obj_osso_browser_sys)); + dbus_g_connection_register_g_object(ctx.system_bus, + "/com/nokia/osso_browser/request", + G_OBJECT(obj_osso_browser_sys_req)); mainloop = g_main_loop_new(NULL, FALSE); log_msg("Starting main loop\n");