Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Please unblock package blender This revision fixes #770447. A previous revision has been uploaded to experimental suite in the morning, fixing #770677. It was not my intention to fix any other bug before the "fixes in severity" freeze. Sorry about the late update. Attached, you'll find the debdiff against revision "-1" (actually in testing). Obviously, it contains also the changes made with revision "-2", uploaded to experimental in the meanwhile. Thanks for considering. unblock blender/2.72.b+dfsg0-3 -- System Information: Debian Release: 8.0 APT prefers unstable APT policy: (500, 'unstable') Architecture: amd64 (x86_64) Kernel: Linux 3.16.0-4-amd64 (SMP w/1 CPU core) Locale: LANG=C, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) -- Matteo F. Vescovi || Debian Developer GnuPG KeyID: 4096R/0x8062398983B2CF7A
diff -Nru blender-2.72.b+dfsg0/debian/changelog blender-2.72.b+dfsg0/debian/changelog --- blender-2.72.b+dfsg0/debian/changelog 2014-10-21 14:58:45.000000000 +0200 +++ blender-2.72.b+dfsg0/debian/changelog 2014-12-03 16:09:21.000000000 +0100 @@ -1,3 +1,20 @@ +blender (2.72.b+dfsg0-3) unstable; urgency=medium + + * debian/patches/: patchset updated + - 0011-set_SSL_version_to_v23.patch added (Closes: #770447) + + -- Matteo F. Vescovi <m...@debian.org> Wed, 03 Dec 2014 16:09:11 +0100 + +blender (2.72.b+dfsg0-2) experimental; urgency=medium + + * debian/control: Uploader e-mail address updated + * debian/patches/: patchset updated + - #0001 => #0007 refreshed + - 0010-fix_atomic_issue.patch added (Closes: #771042) + Thanks to Sergey Sharybin (upstream devel) for #0010. + + -- Matteo F. Vescovi <m...@debian.org> Wed, 03 Dec 2014 10:52:10 +0100 + blender (2.72.b+dfsg0-1) unstable; urgency=medium * New upstream bugfix release diff -Nru blender-2.72.b+dfsg0/debian/control blender-2.72.b+dfsg0/debian/control --- blender-2.72.b+dfsg0/debian/control 2014-10-20 18:38:22.000000000 +0200 +++ blender-2.72.b+dfsg0/debian/control 2014-11-24 14:50:24.000000000 +0100 @@ -3,7 +3,7 @@ Priority: optional Maintainer: Debian Multimedia Maintainers <pkg-multimedia-maintain...@lists.alioth.debian.org> Uploaders: Alessio Treglia <ales...@debian.org>, - Matteo F. Vescovi <mfvesc...@gmail.com> + Matteo F. Vescovi <m...@debian.org> Build-Depends: autotools-dev, cmake, debhelper (>= 9), diff -Nru blender-2.72.b+dfsg0/debian/copyright blender-2.72.b+dfsg0/debian/copyright --- blender-2.72.b+dfsg0/debian/copyright 2014-10-20 18:38:22.000000000 +0200 +++ blender-2.72.b+dfsg0/debian/copyright 2014-12-03 08:32:07.000000000 +0100 @@ -99,7 +99,7 @@ 2005-2007, Florian Ernst <flor...@debian.org> 2007-2010, Cyril Brulebois <k...@debian.org> 2010-2012, Kevin Roy <kin...@gmail.com> - 2012-2013, Matteo F. Vescovi <mfv.deb...@gmail.com> + 2012-2014, Matteo F. Vescovi <m...@debian.org> License: GPL-2+ Files: extern/libopenjpeg/* diff -Nru blender-2.72.b+dfsg0/debian/patches/0001-blender_thumbnailer.patch blender-2.72.b+dfsg0/debian/patches/0001-blender_thumbnailer.patch --- blender-2.72.b+dfsg0/debian/patches/0001-blender_thumbnailer.patch 2014-10-20 18:38:22.000000000 +0200 +++ blender-2.72.b+dfsg0/debian/patches/0001-blender_thumbnailer.patch 2014-12-03 14:35:33.000000000 +0100 @@ -33,7 +33,7 @@ # ##### BEGIN GPL LICENSE BLOCK ##### # diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt -index 6ed87f6..498c99e 100644 +index 06c6d0d..80c48cf 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -478,7 +478,7 @@ if(UNIX AND NOT APPLE) diff -Nru blender-2.72.b+dfsg0/debian/patches/0002-install_in_usr_share.patch blender-2.72.b+dfsg0/debian/patches/0002-install_in_usr_share.patch --- blender-2.72.b+dfsg0/debian/patches/0002-install_in_usr_share.patch 2014-10-20 18:38:22.000000000 +0200 +++ blender-2.72.b+dfsg0/debian/patches/0002-install_in_usr_share.patch 2014-12-03 14:35:33.000000000 +0100 @@ -9,7 +9,7 @@ 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt -index 498c99e..9af7b21 100644 +index 80c48cf..d38cf25 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -308,8 +308,8 @@ if(WITH_PYTHON) diff -Nru blender-2.72.b+dfsg0/debian/patches/0003-filter_docs_to_install.patch blender-2.72.b+dfsg0/debian/patches/0003-filter_docs_to_install.patch --- blender-2.72.b+dfsg0/debian/patches/0003-filter_docs_to_install.patch 2014-10-20 18:38:22.000000000 +0200 +++ blender-2.72.b+dfsg0/debian/patches/0003-filter_docs_to_install.patch 2014-12-03 14:35:33.000000000 +0100 @@ -8,7 +8,7 @@ 1 file changed, 2 deletions(-) diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt -index 9af7b21..2ae3bf2 100644 +index d38cf25..3cd9cdf 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -238,8 +238,6 @@ else() diff -Nru blender-2.72.b+dfsg0/debian/patches/0004-locales_directory_install.patch blender-2.72.b+dfsg0/debian/patches/0004-locales_directory_install.patch --- blender-2.72.b+dfsg0/debian/patches/0004-locales_directory_install.patch 2014-10-20 18:38:22.000000000 +0200 +++ blender-2.72.b+dfsg0/debian/patches/0004-locales_directory_install.patch 2014-12-03 14:35:33.000000000 +0100 @@ -81,7 +81,7 @@ BLI_assert(0); break; diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt -index 2ae3bf2..1501ac0 100644 +index 3cd9cdf..37791fe 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -323,11 +323,11 @@ if(WITH_INTERNATIONAL) diff -Nru blender-2.72.b+dfsg0/debian/patches/0005-update_manpages.patch blender-2.72.b+dfsg0/debian/patches/0005-update_manpages.patch --- blender-2.72.b+dfsg0/debian/patches/0005-update_manpages.patch 2014-10-20 18:38:22.000000000 +0200 +++ blender-2.72.b+dfsg0/debian/patches/0005-update_manpages.patch 2014-12-03 14:35:33.000000000 +0100 @@ -148,7 +148,7 @@ +.SH AUTHORS +This manpage was written for a Debian GNU/Linux by Kevin Roy <kin...@gmail.com>. diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt -index 1501ac0..f5566ab 100644 +index 37791fe..27a9b62 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -412,6 +412,7 @@ if(UNIX AND NOT APPLE) diff -Nru blender-2.72.b+dfsg0/debian/patches/0006-do_not_use_version_number_in_system_path.patch blender-2.72.b+dfsg0/debian/patches/0006-do_not_use_version_number_in_system_path.patch --- blender-2.72.b+dfsg0/debian/patches/0006-do_not_use_version_number_in_system_path.patch 2014-10-20 18:38:22.000000000 +0200 +++ blender-2.72.b+dfsg0/debian/patches/0006-do_not_use_version_number_in_system_path.patch 2014-12-03 14:35:33.000000000 +0100 @@ -30,7 +30,7 @@ if (static_path) { static string system_path = string(static_path) + "/blender/" + versionstr; diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt -index f5566ab..40609da 100644 +index 27a9b62..5b9b390 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -261,7 +261,7 @@ if(UNIX AND NOT APPLE) diff -Nru blender-2.72.b+dfsg0/debian/patches/0007-look_for_droid_ttf_with_fontconfig.patch blender-2.72.b+dfsg0/debian/patches/0007-look_for_droid_ttf_with_fontconfig.patch --- blender-2.72.b+dfsg0/debian/patches/0007-look_for_droid_ttf_with_fontconfig.patch 2014-10-20 18:38:22.000000000 +0200 +++ blender-2.72.b+dfsg0/debian/patches/0007-look_for_droid_ttf_with_fontconfig.patch 2014-12-03 14:35:33.000000000 +0100 @@ -184,7 +184,7 @@ * Returns true if the file with the specified name can be written. * This implementation uses access(2), which makes the check according diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt -index 40609da..095732b 100644 +index 5b9b390..f9a451e 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -320,12 +320,6 @@ endif() diff -Nru blender-2.72.b+dfsg0/debian/patches/0010-fix_atomic_issue.patch blender-2.72.b+dfsg0/debian/patches/0010-fix_atomic_issue.patch --- blender-2.72.b+dfsg0/debian/patches/0010-fix_atomic_issue.patch 1970-01-01 01:00:00.000000000 +0100 +++ blender-2.72.b+dfsg0/debian/patches/0010-fix_atomic_issue.patch 2014-12-03 14:35:33.000000000 +0100 @@ -0,0 +1,521 @@ +From: Sergey Sharybin <sergey....@gmail.com> +Date: Wed, 3 Dec 2014 10:48:03 +0100 +Subject: fix_atomic_issue + +Closes: #771042 + +Signed-off-by: Matteo F. Vescovi <m...@debian.org> +--- + intern/atomic/atomic_ops.h | 202 +++++++++++++++++++++++++++++------- + intern/cycles/CMakeLists.txt | 4 + + intern/cycles/SConscript | 2 +- + intern/cycles/kernel/osl/SConscript | 1 + + intern/cycles/util/CMakeLists.txt | 1 + + intern/cycles/util/util_atomic.h | 33 ++++++ + intern/cycles/util/util_stats.h | 9 +- + 7 files changed, 210 insertions(+), 42 deletions(-) + create mode 100644 intern/cycles/util/util_atomic.h + +diff --git a/intern/atomic/atomic_ops.h b/intern/atomic/atomic_ops.h +index 127552f..06a5c8d 100644 +--- a/intern/atomic/atomic_ops.h ++++ b/intern/atomic/atomic_ops.h +@@ -34,6 +34,11 @@ + #if defined (__APPLE__) + # include <libkern/OSAtomic.h> + #elif defined(_MSC_VER) ++# define NOGDI ++# ifndef NOMINMAX ++# define NOMINMAX ++# endif ++# define WIN32_LEAN_AND_MEAN + # include <windows.h> + #elif defined(__arm__) + /* Attempt to fix compilation error on Debian armel kernel. +@@ -79,37 +84,57 @@ + ATOMIC_INLINE uint64_t + atomic_add_uint64(uint64_t *p, uint64_t x) + { +- return (__sync_add_and_fetch(p, x)); ++ return __sync_add_and_fetch(p, x); + } + + ATOMIC_INLINE uint64_t + atomic_sub_uint64(uint64_t *p, uint64_t x) + { +- return (__sync_sub_and_fetch(p, x)); ++ return __sync_sub_and_fetch(p, x); ++} ++ ++ATOMIC_INLINE uint64_t ++atomic_cas_uint64(uint64_t *v, uint64_t old, uint64_t _new) ++{ ++ return __sync_val_compare_and_swap(v, old, _new); + } + #elif (defined(_MSC_VER)) + ATOMIC_INLINE uint64_t + atomic_add_uint64(uint64_t *p, uint64_t x) + { +- return (InterlockedExchangeAdd64(p, x)); ++ return InterlockedExchangeAdd64((int64_t *)p, (int64_t)x); + } + + ATOMIC_INLINE uint64_t + atomic_sub_uint64(uint64_t *p, uint64_t x) + { +- return (InterlockedExchangeAdd64(p, -((int64_t)x))); ++ return InterlockedExchangeAdd64((int64_t *)p, -((int64_t)x)); ++} ++ ++ATOMIC_INLINE uint64_t ++atomic_cas_uint64(uint64_t *v, uint64_t old, uint64_t _new) ++{ ++ return InterlockedCompareExchange64((int64_t *)v, _new, old); + } + #elif (defined(__APPLE__)) + ATOMIC_INLINE uint64_t + atomic_add_uint64(uint64_t *p, uint64_t x) + { +- return (uint64_t)(OSAtomicAdd64((int64_t)x, (int64_t *)p)); ++ return (uint64_t)OSAtomicAdd64((int64_t)x, (int64_t *)p); + } + + ATOMIC_INLINE uint64_t + atomic_sub_uint64(uint64_t *p, uint64_t x) + { +- return (uint64_t)(OSAtomicAdd64(-((int64_t)x), (int64_t *)p)); ++ return (uint64_t)OSAtomicAdd64(-((int64_t)x), (int64_t *)p); ++} ++ ++ATOMIC_INLINE uint64_t ++atomic_cas_uint64(uint64_t *v, uint64_t old, uint64_t _new) ++{ ++ uint64_t init_val = *v; ++ OSAtomicCompareAndSwap64((int64_t)old, (int64_t)_new, (int64_t *)v); ++ return init_val; + } + # elif (defined(__amd64__) || defined(__x86_64__)) + ATOMIC_INLINE uint64_t +@@ -120,7 +145,7 @@ atomic_add_uint64(uint64_t *p, uint64_t x) + : "+r" (x), "=m" (*p) /* Outputs. */ + : "m" (*p) /* Inputs. */ + ); +- return (x); ++ return x; + } + + ATOMIC_INLINE uint64_t +@@ -132,8 +157,21 @@ atomic_sub_uint64(uint64_t *p, uint64_t x) + : "+r" (x), "=m" (*p) /* Outputs. */ + : "m" (*p) /* Inputs. */ + ); +- return (x); ++ return x; ++} ++ ++ATOMIC_INLINE uint64_t ++atomic_cas_uint64(uint64_t *v, uint64_t old, uint64_t _new) ++{ ++ uint64_t ret; ++ asm volatile ( ++ "lock; cmpxchgq %2,%1" ++ : "=a" (ret), "+m" (*v) ++ : "r" (_new), "0" (old) ++ : "memory"); ++ return ret; + } ++ + # elif (defined(JEMALLOC_ATOMIC9)) + ATOMIC_INLINE uint64_t + atomic_add_uint64(uint64_t *p, uint64_t x) +@@ -144,7 +182,7 @@ atomic_add_uint64(uint64_t *p, uint64_t x) + */ + assert(sizeof(uint64_t) == sizeof(unsigned long)); + +- return (atomic_fetchadd_long(p, (unsigned long)x) + x); ++ return atomic_fetchadd_long(p, (unsigned long)x) + x; + } + + ATOMIC_INLINE uint64_t +@@ -152,19 +190,33 @@ atomic_sub_uint64(uint64_t *p, uint64_t x) + { + assert(sizeof(uint64_t) == sizeof(unsigned long)); + +- return (atomic_fetchadd_long(p, (unsigned long)(-(long)x)) - x); ++ return atomic_fetchadd_long(p, (unsigned long)(-(long)x)) - x; ++} ++ ++ATOMIC_INLINE uint64_t ++atomic_cas_uint32(uint64_t *v, uint64_t old, uint64_t _new) ++{ ++ assert(sizeof(uint64_t) == sizeof(unsigned long)); ++ ++ return atomic_cmpset_long(v, old, _new); + } + # elif (defined(JE_FORCE_SYNC_COMPARE_AND_SWAP_8)) + ATOMIC_INLINE uint64_t + atomic_add_uint64(uint64_t *p, uint64_t x) + { +- return (__sync_add_and_fetch(p, x)); ++ return __sync_add_and_fetch(p, x); + } + + ATOMIC_INLINE uint64_t + atomic_sub_uint64(uint64_t *p, uint64_t x) + { +- return (__sync_sub_and_fetch(p, x)); ++ return __sync_sub_and_fetch(p, x); ++} ++ ++ATOMIC_INLINE uint64_t ++atomic_cas_uint32(uint64_t *v, uint64_t old, uint64_t _new) ++{ ++ return __sync_val_compare_and_swap(v, old, _new); + } + # else + # error "Missing implementation for 64-bit atomic operations" +@@ -177,37 +229,57 @@ atomic_sub_uint64(uint64_t *p, uint64_t x) + ATOMIC_INLINE uint32_t + atomic_add_uint32(uint32_t *p, uint32_t x) + { +- return (__sync_add_and_fetch(p, x)); ++ return __sync_add_and_fetch(p, x); + } + + ATOMIC_INLINE uint32_t + atomic_sub_uint32(uint32_t *p, uint32_t x) + { +- return (__sync_sub_and_fetch(p, x)); ++ return __sync_sub_and_fetch(p, x); ++} ++ ++ATOMIC_INLINE uint32_t ++atomic_cas_uint32(uint32_t *v, uint32_t old, uint32_t _new) ++{ ++ return __sync_val_compare_and_swap(v, old, _new); + } + #elif (defined(_MSC_VER)) + ATOMIC_INLINE uint32_t + atomic_add_uint32(uint32_t *p, uint32_t x) + { +- return (InterlockedExchangeAdd(p, x)); ++ return InterlockedExchangeAdd(p, x); + } + + ATOMIC_INLINE uint32_t + atomic_sub_uint32(uint32_t *p, uint32_t x) + { +- return (InterlockedExchangeAdd(p, -((int32_t)x))); ++ return InterlockedExchangeAdd(p, -((int32_t)x)); ++} ++ ++ATOMIC_INLINE uint32_t ++atomic_cas_uint32(uint32_t *v, uint32_t old, uint32_t _new) ++{ ++ return InterlockedCompareExchange((long *)v, _new, old); + } + #elif (defined(__APPLE__)) + ATOMIC_INLINE uint32_t + atomic_add_uint32(uint32_t *p, uint32_t x) + { +- return (uint32_t)(OSAtomicAdd32((int32_t)x, (int32_t *)p)); ++ return (uint32_t)OSAtomicAdd32((int32_t)x, (int32_t *)p); + } + + ATOMIC_INLINE uint32_t + atomic_sub_uint32(uint32_t *p, uint32_t x) + { +- return (uint32_t)(OSAtomicAdd32(-((int32_t)x), (int32_t *)p)); ++ return (uint32_t)OSAtomicAdd32(-((int32_t)x), (int32_t *)p); ++} ++ ++ATOMIC_INLINE uint32_t ++atomic_cas_uint32(uint32_t *v, uint32_t old, uint32_t _new) ++{ ++ uint32_t init_val = *v; ++ OSAtomicCompareAndSwap32((int32_t)old, (int32_t)_new, (int32_t *)v); ++ return init_val; + } + #elif (defined(__i386__) || defined(__amd64__) || defined(__x86_64__)) + ATOMIC_INLINE uint32_t +@@ -218,7 +290,7 @@ atomic_add_uint32(uint32_t *p, uint32_t x) + : "+r" (x), "=m" (*p) /* Outputs. */ + : "m" (*p) /* Inputs. */ + ); +- return (x); ++ return x; + } + + ATOMIC_INLINE uint32_t +@@ -230,31 +302,55 @@ atomic_sub_uint32(uint32_t *p, uint32_t x) + : "+r" (x), "=m" (*p) /* Outputs. */ + : "m" (*p) /* Inputs. */ + ); +- return (x); ++ return x; ++} ++ ++ATOMIC_INLINE uint32_t ++atomic_cas_uint32(uint32_t *v, uint32_t old, uint32_t _new) ++{ ++ uint32_t ret; ++ asm volatile ( ++ "lock; cmpxchgl %2,%1" ++ : "=a" (ret), "+m" (*v) ++ : "r" (_new), "0" (old) ++ : "memory"); ++ return ret; + } + #elif (defined(JEMALLOC_ATOMIC9)) + ATOMIC_INLINE uint32_t + atomic_add_uint32(uint32_t *p, uint32_t x) + { +- return (atomic_fetchadd_32(p, x) + x); ++ return atomic_fetchadd_32(p, x) + x; + } + + ATOMIC_INLINE uint32_t + atomic_sub_uint32(uint32_t *p, uint32_t x) + { +- return (atomic_fetchadd_32(p, (uint32_t)(-(int32_t)x)) - x); ++ return atomic_fetchadd_32(p, (uint32_t)(-(int32_t)x)) - x; ++} ++ ++ATOMIC_INLINE uint32_t ++atomic_cas_uint32(uint32_t *v, uint32_t old, uint32_t _new) ++{ ++ return atomic_cmpset_32(v, old, _new); + } +-#elif (defined(JE_FORCE_SYNC_COMPARE_AND_SWAP_4)) ++#elif defined(JE_FORCE_SYNC_COMPARE_AND_SWAP_4) + ATOMIC_INLINE uint32_t + atomic_add_uint32(uint32_t *p, uint32_t x) + { +- return (__sync_add_and_fetch(p, x)); ++ return __sync_add_and_fetch(p, x); + } + + ATOMIC_INLINE uint32_t + atomic_sub_uint32(uint32_t *p, uint32_t x) + { +- return (__sync_sub_and_fetch(p, x)); ++ return __sync_sub_and_fetch(p, x); ++} ++ ++ATOMIC_INLINE uint32_t ++atomic_cas_uint32(uint32_t *v, uint32_t old, uint32_t _new) ++{ ++ return __sync_val_compare_and_swap(v, old, _new); + } + #else + # error "Missing implementation for 32-bit atomic operations" +@@ -268,9 +364,9 @@ atomic_add_z(size_t *p, size_t x) + assert(sizeof(size_t) == 1 << LG_SIZEOF_PTR); + + #if (LG_SIZEOF_PTR == 3) +- return ((size_t)atomic_add_uint64((uint64_t *)p, (uint64_t)x)); ++ return (size_t)atomic_add_uint64((uint64_t *)p, (uint64_t)x); + #elif (LG_SIZEOF_PTR == 2) +- return ((size_t)atomic_add_uint32((uint32_t *)p, (uint32_t)x)); ++ return (size_t)atomic_add_uint32((uint32_t *)p, (uint32_t)x); + #endif + } + +@@ -280,11 +376,27 @@ atomic_sub_z(size_t *p, size_t x) + assert(sizeof(size_t) == 1 << LG_SIZEOF_PTR); + + #if (LG_SIZEOF_PTR == 3) +- return ((size_t)atomic_add_uint64((uint64_t *)p, +- (uint64_t)-((int64_t)x))); ++ return (size_t)atomic_add_uint64((uint64_t *)p, ++ (uint64_t)-((int64_t)x)); + #elif (LG_SIZEOF_PTR == 2) +- return ((size_t)atomic_add_uint32((uint32_t *)p, +- (uint32_t)-((int32_t)x))); ++ return (size_t)atomic_add_uint32((uint32_t *)p, ++ (uint32_t)-((int32_t)x)); ++#endif ++} ++ ++ATOMIC_INLINE size_t ++atomic_cas_z(size_t *v, size_t old, size_t _new) ++{ ++ assert(sizeof(size_t) == 1 << LG_SIZEOF_PTR); ++ ++#if (LG_SIZEOF_PTR == 3) ++ return (size_t)atomic_cas_uint64((uint64_t *)v, ++ (uint64_t)old, ++ (uint64_t)_new); ++#elif (LG_SIZEOF_PTR == 2) ++ return (size_t)atomic_cas_uint32((uint32_t *)v, ++ (uint32_t)old, ++ (uint32_t)_new); + #endif + } + +@@ -296,9 +408,9 @@ atomic_add_u(unsigned *p, unsigned x) + assert(sizeof(unsigned) == 1 << LG_SIZEOF_INT); + + #if (LG_SIZEOF_INT == 3) +- return ((unsigned)atomic_add_uint64((uint64_t *)p, (uint64_t)x)); ++ return (unsigned)atomic_add_uint64((uint64_t *)p, (uint64_t)x); + #elif (LG_SIZEOF_INT == 2) +- return ((unsigned)atomic_add_uint32((uint32_t *)p, (uint32_t)x)); ++ return (unsigned)atomic_add_uint32((uint32_t *)p, (uint32_t)x); + #endif + } + +@@ -308,11 +420,27 @@ atomic_sub_u(unsigned *p, unsigned x) + assert(sizeof(unsigned) == 1 << LG_SIZEOF_INT); + + #if (LG_SIZEOF_INT == 3) +- return ((unsigned)atomic_add_uint64((uint64_t *)p, +- (uint64_t)-((int64_t)x))); ++ return (unsigned)atomic_add_uint64((uint64_t *)p, ++ (uint64_t)-((int64_t)x)); + #elif (LG_SIZEOF_INT == 2) +- return ((unsigned)atomic_add_uint32((uint32_t *)p, +- (uint32_t)-((int32_t)x))); ++ return (unsigned)atomic_add_uint32((uint32_t *)p, ++ (uint32_t)-((int32_t)x)); ++#endif ++} ++ ++ATOMIC_INLINE unsigned ++atomic_cas_u(unsigned *v, unsigned old, unsigned _new) ++{ ++ assert(sizeof(unsigned) == 1 << LG_SIZEOF_INT); ++ ++#if (LG_SIZEOF_PTR == 3) ++ return (unsigned)atomic_cas_uint64((uint64_t *)v, ++ (uint64_t)old, ++ (uint64_t)_new); ++#elif (LG_SIZEOF_PTR == 2) ++ return (unsigned)atomic_cas_uint32((uint32_t *)v, ++ (uint32_t)old, ++ (uint32_t)_new); + #endif + } + +diff --git a/intern/cycles/CMakeLists.txt b/intern/cycles/CMakeLists.txt +index a3f251d..2b64eac 100644 +--- a/intern/cycles/CMakeLists.txt ++++ b/intern/cycles/CMakeLists.txt +@@ -139,6 +139,10 @@ include_directories( + ${OPENEXR_INCLUDE_DIRS} + ) + ++# TODO(sergey): Adjust so standalone repository is also happy. ++include_directories( ++ ../atomic ++) + + # Warnings + if(CMAKE_COMPILER_IS_GNUCXX) +diff --git a/intern/cycles/SConscript b/intern/cycles/SConscript +index a6c947b..53278b7 100644 +--- a/intern/cycles/SConscript ++++ b/intern/cycles/SConscript +@@ -60,7 +60,7 @@ if env['WITH_BF_CYCLES_OSL']: + incs.append(cycles['BF_OSL_INC']) + + incs.extend('. bvh render device kernel kernel/osl kernel/svm util subd'.split()) +-incs.extend('#intern/guardedalloc #source/blender/makesrna #source/blender/makesdna #source/blender/blenlib'.split()) ++incs.extend('#intern/guardedalloc #intern/atomic #source/blender/makesrna #source/blender/makesdna #source/blender/blenlib'.split()) + incs.extend('#source/blender/blenloader ../../source/blender/makesrna/intern'.split()) + incs.extend('#extern/glew/include #extern/clew/include #extern/cuew/include #intern/mikktspace'.split()) + incs.append(cycles['BF_OIIO_INC']) +diff --git a/intern/cycles/kernel/osl/SConscript b/intern/cycles/kernel/osl/SConscript +index 4685bb7..e4329de 100644 +--- a/intern/cycles/kernel/osl/SConscript ++++ b/intern/cycles/kernel/osl/SConscript +@@ -38,6 +38,7 @@ incs.append(env['BF_OIIO_INC']) + incs.append(env['BF_BOOST_INC']) + incs.append(env['BF_OSL_INC']) + incs.append(env['BF_OPENEXR_INC'].split()) ++incs.append('#/intern/atomic') + + defs.append('CCL_NAMESPACE_BEGIN=namespace ccl {') + defs.append('CCL_NAMESPACE_END=}') +diff --git a/intern/cycles/util/CMakeLists.txt b/intern/cycles/util/CMakeLists.txt +index d9b97a7..4caa1e1 100644 +--- a/intern/cycles/util/CMakeLists.txt ++++ b/intern/cycles/util/CMakeLists.txt +@@ -30,6 +30,7 @@ endif() + set(SRC_HEADERS + util_algorithm.h + util_args.h ++ util_atomic.h + util_boundbox.h + util_cache.h + util_debug.h +diff --git a/intern/cycles/util/util_atomic.h b/intern/cycles/util/util_atomic.h +new file mode 100644 +index 0000000..1bbb0a8 +--- /dev/null ++++ b/intern/cycles/util/util_atomic.h +@@ -0,0 +1,33 @@ ++/* ++ * Copyright 2014 Blender Foundation ++ * ++ * Licensed under the Apache License, Version 2.0 (the "License"); ++ * you may not use this file except in compliance with the License. ++ * You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License ++ */ ++ ++#ifndef __UTIL_ATOMIC_H__ ++#define __UTIL_ATOMIC_H__ ++ ++/* Using atomic ops header from Blender. */ ++#include "atomic_ops.h" ++ ++ATOMIC_INLINE void atomic_update_max_z(size_t *maximum_value, size_t value) ++{ ++ size_t prev_value = *maximum_value; ++ while (prev_value < value) { ++ if (atomic_cas_z(maximum_value, prev_value, value) != prev_value) { ++ break; ++ } ++ } ++} ++ ++#endif /* __UTIL_ATOMIC_H__ */ +diff --git a/intern/cycles/util/util_stats.h b/intern/cycles/util/util_stats.h +index 8758b82..fe6c162 100644 +--- a/intern/cycles/util/util_stats.h ++++ b/intern/cycles/util/util_stats.h +@@ -17,6 +17,8 @@ + #ifndef __UTIL_STATS_H__ + #define __UTIL_STATS_H__ + ++#include "util_atomic.h" ++ + CCL_NAMESPACE_BEGIN + + class Stats { +@@ -24,14 +26,13 @@ public: + Stats() : mem_used(0), mem_peak(0) {} + + void mem_alloc(size_t size) { +- mem_used += size; +- if(mem_used > mem_peak) +- mem_peak = mem_used; ++ atomic_add_z(&mem_used, size); ++ atomic_update_max_z(&mem_peak, mem_used); + } + + void mem_free(size_t size) { + assert(mem_used >= size); +- mem_used -= size; ++ atomic_sub_z(&mem_used, size); + } + + size_t mem_used; diff -Nru blender-2.72.b+dfsg0/debian/patches/0011-set_SSL_version_to_v23.patch blender-2.72.b+dfsg0/debian/patches/0011-set_SSL_version_to_v23.patch --- blender-2.72.b+dfsg0/debian/patches/0011-set_SSL_version_to_v23.patch 1970-01-01 01:00:00.000000000 +0100 +++ blender-2.72.b+dfsg0/debian/patches/0011-set_SSL_version_to_v23.patch 2014-12-03 14:35:33.000000000 +0100 @@ -0,0 +1,22 @@ +From: "Matteo F. Vescovi" <m...@debian.org> +Date: Wed, 3 Dec 2014 14:34:55 +0100 +Subject: set_SSL_version_to_v23 + +Closes: #770447 +--- + release/scripts/addons/netrender/master.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/release/scripts/addons/netrender/master.py b/release/scripts/addons/netrender/master.py +index 3c087e5..30f09a6 100644 +--- a/release/scripts/addons/netrender/master.py ++++ b/release/scripts/addons/netrender/master.py +@@ -1158,7 +1158,7 @@ def runMaster(address, broadcast, clear, force, path, update_stats, test_break,u + httpd.stats = update_stats + if use_ssl: + import ssl +- httpd.socket=ssl.wrap_socket(httpd.socket,certfile=cert_path,server_side=True,keyfile=key_path,ciphers="ALL",ssl_version=ssl.PROTOCOL_SSLv3) ++ httpd.socket=ssl.wrap_socket(httpd.socket,certfile=cert_path,server_side=True,keyfile=key_path,ciphers="ALL",ssl_version=ssl.PROTOCOL_SSLv23) + if broadcast: + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) diff -Nru blender-2.72.b+dfsg0/debian/patches/series blender-2.72.b+dfsg0/debian/patches/series --- blender-2.72.b+dfsg0/debian/patches/series 2014-10-20 18:38:22.000000000 +0200 +++ blender-2.72.b+dfsg0/debian/patches/series 2014-12-03 14:35:33.000000000 +0100 @@ -7,3 +7,5 @@ 0007-look_for_droid_ttf_with_fontconfig.patch 0008-use_cuda_pointer_arithmetic_in_integers.patch 0009-add_flag_disabling_SSE-SSE2_intrinsics.patch +0010-fix_atomic_issue.patch +0011-set_SSL_version_to_v23.patch
signature.asc
Description: Digital signature