- Fix corrupted drawing, cherry-picked from upstream (fdo#61876)
- Add a few windows related fixes
This commit is contained in:
parent
5058e3a71c
commit
602fd779ff
@ -0,0 +1,37 @@
|
||||
From 4b69464dde07f2d5c23664499cb61ac984344e66 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@gmail.com>
|
||||
Date: Tue, 2 Apr 2013 21:00:20 +0200
|
||||
Subject: [PATCH] build-sys: do not try to build util/sphinx on Windows
|
||||
|
||||
glib and dlfcn exist on windows, but sphinx code uses a lot of
|
||||
Unix-only API
|
||||
|
||||
Fixes the following build error on mingw-fedora
|
||||
|
||||
CC cairo-boilerplate-system.lo
|
||||
../../../util/cairo-sphinx/sphinx.c:8:22: fatal error: sys/mman.h: No such file or directory
|
||||
compilation terminated.
|
||||
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=63043
|
||||
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=63044
|
||||
---
|
||||
configure.ac | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 928a169..9a9be60 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -797,7 +797,7 @@ CAIRO_ENABLE(symbol_lookup, symbol-lookup, auto, [
|
||||
PKG_CHECK_MODULES(glib, glib-2.0, have_glib=yes, have_glib=no)
|
||||
AC_SUBST(glib_CFLAGS)
|
||||
AC_SUBST(glib_LIBS)
|
||||
-AM_CONDITIONAL(BUILD_SPHINX, test "x$have_glib" = "xyes")
|
||||
+AM_CONDITIONAL(BUILD_SPHINX, test "x$have_glib" = "xyes" -a "x$have_windows" = "xno")
|
||||
|
||||
save_LIBS="$LIBS"
|
||||
AC_CHECK_LIB(rt, shm_open, shm_LIBS="-lrt")
|
||||
--
|
||||
1.8.1.1.439.g50a6b54
|
||||
|
||||
41
0001-win32-Free-the-fallback-upon-finish.patch
Normal file
41
0001-win32-Free-the-fallback-upon-finish.patch
Normal file
@ -0,0 +1,41 @@
|
||||
From 3fcaddfefa2024e04217e302e72e15dd22014df0 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Date: Fri, 15 Feb 2013 14:04:21 +0000
|
||||
Subject: [PATCH 1/3] win32: Free the fallback upon finish
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Zozó Teki pointed out that we leak the fallback surface upon finish in
|
||||
case it was active at the time as the preceding flush would only clear
|
||||
the damage and not decouple the fallback surface.
|
||||
|
||||
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
---
|
||||
src/win32/cairo-win32-display-surface.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/src/win32/cairo-win32-display-surface.c b/src/win32/cairo-win32-display-surface.c
|
||||
index ccd285d..0390625 100644
|
||||
--- a/src/win32/cairo-win32-display-surface.c
|
||||
+++ b/src/win32/cairo-win32-display-surface.c
|
||||
@@ -429,6 +429,8 @@ _cairo_win32_display_surface_finish (void *abstract_surface)
|
||||
DeleteDC (surface->win32.dc);
|
||||
}
|
||||
|
||||
+ _cairo_win32_display_surface_discard_fallback (surface);
|
||||
+
|
||||
if (surface->initial_clip_rgn)
|
||||
DeleteObject (surface->initial_clip_rgn);
|
||||
|
||||
@@ -758,6 +760,7 @@ _cairo_win32_display_surface_discard_fallback (cairo_win32_display_surface_t *su
|
||||
TRACE ((stderr, "%s (surface=%d)\n",
|
||||
__FUNCTION__, surface->win32.base.unique_id));
|
||||
|
||||
+ cairo_surface_finish (surface->fallback);
|
||||
cairo_surface_destroy (surface->fallback);
|
||||
surface->fallback = NULL;
|
||||
}
|
||||
--
|
||||
1.8.1.1.439.g50a6b54
|
||||
|
||||
48
0002-win32-fix-corrupted-drawing.patch
Normal file
48
0002-win32-fix-corrupted-drawing.patch
Normal file
@ -0,0 +1,48 @@
|
||||
From 9f65974bdaafe700930c6cd7de85915a5450b431 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@gmail.com>
|
||||
Date: Tue, 2 Apr 2013 00:32:56 +0200
|
||||
Subject: [PATCH 2/3] win32: fix corrupted drawing
|
||||
|
||||
Fix src bitmap coordinates, which origin is bottom-left. This is
|
||||
apparently a bug in StretchDIBits(), according to some comments on
|
||||
MSDN API documentation.
|
||||
|
||||
The backend used to have this coordinate change in the past:
|
||||
|
||||
if (!StretchDIBits (dst->dc,
|
||||
/* dst x,y,w,h */
|
||||
dst_r.x, dst_r.y + dst_r.height - 1,
|
||||
dst_r.width, - (int) dst_r.height,
|
||||
/* src x,y,w,h */
|
||||
src_r.x, src_extents.height - src_r.y + 1,
|
||||
src_r.width, - (int) src_r.height,
|
||||
src_image->data,
|
||||
&bi,
|
||||
DIB_RGB_COLORS,
|
||||
SRCCOPY))
|
||||
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=61876
|
||||
---
|
||||
src/win32/cairo-win32-gdi-compositor.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/win32/cairo-win32-gdi-compositor.c b/src/win32/cairo-win32-gdi-compositor.c
|
||||
index c70b0f9..073e889 100644
|
||||
--- a/src/win32/cairo-win32-gdi-compositor.c
|
||||
+++ b/src/win32/cairo-win32-gdi-compositor.c
|
||||
@@ -151,10 +151,11 @@ static cairo_bool_t upload_box (cairo_box_t *box, void *closure)
|
||||
int y = _cairo_fixed_integer_part (box->p1.y);
|
||||
int width = _cairo_fixed_integer_part (box->p2.x - box->p1.x);
|
||||
int height = _cairo_fixed_integer_part (box->p2.y - box->p1.y);
|
||||
+ int src_height = -cb->bi.bmiHeader.biHeight;
|
||||
|
||||
TRACE ((stderr, "%s\n", __FUNCTION__));
|
||||
return StretchDIBits (cb->dst, x, y + height - 1, width, -height,
|
||||
- x + cb->tx, height - (y + cb->ty - 1),
|
||||
+ x + cb->tx, src_height - (y + cb->ty - 1),
|
||||
width, -height,
|
||||
cb->data, &cb->bi,
|
||||
DIB_RGB_COLORS, SRCCOPY);
|
||||
--
|
||||
1.8.1.1.439.g50a6b54
|
||||
|
||||
@ -0,0 +1,37 @@
|
||||
From 332bce6142b313f336e5a714543cc9ea202912e0 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@gmail.com>
|
||||
Date: Tue, 2 Apr 2013 21:00:20 +0200
|
||||
Subject: [PATCH 3/3] build-sys: do not try to build util/sphinx on Windows
|
||||
|
||||
glib and dlfcn exist on windows, but sphinx code uses a lot of
|
||||
Unix-only API
|
||||
|
||||
Fixes the following build error on mingw-fedora
|
||||
|
||||
CC cairo-boilerplate-system.lo
|
||||
../../../util/cairo-sphinx/sphinx.c:8:22: fatal error: sys/mman.h: No such file or directory
|
||||
compilation terminated.
|
||||
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=63043
|
||||
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=63044
|
||||
---
|
||||
configure.ac | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 928a169..9a9be60 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -797,7 +797,7 @@ CAIRO_ENABLE(symbol_lookup, symbol-lookup, auto, [
|
||||
PKG_CHECK_MODULES(glib, glib-2.0, have_glib=yes, have_glib=no)
|
||||
AC_SUBST(glib_CFLAGS)
|
||||
AC_SUBST(glib_LIBS)
|
||||
-AM_CONDITIONAL(BUILD_SPHINX, test "x$have_glib" = "xyes")
|
||||
+AM_CONDITIONAL(BUILD_SPHINX, test "x$have_glib" = "xyes" -a "x$have_windows" = "xno")
|
||||
|
||||
save_LIBS="$LIBS"
|
||||
AC_CHECK_LIB(rt, shm_open, shm_LIBS="-lrt")
|
||||
--
|
||||
1.8.1.1.439.g50a6b54
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
Name: mingw-cairo
|
||||
Version: 1.12.14
|
||||
Release: 1%{?dist}
|
||||
Release: 2%{?dist}
|
||||
Summary: MinGW Windows Cairo library
|
||||
|
||||
License: LGPLv2 or MPLv1.1
|
||||
@ -37,8 +37,14 @@ BuildRequires: mingw64-zlib
|
||||
BuildRequires: mingw64-glib2
|
||||
|
||||
BuildRequires: mingw-w64-tools
|
||||
BuildRequires: autoconf automake libtool
|
||||
BuildRequires: pkgconfig
|
||||
|
||||
# cherry-picked from upcoming 1.12.15
|
||||
Patch1: 0001-win32-Free-the-fallback-upon-finish.patch
|
||||
Patch2: 0002-win32-fix-corrupted-drawing.patch
|
||||
# https://bugs.freedesktop.org/show_bug.cgi?id=63043
|
||||
Patch3: 0003-build-sys-do-not-try-to-build-util-sphinx-on-Windows.patch
|
||||
|
||||
%description
|
||||
MinGW Windows Cairo library.
|
||||
@ -87,6 +93,11 @@ Static version of the MinGW Windows Cairo library.
|
||||
%prep
|
||||
%setup -q -n cairo-%{version}
|
||||
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
|
||||
autoreconf -vfi
|
||||
|
||||
%build
|
||||
# Function to generate an import library for delay-loading
|
||||
@ -209,6 +220,10 @@ find $RPM_BUILD_ROOT -name "*.la" -delete
|
||||
|
||||
|
||||
%changelog
|
||||
* Tue Apr 2 2013 Marc-André Lureau <marcandre.lureau@redhat.com> - 1.12.14-2
|
||||
- Fix corrupted drawing, cherry-picked from upstream (fdo#61876)
|
||||
- Add a few windows related fixes
|
||||
|
||||
* Fri Mar 29 2013 Kalev Lember <kalevlember@gmail.com> - 1.12.14-1
|
||||
- Update to 1.12.14
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user