[Spice-devel] [PATCH 2/2] Add patch fixing performance issue
Kirill Moizik
kirill at daynix.com
Wed Aug 5 07:40:36 PDT 2015
From: Kirill Moizik <kmoizik at redhat.com>
---
cairo-quartz-surface-performance-patch.patch | 61 ++++++++++++++++++++++++++++
1 file changed, 61 insertions(+)
create mode 100644 cairo-quartz-surface-performance-patch.patch
diff --git a/cairo-quartz-surface-performance-patch.patch b/cairo-quartz-surface-performance-patch.patch
new file mode 100644
index 0000000..0da3243
--- /dev/null
+++ b/cairo-quartz-surface-performance-patch.patch
@@ -0,0 +1,61 @@
+--- spice-jhbuild/source/cairo-1.14.0/src/cairo-quartz-surface.c 2014-10-14 04:46:33.000000000 +0300
++++ spice-jhbuild/source/cairo-1.14.0/src/cairo-quartz-surface_patched.c 2015-08-05 16:29:10.000000000 +0300
+@@ -35,6 +35,7 @@
+ */
+
+ #define _GNU_SOURCE /* required for RTLD_DEFAULT */
++#define PERFORMANCE_FIX
+ #include "cairoint.h"
+
+ #include "cairo-quartz-private.h"
+@@ -229,7 +230,15 @@
+ dataProvider,
+ decode,
+ interpolate);
+- } else
++ } else {
++#ifdef PERFORMANCE_FIX
++ CMProfileRef systemMonitorProfile = NULL;
++ CMError getProfileErr = CMGetSystemProfile(&systemMonitorProfile);
++ if(noErr == getProfileErr) {
++ colorSpace = CGColorSpaceCreateWithPlatformColorSpace(systemMonitorProfile);
++ CMCloseProfile(systemMonitorProfile);
++ }
++#endif
+ image = CGImageCreate (width, height,
+ bitsPerComponent,
+ bitsPerPixel,
+@@ -240,6 +249,7 @@
+ NULL,
+ interpolate,
+ kCGRenderingIntentDefault);
++ }
+
+ FINISH:
+
+@@ -1389,7 +1399,11 @@
+ cairo_operator_t op)
+ {
+ CGContextSetShouldAntialias (state->cgDrawContext, state->filter != kCGInterpolationNone);
++#ifdef PERFORMANCE_FIX
++ CGContextSetInterpolationQuality(state->cgDrawContext, kCGInterpolationNone);
++#else
+ CGContextSetInterpolationQuality(state->cgDrawContext, state->filter);
++#endif
+
+ if (state->action == DO_DIRECT) {
+ CGContextFillRect (state->cgDrawContext, state->rect);
+@@ -1672,7 +1686,12 @@
+
+ state.filter = filter;
+
+- CGContextSetInterpolationQuality (state.cgMaskContext, filter);
++#ifdef PERFORMANCE_FIX
++ CGContextSetInterpolationQuality(state.cgDrawContext, kCGInterpolationNone);
++#else
++ CGContextSetInterpolationQuality(state.cgDrawContext, filter);
++#endif
++
+ CGContextSetShouldAntialias (state.cgMaskContext, filter != kCGInterpolationNone);
+
+ CGContextClipToMask (state.cgMaskContext, rect, img);
--
2.3.2 (Apple Git-55)
More information about the Spice-devel
mailing list