-static void
-copy_job_page_and_selection_to_job_info (EvJobRender *job_render,
- CacheJobInfo *job_info,
- EvPixbufCache *pixbuf_cache)
-{
- if (job_info->rc == NULL) {
- job_info->rc = ev_render_context_new (job_render->ev_page,
- job_render->rotation,
- job_render->scale);
- } else {
- ev_render_context_set_page (job_info->rc, job_render->ev_page);
- ev_render_context_set_rotation (job_info->rc, job_render->rotation);
- ev_render_context_set_scale (job_info->rc, job_render->scale);
- }
-
- if (job_info->surface) {
- cairo_surface_destroy (job_info->surface);
- }
- job_info->surface = cairo_surface_reference (job_render->surface);
-
- job_info->points_set = FALSE;
- if (job_render->flags & EV_RENDER_INCLUDE_SELECTION) {
- if (job_info->selection) {
- cairo_surface_destroy (job_info->selection);
- job_info->selection = NULL;
- }
- if (job_info->selection_region) {
- gdk_region_destroy (job_info->selection_region);
- job_info->selection_region = NULL;
- }
-
- job_info->selection_points = job_render->selection_points;
- job_info->selection_region = gdk_region_copy (job_render->selection_region);
- job_info->selection = cairo_surface_reference (job_render->selection);
- g_assert (job_info->selection_points.x1 >= 0);
- job_info->points_set = TRUE;
- }
-
- if (job_info->job) {
- g_signal_handlers_disconnect_by_func (job_info->job,
- G_CALLBACK (job_page_ready_cb),
- pixbuf_cache);
- }
-
- job_info->page_ready = TRUE;
-}
-
-static void
-copy_job_to_job_info (EvJobRender *job_render,
- CacheJobInfo *job_info,
- EvPixbufCache *pixbuf_cache)
-{
- if (!job_info->page_ready) {
- g_signal_emit (pixbuf_cache, signals[JOB_FINISHED], 0, job_info->region);
- copy_job_page_and_selection_to_job_info (job_render,
- job_info,
- pixbuf_cache);
- }
-
- if (job_render->flags & EV_RENDER_INCLUDE_LINKS) {
- if (job_info->link_mapping)
- ev_mapping_list_free (job_info->link_mapping, g_object_unref);
- job_info->link_mapping = job_render->link_mapping;
- }
-
- if (job_render->flags & EV_RENDER_INCLUDE_IMAGES) {
- if (job_info->image_mapping)
- ev_mapping_list_free (job_info->image_mapping, g_object_unref);
- job_info->image_mapping = job_render->image_mapping;
- }
-
- if (job_render->flags & EV_RENDER_INCLUDE_FORMS) {
- if (job_info->form_field_mapping)
- ev_mapping_list_free (job_info->form_field_mapping, g_object_unref);
- job_info->form_field_mapping = job_render->form_field_mapping;
- }
-
- if (job_render->flags & EV_RENDER_INCLUDE_ANNOTS) {
- if (job_info->annots_mapping)
- ev_mapping_list_free (job_info->annots_mapping, g_object_unref);
- job_info->annots_mapping = job_render->annots_mapping;
- }
-
- if (job_render->flags & EV_RENDER_INCLUDE_TEXT) {
- if (job_info->text_mapping)
- gdk_region_destroy (job_info->text_mapping);
- job_info->text_mapping = job_render->text_mapping;
- }
-
- if (job_info->job) {
- g_signal_handlers_disconnect_by_func (job_info->job,
- G_CALLBACK (job_finished_cb),
- pixbuf_cache);
- ev_job_cancel (job_info->job);
- g_object_unref (job_info->job);
- job_info->job = NULL;
- }
-}
-