1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/gfx/cairo/cairo_qt_a8_fallback.diff Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,68 @@ 1.4 +CAIRO_FORMAT_A8 not allowed for cairo-qt image backend 1.5 +diff --git a/gfx/cairo/cairo/src/cairo-qt-surface.cpp b/gfx/cairo/cairo/src/cairo-qt-surface.cpp 1.6 +--- a/gfx/cairo/cairo/src/cairo-qt-surface.cpp 1.7 ++++ b/gfx/cairo/cairo/src/cairo-qt-surface.cpp 1.8 +@@ -459,17 +459,17 @@ _cairo_qt_surface_finish (void *abstract 1.9 + { 1.10 + cairo_qt_surface_t *qs = (cairo_qt_surface_t *) abstract_surface; 1.11 + 1.12 + D(fprintf(stderr, "q[%p] finish\n", abstract_surface)); 1.13 + 1.14 + /* Only delete p if we created it */ 1.15 + if (qs->image || qs->pixmap) 1.16 + delete qs->p; 1.17 +- else 1.18 ++ else if (qs->p) 1.19 + qs->p->restore (); 1.20 + 1.21 + if (qs->image_equiv) 1.22 + cairo_surface_destroy (qs->image_equiv); 1.23 + 1.24 + _cairo_surface_clipper_reset (&qs->clipper); 1.25 + 1.26 + if (qs->image) 1.27 +@@ -736,17 +736,17 @@ _cairo_qt_surface_set_clip_region (cairo 1.28 + } 1.29 + 1.30 + static cairo_int_status_t 1.31 + _cairo_qt_surface_set_clip (cairo_qt_surface_t *qs, 1.32 + cairo_clip_t *clip) 1.33 + { 1.34 + cairo_int_status_t status; 1.35 + 1.36 +- D(fprintf(stderr, "q[%p] intersect_clip_path %s\n", abstract_surface, path ? "(path)" : "(clear)")); 1.37 ++ D(fprintf(stderr, "q[%p] intersect_clip_path %s\n", qs, clip ? "(path)" : "(clear)")); 1.38 + 1.39 + if (clip == NULL) { 1.40 + _cairo_surface_clipper_reset (&qs->clipper); 1.41 + // How the clip path is reset depends on whether we own p or not 1.42 + if (qs->pixmap || qs->image) { 1.43 + // we own p 1.44 + qs->p->setClipping (false); 1.45 + } else { 1.46 +@@ -1605,16 +1605,25 @@ cairo_qt_surface_create_with_qimage (cai 1.47 + 1.48 + _cairo_surface_init (&qs->base, 1.49 + &cairo_qt_surface_backend, 1.50 + _cairo_content_from_format (format)); 1.51 + 1.52 + _cairo_surface_clipper_init (&qs->clipper, 1.53 + _cairo_qt_surface_clipper_intersect_clip_path); 1.54 + 1.55 ++ if (CAIRO_FORMAT_A8 == format) { 1.56 ++ qs->image = NULL; 1.57 ++ qs->image_equiv = cairo_image_surface_create(format, 1.58 ++ width, height); 1.59 ++ qs->p = NULL; 1.60 ++ qs->supports_porter_duff = false; 1.61 ++ qs->window = QRect(0, 0, width, height); 1.62 ++ return &qs->base; 1.63 ++ } 1.64 + 1.65 + QImage *image = new QImage (width, height, 1.66 + _qimage_format_from_cairo_format (format)); 1.67 + 1.68 + qs->image = image; 1.69 + 1.70 + if (!image->isNull()) { 1.71 + qs->p = new QPainter(image);