diff options
author | Carlos Garcia Campos <carlosgc@gnome.org> | 2007-06-13 08:54:53 (GMT) |
---|---|---|
committer | Carlos Garcia Campos <carlosgc@src.gnome.org> | 2007-06-13 08:54:53 (GMT) |
commit | 217797d63b2d3b1c9a7a0511af1bbf3d99f0d482 (patch) | |
tree | 7984c3b1bb57f723eb57c81f6ab4121b55e69510 /shell/ev-jobs.c | |
parent | 83005d76d55eea57772ea2dc7224e45f856725be (diff) |
Use cairo image surfaces instead of GDK pixbufs for drawing pages and
2007-06-13 Carlos Garcia Campos <carlosgc@gnome.org>
* backend/dvi/dvi-document.c: (dvi_document_render),
(dvi_document_render_pixbuf), (dvi_document_document_iface_init):
* backend/impress/impress-document.c:
(imp_render_get_from_drawable), (impress_document_render_pixbuf),
(impress_document_render), (impress_document_document_iface_init),
(impress_document_thumbnails_get_thumbnail):
* backend/djvu/djvu-document-private.h:
* backend/djvu/djvu-document.c: (djvu_document_render),
(djvu_document_finalize), (djvu_document_document_iface_init),
(djvu_document_thumbnails_get_thumbnail), (djvu_document_init):
* backend/tiff/tiff-document.c: (tiff_document_render),
(tiff_document_render_pixbuf),
(tiff_document_document_iface_init):
* backend/pdf/ev-poppler.cc: (pdf_document_render),
(pdf_document_render_pixbuf), (pdf_document_document_iface_init),
(pdf_selection_render_selection):
* backend/comics/comics-document.c:
(comics_document_render_pixbuf), (comics_document_render),
(comics_document_document_iface_init):
* backend/pixbuf/pixbuf-document.c: (pixbuf_document_render),
(pixbuf_document_document_iface_init):
* libdocument/ev-document-misc.[ch]:
(ev_document_misc_surface_from_pixbuf),
(ev_document_misc_surface_rotate_and_scale):
* libdocument/ev-document.[ch]: (ev_document_render):
* libdocument/ev-selection.[ch]: (ev_selection_render_selection):
* shell/ev-pixbuf-cache.[ch]: (dispose_cache_job_info),
(move_one_job), (copy_job_to_job_info), (add_job_if_needed),
(ev_pixbuf_cache_get_surface), (new_selection_surface_needed),
(clear_selection_if_needed), (ev_pixbuf_cache_style_changed),
(ev_pixbuf_cache_get_selection_surface), (clear_job_selection):
* shell/ev-jobs.[ch]: (ev_job_render_dispose),
(render_finished_cb), (ev_job_render_run):
* shell/ev-view.c: (draw_loading_text), (draw_one_page),
(merge_selection_region):
Use cairo image surfaces instead of GDK pixbufs for drawing pages
and selections.
svn path=/trunk/; revision=2499
Diffstat (limited to 'shell/ev-jobs.c')
-rw-r--r-- | shell/ev-jobs.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/shell/ev-jobs.c b/shell/ev-jobs.c index 6ad4dfc..d9cdac8 100644 --- a/shell/ev-jobs.c +++ b/shell/ev-jobs.c @@ -4,6 +4,7 @@ #include "ev-document-links.h" #include "ev-document-images.h" #include "ev-document-factory.h" +#include "ev-document-misc.h" #include "ev-file-helpers.h" #include "ev-document-fonts.h" #include "ev-selection.h" @@ -120,9 +121,9 @@ ev_job_render_dispose (GObject *object) job = EV_JOB_RENDER (object); - if (job->pixbuf) { - g_object_unref (job->pixbuf); - job->pixbuf = NULL; + if (job->surface) { + cairo_surface_destroy (job->surface); + job->surface = NULL; } if (job->rc) { @@ -131,7 +132,7 @@ ev_job_render_dispose (GObject *object) } if (job->selection) { - g_object_unref (job->selection); + cairo_surface_destroy (job->selection); job->selection = NULL; } @@ -299,13 +300,16 @@ ev_job_render_new (EvDocument *document, } static void -render_finished_cb (EvDocument *document, GdkPixbuf *pixbuf, EvJobRender *job) +render_finished_cb (EvDocument *document, + GdkPixbuf *pixbuf, + EvJobRender *job) { g_signal_handlers_disconnect_by_func (EV_JOB (job)->document, render_finished_cb, job); + /* FIXME: ps backend should be ported to cairo */ + job->surface = ev_document_misc_surface_from_pixbuf (pixbuf); EV_JOB (job)->finished = TRUE; - job->pixbuf = g_object_ref (pixbuf); ev_job_finished (EV_JOB (job)); } @@ -325,7 +329,7 @@ ev_job_render_run (EvJobRender *job) } else { ev_document_fc_mutex_lock (); - job->pixbuf = ev_document_render_pixbuf (EV_JOB (job)->document, job->rc); + job->surface = ev_document_render (EV_JOB (job)->document, job->rc); if (job->include_links && EV_IS_DOCUMENT_LINKS (EV_JOB (job)->document)) job->link_mapping = ev_document_links_get_links (EV_DOCUMENT_LINKS (EV_JOB (job)->document), |