Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/ev-jobs.c
diff options
context:
space:
mode:
authorCarlos Garcia Campos <carlosgc@gnome.org>2008-08-06 17:35:22 (GMT)
committer Carlos Garcia Campos <carlosgc@src.gnome.org>2008-08-06 17:35:22 (GMT)
commitde132bfcabbb4c65a250e1756b59706cebcc96bb (patch)
tree9f626220c2d9eafde751afa5073e1b1fb15c56a3 /shell/ev-jobs.c
parentc327927f8c38b40fd1c6ee2805595925d155132e (diff)
Fix loading encrypted documents since I broke it with the jobs rework.
2008-08-06 Carlos Garcia Campos <carlosgc@gnome.org> * shell/ev-jobs.[ch]: (ev_job_load_dispose), (ev_job_load_run), (ev_job_load_set_password): * shell/ev-password.[ch]: (ev_password_dialog_get_password): * shell/ev-window.c: (password_dialog_response), (ev_window_load_job_cb): Fix loading encrypted documents since I broke it with the jobs rework. svn path=/trunk/; revision=3099
Diffstat (limited to 'shell/ev-jobs.c')
-rw-r--r--shell/ev-jobs.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/shell/ev-jobs.c b/shell/ev-jobs.c
index 7371dd1..dd8fb09 100644
--- a/shell/ev-jobs.c
+++ b/shell/ev-jobs.c
@@ -30,7 +30,7 @@
#include "ev-document-misc.h"
#include "ev-file-helpers.h"
#include "ev-document-fonts.h"
-#include "ev-async-renderer.h"
+#include "ev-document-security.h"
#include "ev-debug.h"
#include <errno.h>
@@ -716,6 +716,11 @@ ev_job_load_dispose (GObject *object)
job->uri = NULL;
}
+ if (job->password) {
+ g_free (job->password);
+ job->password = NULL;
+ }
+
if (job->dest) {
g_object_unref (job->dest);
job->dest = NULL;
@@ -740,11 +745,19 @@ ev_job_load_run (EvJob *job)
ev_document_fc_mutex_lock ();
- /* TODO: reuse the job!!! */
/* This job may already have a document even if the job didn't complete
because, e.g., a password is required - if so, just reload rather than
creating a new instance */
if (job->document) {
+ if (job_load->password) {
+ ev_document_security_set_password (EV_DOCUMENT_SECURITY (job->document),
+ job_load->password);
+ }
+
+ job->failed = FALSE;
+ job->finished = FALSE;
+ g_clear_error (&job->error);
+
ev_document_load (job->document,
job_load->uri,
&error);
@@ -805,6 +818,16 @@ ev_job_load_set_uri (EvJobLoad *job, const gchar *uri)
job->uri = g_strdup (uri);
}
+void
+ev_job_load_set_password (EvJobLoad *job, const gchar *password)
+{
+ ev_debug_message (DEBUG_JOBS, NULL);
+
+ if (job->password)
+ g_free (job->password);
+ job->password = password ? g_strdup (password) : NULL;
+}
+
/* EvJobSave */
static void
ev_job_save_init (EvJobSave *job)