static gboolean inhibit (RBGPMPlugin *plugin) { GtkWindow *window; plugin->timeout_id = 0; gulong xid = 0; if (plugin->cookie != 0) { rb_debug ("Was going to inhibit gnome-session, but we already have done"); return FALSE; } if (create_dbus_proxy (plugin) == FALSE) { return FALSE; } rb_debug ("inhibiting"); g_object_ref (plugin); g_object_get (plugin->shell, "window", &window, NULL); xid = GDK_WINDOW_XWINDOW (gtk_widget_get_window (GTK_WIDGET (window))); dbus_g_proxy_begin_call (plugin->proxy, "Inhibit", (DBusGProxyCallNotify) inhibit_cb, plugin, NULL, G_TYPE_STRING, "rhythmbox", G_TYPE_UINT, xid, G_TYPE_STRING, _("Playing"), G_TYPE_UINT, 8, /* flags */ G_TYPE_INVALID); return FALSE; }
int main (int argc, char *argv[]) { DBusGConnection *bus; DBusGProxy *proxy; MMManager *manager; GError *err = NULL; guint id; mm_options_parse (argc, argv); g_type_init (); setup_signals (); if (!mm_options_debug ()) logging_setup (); g_message ("ModemManager (version " MM_DIST_VERSION ") starting..."); bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, &err); if (!bus) { g_warning ("Could not get the system bus. Make sure " "the message bus daemon is running! Message: %s", err->message); g_error_free (err); return -1; } proxy = create_dbus_proxy (bus); if (!proxy) return -1; manager = mm_manager_new (bus); g_idle_add (start_manager, manager); loop = g_main_loop_new (NULL, FALSE); id = g_signal_connect (proxy, "destroy", G_CALLBACK (destroy_cb), loop); g_main_loop_run (loop); g_signal_handler_disconnect (proxy, id); mm_manager_shutdown (manager); /* Wait for all modems to be removed */ while (mm_manager_num_modems (manager)) { GMainContext *ctx = g_main_loop_get_context (loop); g_main_context_iteration (ctx, FALSE); g_usleep (50); } g_object_unref (manager); g_object_unref (proxy); dbus_g_connection_unref (bus); logging_shutdown (); return 0; }
static gboolean uninhibit (RBGPMPlugin *plugin) { plugin->timeout_id = 0; if (plugin->cookie == 0) { rb_debug ("Was going to uninhibit session manager, but we haven't inhibited it"); return FALSE; } if (create_dbus_proxy (plugin) == FALSE) { return FALSE; } rb_debug ("uninhibiting; cookie = %u", plugin->cookie); g_object_ref (plugin); dbus_g_proxy_begin_call (plugin->proxy, "Uninhibit", (DBusGProxyCallNotify) uninhibit_cb, plugin, NULL, G_TYPE_UINT, plugin->cookie, G_TYPE_INVALID); return FALSE; }