diff options
author | BuildTools | 2015-11-01 01:39:56 -0700 |
---|---|---|
committer | BuildTools | 2015-11-01 01:39:56 -0700 |
commit | c82f007b5d33f12fff6806e30aad20014d1ff723 (patch) | |
tree | 9872639192cd688d7a17aed1e349e78a62cb4f89 | |
parent | 3aa0b1683b57b69efb6dda29debb61189a6c0770 (diff) | |
download | aur-c82f007b5d33f12fff6806e30aad20014d1ff723.tar.gz |
1.14.4
-rw-r--r-- | .SRCINFO | 10 | ||||
-rw-r--r-- | 0031-ad-Win32-boilerplate.patch | 304 | ||||
-rw-r--r-- | PKGBUILD | 13 |
3 files changed, 9 insertions, 318 deletions
@@ -1,7 +1,7 @@ pkgbase = mingw-w64-cairo pkgdesc = Cairo vector graphics library (mingw-w64) - pkgver = 1.14.2 - pkgrel = 5 + pkgver = 1.14.4 + pkgrel = 1 url = http://cairographics.org/ arch = any license = LGPL @@ -16,16 +16,14 @@ pkgbase = mingw-w64-cairo options = !strip options = !buildflags options = staticlibs - source = http://cairographics.org/releases/cairo-1.14.2.tar.xz + source = http://cairographics.org/releases/cairo-1.14.4.tar.xz source = 0009-standalone-headers.mingw.patch source = 0026-create-argb-fonts.all.patch source = 0030-add-cairo-API-to-setup-Win32-surface-for-HDC.patch - source = 0031-ad-Win32-boilerplate.patch - sha1sums = c8da68aa66ca0855b5d0ff552766d3e8679e1d24 + sha1sums = 5b44471e7c328f96de6830baf8ea65030de797f9 sha1sums = 58c548d2791ba20dd7f6e328ff596f746df3aa10 sha1sums = 9c0e533614782a41af2c3806a43ab7fe9d6a5431 sha1sums = c0c9546f120133b8e5b116650ba233a15a1e20c4 - sha1sums = f0ce67743fe91668bbbd7bbbabdd2e74b9137026 pkgname = mingw-w64-cairo diff --git a/0031-ad-Win32-boilerplate.patch b/0031-ad-Win32-boilerplate.patch deleted file mode 100644 index 90578fe55f12..000000000000 --- a/0031-ad-Win32-boilerplate.patch +++ /dev/null @@ -1,304 +0,0 @@ -From e38e942ac0ef6f5366cabdb22df9858fa4c05ea1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=D0=A0=D1=83=D1=81=D0=BB=D0=B0=D0=BD=20=D0=98=D0=B6=D0=B1?= - =?UTF-8?q?=D1=83=D0=BB=D0=B0=D1=82=D0=BE=D0=B2?= <lrn1986@gmail.com> -Date: Sat, 4 Apr 2015 15:58:53 +0000 -Subject: win32: Add a win32 boilerplate that uses a real window - -This way it uses the codepath for cairo_win32_surface_create_with_format(), -instead of the cairo_win32_surface_create_with_dib(). - -Without the recording tests (which terminate the testsuite) -the testsuite results for win32 are: - -284 Passed, 167 Failed [1 crashed, 9 expected], 23 Skipped -win32 (rgb24): 1 crashed! -win32 (rgb24): 17 error -win32 (rgb24): 155 failed -win32 (argb32): 1 crashed! -win32 (argb32): 17 error -win32 (argb32): 68 failed -win32-window-color (rgb24): 1 crashed! -win32-window-color (rgb24): 17 error -win32-window-color (rgb24): 148 failed -win32-window-coloralpha (argb32): 1 crashed! -win32-window-coloralpha (argb32): 17 error -win32-window-coloralpha (argb32): 66 failed - -Reviewed-by: Bryce Harrington <bryce@osg.samsung.com> - -diff --git a/boilerplate/cairo-boilerplate-win32.c b/boilerplate/cairo-boilerplate-win32.c -index 7469cc7..4fd0a10 100644 ---- a/boilerplate/cairo-boilerplate-win32.c -+++ b/boilerplate/cairo-boilerplate-win32.c -@@ -28,15 +28,191 @@ - - #include <cairo-win32.h> - -+static const cairo_user_data_key_t win32_closure_key; -+ -+typedef struct _win32_target_closure { -+ HWND wnd; -+ HDC dc; -+ ATOM bpl_atom; -+ cairo_surface_t *surface; -+} win32_target_closure_t; -+ -+static void -+_cairo_boilerplate_win32_cleanup_window_surface (void *closure) -+{ -+ win32_target_closure_t *win32tc = closure; -+ -+ if (win32tc != NULL) -+ { -+ if (win32tc->wnd != NULL && -+ ReleaseDC (win32tc->wnd, win32tc->dc) != 1) -+ fprintf (stderr, -+ "Failed to release DC of a test window when cleaning up.\n"); -+ if (win32tc->wnd != NULL && -+ DestroyWindow (win32tc->wnd) == 0) -+ fprintf (stderr, -+ "Failed to destroy a test window when cleaning up, GLE is %lu.\n", -+ GetLastError ()); -+ if (win32tc->bpl_atom != 0 && -+ UnregisterClassA ((LPCSTR) MAKELPARAM (win32tc->bpl_atom, 0), GetModuleHandle (NULL)) == 0 && -+ GetLastError () != ERROR_CLASS_DOES_NOT_EXIST) -+ fprintf (stderr, -+ "Failed to unregister boilerplate window class, GLE is %lu.\n", -+ GetLastError ()); -+ -+ free (win32tc); -+ } -+} -+ -+static win32_target_closure_t * -+_cairo_boilerplate_win32_create_window (int width, -+ int height) -+{ -+ WNDCLASSEXA wincl; -+ win32_target_closure_t *win32tc; -+ LPCSTR window_class_name; -+ -+ ZeroMemory (&wincl, sizeof (WNDCLASSEXA)); -+ wincl.cbSize = sizeof (WNDCLASSEXA); -+ wincl.hInstance = GetModuleHandle (0); -+ wincl.lpszClassName = "cairo_boilerplate_win32_dummy"; -+ wincl.lpfnWndProc = DefWindowProcA; -+ wincl.style = CS_OWNDC; -+ -+ win32tc = calloc (1, sizeof (win32_target_closure_t)); -+ -+ if (win32tc == NULL) -+ { -+ int error = errno; -+ fprintf (stderr, "Ran out of memory: %d.\n", error); -+ return NULL; -+ } -+ -+ ZeroMemory (win32tc, sizeof (win32_target_closure_t)); -+ -+ win32tc->bpl_atom = RegisterClassExA (&wincl); -+ -+ if (win32tc->bpl_atom == 0 && GetLastError () != ERROR_CLASS_ALREADY_EXISTS) -+ { -+ fprintf (stderr, -+ "Failed to register a boilerplate window class, GLE is %lu.\n", -+ GetLastError ()); -+ _cairo_boilerplate_win32_cleanup_window_surface (win32tc); -+ return NULL; -+ } -+ -+ if (win32tc->bpl_atom == 0) -+ window_class_name = wincl.lpszClassName; -+ else -+ window_class_name = (LPCSTR) MAKELPARAM (win32tc->bpl_atom, 0); -+ -+ win32tc->wnd = CreateWindowExA (WS_EX_TOOLWINDOW, -+ window_class_name, -+ 0, -+ WS_POPUP, -+ 0, -+ 0, -+ width, -+ height, -+ 0, -+ 0, -+ 0, -+ 0); -+ -+ if (win32tc->wnd == NULL) -+ { -+ fprintf (stderr, -+ "Failed to create a test window, GLE is %lu.\n", -+ GetLastError ()); -+ _cairo_boilerplate_win32_cleanup_window_surface (win32tc); -+ return NULL; -+ } -+ -+ win32tc->dc = GetDC (win32tc->wnd); -+ -+ if (win32tc->dc == NULL) -+ { -+ fprintf (stderr, "Failed to get test window DC.\n"); -+ _cairo_boilerplate_win32_cleanup_window_surface (win32tc); -+ return NULL; -+ } -+ -+ SetWindowPos (win32tc->wnd, -+ HWND_BOTTOM, -+ INT_MIN, -+ INT_MIN, -+ width, -+ height, -+ SWP_NOACTIVATE | SWP_SHOWWINDOW); -+ -+ return win32tc; -+} -+ - static cairo_surface_t * --_cairo_boilerplate_win32_create_surface (const char *name, -- cairo_content_t content, -- double width, -- double height, -- double max_width, -- double max_height, -- cairo_boilerplate_mode_t mode, -- void **closure) -+_cairo_boilerplate_win32_create_window_surface (const char *name, -+ cairo_content_t content, -+ double width, -+ double height, -+ double max_width, -+ double max_height, -+ cairo_boilerplate_mode_t mode, -+ void **closure) -+{ -+ win32_target_closure_t *win32tc; -+ cairo_surface_t *surface; -+ cairo_format_t format; -+ cairo_status_t status; -+ -+ win32tc = _cairo_boilerplate_win32_create_window (width, height); -+ -+ if (win32tc == NULL) -+ return NULL; -+ -+ format = cairo_boilerplate_format_from_content (content); -+ -+ surface = cairo_win32_surface_create_with_format (win32tc->dc, format); -+ -+ win32tc->surface = surface; -+ -+ status = cairo_surface_status (surface); -+ -+ if (status != CAIRO_STATUS_SUCCESS) -+ { -+ fprintf (stderr, -+ "Failed to create the test surface: %s [%d].\n", -+ cairo_status_to_string (status), status); -+ _cairo_boilerplate_win32_cleanup_window_surface (win32tc); -+ return NULL; -+ } -+ -+ status = cairo_surface_set_user_data (surface, &win32_closure_key, win32tc, NULL); -+ -+ if (status != CAIRO_STATUS_SUCCESS) -+ { -+ fprintf (stderr, -+ "Failed to set surface userdata: %s [%d].\n", -+ cairo_status_to_string (status), status); -+ -+ cairo_surface_destroy (surface); -+ _cairo_boilerplate_win32_cleanup_window_surface (win32tc); -+ -+ return NULL; -+ } -+ -+ *closure = win32tc; -+ -+ return surface; -+} -+ -+static cairo_surface_t * -+_cairo_boilerplate_win32_create_dib_surface (const char *name, -+ cairo_content_t content, -+ double width, -+ double height, -+ double max_width, -+ double max_height, -+ cairo_boilerplate_mode_t mode, -+ void **closure) - { - cairo_format_t format; - -@@ -52,12 +228,16 @@ static const cairo_boilerplate_target_t targets[] = { - "win32", "win32", NULL, NULL, - CAIRO_SURFACE_TYPE_WIN32, CAIRO_CONTENT_COLOR, 0, - "cairo_win32_surface_create_with_dib", -- _cairo_boilerplate_win32_create_surface, -+ _cairo_boilerplate_win32_create_dib_surface, - cairo_surface_create_similar, -- NULL, NULL, -+ NULL, -+ NULL, - _cairo_boilerplate_get_image_surface, - cairo_surface_write_to_png, -- NULL, NULL, NULL, TRUE, FALSE, FALSE -+ NULL, -+ NULL, -+ NULL, -+ TRUE, FALSE, FALSE - }, - /* Testing the win32 surface isn't interesting, since for - * ARGB images it just chains to the image backend -@@ -66,12 +246,46 @@ static const cairo_boilerplate_target_t targets[] = { - "win32", "win32", NULL, NULL, - CAIRO_SURFACE_TYPE_WIN32, CAIRO_CONTENT_COLOR_ALPHA, 0, - "cairo_win32_surface_create_with_dib", -- _cairo_boilerplate_win32_create_surface, -+ _cairo_boilerplate_win32_create_dib_surface, -+ cairo_surface_create_similar, -+ NULL, -+ NULL, -+ _cairo_boilerplate_get_image_surface, -+ cairo_surface_write_to_png, -+ NULL, -+ NULL, -+ NULL, -+ FALSE, FALSE, FALSE -+ }, -+ { -+ "win32-window-color", "win32", NULL, NULL, -+ CAIRO_SURFACE_TYPE_WIN32, CAIRO_CONTENT_COLOR, 1, -+ "cairo_win32_surface_create", -+ _cairo_boilerplate_win32_create_window_surface, -+ cairo_surface_create_similar, -+ NULL, -+ NULL, -+ _cairo_boilerplate_get_image_surface, -+ cairo_surface_write_to_png, -+ _cairo_boilerplate_win32_cleanup_window_surface, -+ NULL, -+ NULL, -+ FALSE, FALSE, FALSE -+ }, -+ { -+ "win32-window-coloralpha", "win32", NULL, NULL, -+ CAIRO_SURFACE_TYPE_WIN32, CAIRO_CONTENT_COLOR_ALPHA, 1, -+ "cairo_win32_surface_create_with_format", -+ _cairo_boilerplate_win32_create_window_surface, - cairo_surface_create_similar, -- NULL, NULL, -+ NULL, -+ NULL, - _cairo_boilerplate_get_image_surface, - cairo_surface_write_to_png, -- NULL, NULL, NULL, FALSE, FALSE, FALSE -+ _cairo_boilerplate_win32_cleanup_window_surface, -+ NULL, -+ NULL, -+ FALSE, FALSE, FALSE - }, - }; - CAIRO_BOILERPLATE (win32, targets) --- -cgit v0.10.2 @@ -1,7 +1,7 @@ # Contributor: Xiao-Long Chen <chenxiaolong@cxl.epac.to> pkgname=mingw-w64-cairo -pkgver=1.14.2 -pkgrel=5 +pkgver=1.14.4 +pkgrel=1 pkgdesc="Cairo vector graphics library (mingw-w64)" arch=(any) url="http://cairographics.org/" @@ -12,13 +12,11 @@ options=(!strip !buildflags staticlibs) source=("http://cairographics.org/releases/cairo-${pkgver}.tar.xz" "0009-standalone-headers.mingw.patch" "0026-create-argb-fonts.all.patch" -"0030-add-cairo-API-to-setup-Win32-surface-for-HDC.patch" -"0031-ad-Win32-boilerplate.patch") -sha1sums=('c8da68aa66ca0855b5d0ff552766d3e8679e1d24' +"0030-add-cairo-API-to-setup-Win32-surface-for-HDC.patch") +sha1sums=('5b44471e7c328f96de6830baf8ea65030de797f9' '58c548d2791ba20dd7f6e328ff596f746df3aa10' '9c0e533614782a41af2c3806a43ab7fe9d6a5431' - 'c0c9546f120133b8e5b116650ba233a15a1e20c4' - 'f0ce67743fe91668bbbd7bbbabdd2e74b9137026') + 'c0c9546f120133b8e5b116650ba233a15a1e20c4') _architectures="i686-w64-mingw32 x86_64-w64-mingw32" @@ -27,7 +25,6 @@ prepare() { patch -p1 -i ${srcdir}/0009-standalone-headers.mingw.patch patch -p1 -i ${srcdir}/0026-create-argb-fonts.all.patch patch -p1 -i ${srcdir}/0030-add-cairo-API-to-setup-Win32-surface-for-HDC.patch - patch -p1 -i ${srcdir}/0031-ad-Win32-boilerplate.patch autoreconf -fi } |