static void
portal_job_complete (GtkPrintJob  *job,
                     gpointer      data,
                     const GError *error)
{
  GtkPrintOperation *op = data;
  GtkPrintOperationPortal *op_portal = op->priv->platform_data;
  GtkPrintSettings *settings;
  const char *uri;
  char *filename;
  int fd, idx;
  GVariantBuilder opt_builder;
  GUnixFDList *fd_list;

  if (error != NULL && op->priv->error == NULL)
    {
      g_warning ("Print job failed: %s", error->message);
      op->priv->error = g_error_copy (error);
      return;
    }

  op_portal->file_written = TRUE;

  settings = gtk_print_job_get_settings (job);
  uri = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_OUTPUT_URI);
  filename = g_filename_from_uri (uri, NULL, NULL);

  fd = open (filename, O_RDONLY|O_CLOEXEC);
  fd_list = g_unix_fd_list_new ();
  idx = g_unix_fd_list_append (fd_list, fd, NULL);
  close (fd);

  g_free (filename);

  g_variant_builder_init (&opt_builder, G_VARIANT_TYPE_VARDICT);
  g_variant_builder_add (&opt_builder, "{sv}",  "token", g_variant_new_uint32 (op_portal->token));

  g_dbus_proxy_call_with_unix_fd_list (op_portal->proxy,
                                       "Print",
                                       g_variant_new ("(ssh@a{sv})",
                                                      "", /* window */
                                                      _("Print"), /* title */
                                                      idx,
                                                      g_variant_builder_end (&opt_builder)),
                                       G_DBUS_CALL_FLAGS_NONE,
                                       -1,
                                       fd_list,
                                       NULL,
                                       print_file_done,
                                       op);
  g_object_unref (fd_list);
}
static void
take_inhibitor (NMSleepMonitor *self)
{
    g_assert (self->inhibit_fd == -1);

    nm_log_dbg (LOGD_SUSPEND, "Taking systemd sleep inhibitor");
    g_dbus_proxy_call_with_unix_fd_list (self->sd_proxy,
                                         "Inhibit",
                                         g_variant_new ("(ssss)",
                                                 "sleep",
                                                 "NetworkManager",
                                                 _("NetworkManager needs to turn off networks"),
                                                 "delay"),
                                         0,
                                         G_MAXINT,
                                         NULL,
                                         NULL,
                                         inhibit_done,
                                         self);
}
Exemple #3
0
static void take_inhibit(Context *context)
{
    if(context->state.lid_inhibit_fd >= 0)
    {
        return;
    }
    else
    {
        g_dbus_proxy_call_with_unix_fd_list(context->proxy,
                                            "Inhibit",
                                            g_variant_new("(ssss)",
                                                          "handle-lid-switch",
                                                          "monitord",
                                                          "support clamshell.",
                                                          "block"),
                                            G_DBUS_CALL_FLAGS_NONE,
                                            -1,
                                            NULL,
                                            NULL,
                                            &take_inhibit_cb,
                                            context);
    }
}