diff options
author | Carlos Garcia Campos <carlosgc@gnome.org> | 2006-12-18 15:26:40 (GMT) |
---|---|---|
committer | Carlos Garcia Campos <carlosgc@src.gnome.org> | 2006-12-18 15:26:40 (GMT) |
commit | 87db0f592b3ffee3043b4e701be8c8c0132e3520 (patch) | |
tree | 7776e905af1f99287ca9a13e12ff55986758bdc2 /shell/ev-jobs.c | |
parent | 67f80b85d70a6d577e36c9578b854003a7d910ca (diff) |
Use an specific lock for FontConfig. Hopefully it fixes some crashes
2006-12-18 Carlos Garcia Campos <carlosgc@gnome.org>
* backend/ev-document.[ch]: (ev_document_get_fc_mutex),
(ev_document_fc_mutex_lock), (ev_document_fc_mutex_unlock):
* pdf/ev-poppler.cc: (make_thumbnail_for_size):
* shell/ev-jobs.c: (ev_job_render_run), (ev_job_fonts_run):
* shell/ev-view.c: (draw_loading_text):
* shell/ev-window.c: (ev_window_cmd_file_properties):
Use an specific lock for FontConfig. Hopefully it fixes some crashes
related to using FontConfig from different threads.
Diffstat (limited to 'shell/ev-jobs.c')
-rw-r--r-- | shell/ev-jobs.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/shell/ev-jobs.c b/shell/ev-jobs.c index 3657f65..e54812c 100644 --- a/shell/ev-jobs.c +++ b/shell/ev-jobs.c @@ -316,6 +316,8 @@ ev_job_render_run (EvJobRender *job) g_signal_connect (EV_JOB (job)->document, "render_finished", G_CALLBACK (render_finished_cb), job); } else { + ev_document_fc_mutex_lock (); + job->pixbuf = ev_document_render_pixbuf (EV_JOB (job)->document, job->rc); if (job->include_links && EV_IS_DOCUMENT_LINKS (EV_JOB (job)->document)) job->link_mapping = @@ -337,7 +339,8 @@ ev_job_render_run (EvJobRender *job) job->rc, &(job->selection_points)); } - + + ev_document_fc_mutex_unlock (); EV_JOB (job)->finished = TRUE; } @@ -406,7 +409,9 @@ ev_job_fonts_run (EvJobFonts *job) ev_document_doc_mutex_lock (); fonts = EV_DOCUMENT_FONTS (EV_JOB (job)->document); + ev_document_fc_mutex_lock (); job->scan_completed = !ev_document_fonts_scan (fonts, 20); + ev_document_fc_mutex_unlock (); EV_JOB (job)->finished = TRUE; |