[evince/wip/chpe/mr-329] libview: Do not draw invalid surface
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evince/wip/chpe/mr-329] libview: Do not draw invalid surface
- Date: Thu, 2 Dec 2021 21:19:01 +0000 (UTC)
commit aa32e67f100cdfbf218739cd6c6b66d0d90a1a2a
Author: Marek Kasik <mkasik redhat com>
Date: Wed May 12 16:01:27 2021 +0100
libview: Do not draw invalid surface
Fail the render job if the surface is in error state. This prevents
the failure of the render job leaking out to failing to render the
evince UI.
Based on a patch by Marek Kasik <mkasik redhat com>.
libview/ev-jobs.c | 23 +++++++++++++++++------
1 file changed, 17 insertions(+), 6 deletions(-)
---
diff --git a/libview/ev-jobs.c b/libview/ev-jobs.c
index e52e49c81..0795eb0d8 100644
--- a/libview/ev-jobs.c
+++ b/libview/ev-jobs.c
@@ -636,16 +636,27 @@ ev_job_render_run (EvJob *job)
job_render->surface = ev_document_render (job->document, rc);
- if (job_render->surface == NULL) {
+ if (job_render->surface == NULL ||
+ cairo_surface_status (job_render->surface) != CAIRO_STATUS_SUCCESS) {
ev_document_fc_mutex_unlock ();
ev_document_doc_mutex_unlock ();
g_object_unref (rc);
- ev_job_failed (job,
- EV_DOCUMENT_ERROR,
- EV_DOCUMENT_ERROR_INVALID,
- _("Failed to render page %d"),
- job_render->page);
+ if (job_render->surface != NULL) {
+ cairo_status_t status = cairo_surface_status (job_render->surface);
+ ev_job_failed (job,
+ EV_DOCUMENT_ERROR,
+ EV_DOCUMENT_ERROR_INVALID,
+ _("Failed to render page %d: %s"),
+ job_render->page,
+ cairo_status_to_string (status));
+ } else {
+ ev_job_failed (job,
+ EV_DOCUMENT_ERROR,
+ EV_DOCUMENT_ERROR_INVALID,
+ _("Failed to render page %d"),
+ job_render->page);
+ }
return FALSE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]