Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2014-03-18 16:54:41 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2014-03-19 09:02:29 +0400
commit19e627cab34a04a3d01b2e3a868b7bf91d56e8f9 (patch)
tree2b01e4e108bebcf0954bb58fe734a65bc514e279
parent2525f9c5f31e90bcb8f2e8c84558a2bc35e3207c (diff)
Backport revisions for the final 2.70 releasev2.70
e6a359a, 9437927, a205700, d908c90, a6e3471, deef641, 4080673, 0141265, 0c6e744, f959e3d, ade6646, caf5d90, 5febb09, d08e6ab, 22873ea, 3d031d1, c450ea2, 60cab47, ed26edb, df25dbf, f127f49.
-rw-r--r--extern/carve/lib/intersect_face_division.cpp4
-rw-r--r--extern/carve/patches/face_hole_merge_workaround.patch14
-rw-r--r--extern/carve/patches/series1
-rw-r--r--intern/cycles/render/tables.cpp5
m---------release/scripts/addons0
-rw-r--r--release/scripts/modules/bpy/ops.py5
-rw-r--r--release/scripts/startup/bl_operators/uvcalc_smart_project.py10
-rw-r--r--source/blender/blenkernel/BKE_blender.h2
-rw-r--r--source/blender/blenkernel/intern/image.c1
-rw-r--r--source/blender/blenkernel/intern/object.c5
-rw-r--r--source/blender/blenkernel/intern/particle_system.c21
-rw-r--r--source/blender/bmesh/operators/bmo_connect.c3
-rw-r--r--source/blender/bmesh/operators/bmo_subdivide.c2
-rw-r--r--source/blender/bmesh/tools/bmesh_bisect_plane.c4
-rw-r--r--source/blender/bmesh/tools/bmesh_path.c8
-rw-r--r--source/blender/compositor/operations/COM_MapUVOperation.cpp5
-rw-r--r--source/blender/editors/interface/interface_handlers.c2
-rw-r--r--source/blender/editors/interface/interface_regions.c3
-rw-r--r--source/blender/editors/interface/interface_templates.c10
-rw-r--r--source/blender/editors/render/render_internal.c7
-rw-r--r--source/blender/editors/space_sequencer/sequencer_edit.c7
-rw-r--r--source/blender/editors/space_view3d/view3d_edit.c7
-rw-r--r--source/blender/editors/transform/transform_conversions.c4
-rw-r--r--source/blender/makesdna/DNA_particle_types.h4
-rw-r--r--source/blender/modifiers/intern/MOD_laplaciandeform.c2
-rw-r--r--source/blender/render/intern/source/convertblender.c2
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c6
27 files changed, 112 insertions, 32 deletions
diff --git a/extern/carve/lib/intersect_face_division.cpp b/extern/carve/lib/intersect_face_division.cpp
index e826948128c..0016724e16c 100644
--- a/extern/carve/lib/intersect_face_division.cpp
+++ b/extern/carve/lib/intersect_face_division.cpp
@@ -719,6 +719,10 @@ namespace {
unassigned--;
}
}
+
+ if (!removed.size())
+ throw carve::exception("Failed to merge holes");
+
for (std::set<int>::iterator f = removed.begin(); f != removed.end(); ++f) {
for (unsigned i = 0; i < containing_faces.size(); ++i) {
containing_faces[i].erase(std::remove(containing_faces[i].begin(),
diff --git a/extern/carve/patches/face_hole_merge_workaround.patch b/extern/carve/patches/face_hole_merge_workaround.patch
new file mode 100644
index 00000000000..834e03a4b12
--- /dev/null
+++ b/extern/carve/patches/face_hole_merge_workaround.patch
@@ -0,0 +1,14 @@
+diff -r e82d852e4fb0 lib/intersect_face_division.cpp
+--- a/lib/intersect_face_division.cpp Wed Jan 15 13:16:14 2014 +1100
++++ b/lib/intersect_face_division.cpp Thu Mar 13 15:39:26 2014 +0600
+@@ -719,6 +719,10 @@
+ unassigned--;
+ }
+ }
++
++ if (!removed.size())
++ throw carve::exception("Failed to merge holes");
++
+ for (std::set<int>::iterator f = removed.begin(); f != removed.end(); ++f) {
+ for (unsigned i = 0; i < containing_faces.size(); ++i) {
+ containing_faces[i].erase(std::remove(containing_faces[i].begin(),
diff --git a/extern/carve/patches/series b/extern/carve/patches/series
index 62a24d9d730..286d594bbef 100644
--- a/extern/carve/patches/series
+++ b/extern/carve/patches/series
@@ -9,3 +9,4 @@ interpolator_reorder.patch
mesh_simplify_dissolve_edges.patch
memory_leak_fix.patch
mavc_fix.patch
+face_hole_merge_workaround.patch
diff --git a/intern/cycles/render/tables.cpp b/intern/cycles/render/tables.cpp
index be0d4afbe2c..a8d502c432d 100644
--- a/intern/cycles/render/tables.cpp
+++ b/intern/cycles/render/tables.cpp
@@ -39,7 +39,10 @@ void LookupTables::device_update(Device *device, DeviceScene *dscene)
if(!need_update)
return;
- device->tex_alloc("__lookup_table", dscene->lookup_table);
+ device->tex_free(dscene->lookup_table);
+
+ if(lookup_tables.size() > 0)
+ device->tex_alloc("__lookup_table", dscene->lookup_table);
need_update = false;
}
diff --git a/release/scripts/addons b/release/scripts/addons
-Subproject 8ad356e3324cddef42d41f9b9b588ef1ebd2f8b
+Subproject 6c32300be8cc8d48a3e02055dc43bea2ab98a52
diff --git a/release/scripts/modules/bpy/ops.py b/release/scripts/modules/bpy/ops.py
index 1d71bffbd84..e457c087ab8 100644
--- a/release/scripts/modules/bpy/ops.py
+++ b/release/scripts/modules/bpy/ops.py
@@ -204,7 +204,10 @@ class BPyOpsSubModOp(object):
import bpy
idname = self.idname()
as_string = op_as_string(idname)
- op_class = getattr(bpy.types, idname)
+ # XXX You never quite know what you get from bpy.types, with operators... Operator and OperatorProperties
+ # are shadowing each other, and not in the same way for native ops and py ones! See T39158.
+ # op_class = getattr(bpy.types, idname)
+ op_class = op_get_rna(idname)
descr = op_class.bl_rna.description
# XXX, workaround for not registering
# every __doc__ to save time on load.
diff --git a/release/scripts/startup/bl_operators/uvcalc_smart_project.py b/release/scripts/startup/bl_operators/uvcalc_smart_project.py
index 74fb9e98c82..70df5a9df21 100644
--- a/release/scripts/startup/bl_operators/uvcalc_smart_project.py
+++ b/release/scripts/startup/bl_operators/uvcalc_smart_project.py
@@ -23,7 +23,7 @@ import bpy
from bpy.types import Operator
DEG_TO_RAD = 0.017453292519943295 # pi/180.0
-SMALL_NUM = 0.000001 # see bug [#31598] why we dont have smaller values
+SMALL_NUM = 0.00000001 # see bug [#31598] why we dont have smaller values
global USER_FILL_HOLES
global USER_FILL_HOLES_QUALITY
@@ -594,10 +594,10 @@ def packIslands(islandList):
# recalc width and height
w, h = maxx-minx, maxy-miny
- if w < 0.00001 or h < 0.00001:
- del islandList[islandIdx]
- islandIdx -=1
- continue
+ if w < SMALL_NUM:
+ w = SMALL_NUM
+ if h < SMALL_NUM:
+ h = SMALL_NUM
"""Save the offset to be applied later,
we could apply to the UVs now and allign them to the bottom left hand area
diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h
index d35ff80265f..ec595320d6a 100644
--- a/source/blender/blenkernel/BKE_blender.h
+++ b/source/blender/blenkernel/BKE_blender.h
@@ -51,7 +51,7 @@ extern "C" {
/* can be left blank, otherwise a,b,c... etc with no quotes */
#define BLENDER_VERSION_CHAR
/* alpha/beta/rc/release, docs use this */
-#define BLENDER_VERSION_CYCLE rc
+#define BLENDER_VERSION_CYCLE release
extern char versionstr[]; /* from blender.c */
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c
index 55699bc0aae..b8b126c4c8e 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -3620,6 +3620,7 @@ ImBuf *BKE_image_get_ibuf_with_name(Image *image, const char *name)
IMB_refImBuf(ibuf);
break;
}
+ IMB_moviecacheIter_step(iter);
}
IMB_moviecacheIter_free(iter);
}
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 43dbc34f3d3..0970af46a6b 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -331,6 +331,10 @@ void BKE_object_free_derived_caches(Object *ob)
free_path(ob->curve_cache->path);
ob->curve_cache->path = NULL;
}
+
+ /* Signal for viewport to run DAG workarounds. */
+ MEM_freeN(ob->curve_cache);
+ ob->curve_cache = NULL;
}
}
@@ -1282,6 +1286,7 @@ static ParticleSystem *copy_particlesystem(ParticleSystem *psys)
psysn->pdd = NULL;
psysn->effectors = NULL;
psysn->tree = NULL;
+ psysn->bvhtree = NULL;
BLI_listbase_clear(&psysn->pathcachebufs);
BLI_listbase_clear(&psysn->childcachebufs);
diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c
index 3f4c53692e5..e7c2bf605c3 100644
--- a/source/blender/blenkernel/intern/particle_system.c
+++ b/source/blender/blenkernel/intern/particle_system.c
@@ -109,6 +109,8 @@
#endif // WITH_MOD_FLUID
+static ThreadRWMutex psys_bvhtree_rwlock = BLI_RWLOCK_INITIALIZER;
+
/************************************************/
/* Reacting to system events */
/************************************************/
@@ -2209,15 +2211,22 @@ static void psys_update_particle_bvhtree(ParticleSystem *psys, float cfra)
if (psys) {
PARTICLE_P;
int totpart = 0;
+ bool need_rebuild;
- if (!psys->bvhtree || psys->bvhtree_frame != cfra) {
+ BLI_rw_mutex_lock(&psys_bvhtree_rwlock, THREAD_LOCK_READ);
+ need_rebuild = !psys->bvhtree || psys->bvhtree_frame != cfra;
+ BLI_rw_mutex_unlock(&psys_bvhtree_rwlock);
+
+ if (need_rebuild) {
LOOP_SHOWN_PARTICLES {
totpart++;
}
+ BLI_rw_mutex_lock(&psys_bvhtree_rwlock, THREAD_LOCK_WRITE);
+
BLI_bvhtree_free(psys->bvhtree);
psys->bvhtree = BLI_bvhtree_new(totpart, 0.0, 4, 6);
-
+
LOOP_SHOWN_PARTICLES {
if (pa->alive == PARS_ALIVE) {
if (pa->state.time == cfra)
@@ -2227,8 +2236,10 @@ static void psys_update_particle_bvhtree(ParticleSystem *psys, float cfra)
}
}
BLI_bvhtree_balance(psys->bvhtree);
-
+
psys->bvhtree_frame = cfra;
+
+ BLI_rw_mutex_unlock(&psys_bvhtree_rwlock);
}
}
}
@@ -2546,7 +2557,11 @@ static void sph_evaluate_func(BVHTree *tree, ParticleSystem **psys, float co[3],
break;
}
else {
+ BLI_rw_mutex_lock(&psys_bvhtree_rwlock, THREAD_LOCK_READ);
+
BLI_bvhtree_range_query(psys[i]->bvhtree, co, interaction_radius, callback, pfr);
+
+ BLI_rw_mutex_unlock(&psys_bvhtree_rwlock);
}
}
}
diff --git a/source/blender/bmesh/operators/bmo_connect.c b/source/blender/bmesh/operators/bmo_connect.c
index 3d2c8c3d020..6e2bc0d0edf 100644
--- a/source/blender/bmesh/operators/bmo_connect.c
+++ b/source/blender/bmesh/operators/bmo_connect.c
@@ -48,7 +48,7 @@ static int bm_face_connect_verts(BMesh *bm, BMFace *f)
BMIter liter;
BMFace *f_new;
- BMLoop *l, *l_new;
+ BMLoop *l;
BMLoop *l_last;
unsigned int i;
@@ -96,6 +96,7 @@ static int bm_face_connect_verts(BMesh *bm, BMFace *f)
}
for (i = 0; i < STACK_SIZE(verts_pair); i++) {
+ BMLoop *l_new;
BMLoop *l_a, *l_b;
if ((l_a = BM_face_vert_share_loop(f, verts_pair[i][0])) &&
diff --git a/source/blender/bmesh/operators/bmo_subdivide.c b/source/blender/bmesh/operators/bmo_subdivide.c
index 723595771a1..1e93340d8a3 100644
--- a/source/blender/bmesh/operators/bmo_subdivide.c
+++ b/source/blender/bmesh/operators/bmo_subdivide.c
@@ -135,7 +135,6 @@ typedef struct SubDPattern {
* edge subdivision */
static BMEdge *connect_smallest_face(BMesh *bm, BMVert *v_a, BMVert *v_b, BMFace **r_f_new)
{
- BMLoop *l_new;
BMLoop *l_a, *l_b;
BMFace *f;
@@ -146,6 +145,7 @@ static BMEdge *connect_smallest_face(BMesh *bm, BMVert *v_a, BMVert *v_b, BMFace
if (f) {
BMFace *f_new;
+ BMLoop *l_new;
f_new = BM_face_split(bm, f, l_a, l_b, &l_new, NULL, false);
diff --git a/source/blender/bmesh/tools/bmesh_bisect_plane.c b/source/blender/bmesh/tools/bmesh_bisect_plane.c
index 7a33dc40f8e..f4318933deb 100644
--- a/source/blender/bmesh/tools/bmesh_bisect_plane.c
+++ b/source/blender/bmesh/tools/bmesh_bisect_plane.c
@@ -136,16 +136,14 @@ static void bm_face_bisect_verts(BMesh *bm, BMFace *f, const float plane[4], con
if ((STACK_SIZE(vert_split_arr) > 1) &&
(use_dirs[0] && use_dirs[2]))
{
- BMLoop *l_new;
-
if (LIKELY(STACK_SIZE(vert_split_arr) == 2)) {
+ BMLoop *l_new;
BMLoop *l_a, *l_b;
l_a = BM_face_vert_share_loop(f, vert_split_arr[0]);
l_b = BM_face_vert_share_loop(f, vert_split_arr[1]);
/* common case, just cut the face once */
- l_new = NULL;
BM_face_split(bm, f, l_a, l_b, &l_new, NULL, true);
if (l_new) {
if (oflag_center) {
diff --git a/source/blender/bmesh/tools/bmesh_path.c b/source/blender/bmesh/tools/bmesh_path.c
index 9fc1996e51a..060d0dd969b 100644
--- a/source/blender/bmesh/tools/bmesh_path.c
+++ b/source/blender/bmesh/tools/bmesh_path.c
@@ -193,6 +193,14 @@ static void edgetag_add_adjacent(Heap *heap, BMEdge *e1, BMEdge **edges_prev, fl
const int e1_index = BM_elem_index_get(e1);
BM_ITER_ELEM (v, &viter, e1, BM_VERTS_OF_EDGE) {
+
+ /* don't walk over previous vertex */
+ if ((edges_prev[e1_index]) &&
+ (BM_vert_in_edge(edges_prev[e1_index], v)))
+ {
+ continue;
+ }
+
BM_ITER_ELEM (e2, &eiter, v, BM_EDGES_OF_VERT) {
if (!BM_elem_flag_test(e2, BM_ELEM_TAG)) {
/* we know 'e2' is not visited, check it out! */
diff --git a/source/blender/compositor/operations/COM_MapUVOperation.cpp b/source/blender/compositor/operations/COM_MapUVOperation.cpp
index 292f073548a..87ad1d6afa4 100644
--- a/source/blender/compositor/operations/COM_MapUVOperation.cpp
+++ b/source/blender/compositor/operations/COM_MapUVOperation.cpp
@@ -29,6 +29,7 @@ MapUVOperation::MapUVOperation() : NodeOperation()
this->addOutputSocket(COM_DT_COLOR);
this->m_alpha = 0.0f;
this->setComplex(true);
+ setResolutionInputSocketIndex(1);
this->m_inputUVProgram = NULL;
this->m_inputColorProgram = NULL;
@@ -84,8 +85,8 @@ bool MapUVOperation::read_uv(float x, float y, float &r_u, float &r_v, float &r_
else {
float col[4];
m_inputUVProgram->readSampled(col, x, y, COM_PS_BILINEAR);
- r_u = col[0] * width;
- r_v = col[1] * height;
+ r_u = col[0] * m_inputColorProgram->getWidth();
+ r_v = col[1] * m_inputColorProgram->getHeight();
r_alpha = col[2];
return true;
}
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index 079b64f852c..f1c0df23fc9 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -2911,7 +2911,7 @@ static uiBut *ui_but_list_row_text_activate(bContext *C, uiBut *but, uiHandleBut
ARegion *ar = CTX_wm_region(C);
uiBut *labelbut = ui_but_find_mouse_over_ex(ar, event->x, event->y, true);
- if (labelbut && labelbut->type == TEX) {
+ if (labelbut && labelbut->type == TEX && !(labelbut->flag & UI_BUT_DISABLED)) {
/* exit listrow */
data->cancel = true;
button_activate_exit(C, but, data, false, false);
diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c
index 3d7492c9753..7d0fc858180 100644
--- a/source/blender/editors/interface/interface_regions.c
+++ b/source/blender/editors/interface/interface_regions.c
@@ -1901,6 +1901,9 @@ static void uiBlockPicker(uiBlock *block, float rgba[4], PointerRNA *ptr, Proper
case USER_CP_SQUARE_HV:
square_picker(block, ptr, prop, UI_GRAD_HV);
break;
+ default:
+ circle_picker(block, ptr, prop);
+ break;
}
/* mode */
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index dcfb2e5cfbc..d04a67baa50 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -2254,6 +2254,11 @@ void uiTemplateColorPicker(uiLayout *layout, PointerRNA *ptr, const char *propna
but = uiDefButR_prop(block, HSVCUBE, 0, "", 0, 0, WHEEL_SIZE, WHEEL_SIZE, ptr, prop,
-1, 0.0, 0.0, UI_GRAD_HV, 0, "");
break;
+ default:
+ but = uiDefButR_prop(block, HSVCIRCLE, 0, "", 0, 0, WHEEL_SIZE, WHEEL_SIZE, ptr, prop,
+ -1, 0.0, 0.0, 0, 0, "");
+ break;
+
}
if (lock) {
@@ -2293,6 +2298,11 @@ void uiTemplateColorPicker(uiLayout *layout, PointerRNA *ptr, const char *propna
uiDefButR_prop(block, HSVCUBE, 0, "", 0, 4, WHEEL_SIZE, 18, ptr, prop,
-1, softmin, softmax, UI_GRAD_HV + 3, 0, "");
break;
+ default:
+ uiItemS(row);
+ uiDefButR_prop(block, HSVCUBE, 0, "", WHEEL_SIZE + 6, 0, 14, WHEEL_SIZE, ptr, prop,
+ -1, softmin, softmax, UI_GRAD_V_ALT, 0, "");
+ break;
}
}
}
diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c
index 35f17ec22af..eae15e7766d 100644
--- a/source/blender/editors/render/render_internal.c
+++ b/source/blender/editors/render/render_internal.c
@@ -131,7 +131,12 @@ static void image_buffer_rect_update(RenderJob *rj, RenderResult *rr, ImBuf *ibu
ColorManagedViewSettings *view_settings;
ColorManagedDisplaySettings *display_settings;
- if (ibuf->userflags & IB_DISPLAY_BUFFER_INVALID) {
+ /* Exception for exr tiles -- display buffer conversion happens here,
+ * NOT in the color management pipeline.
+ */
+ if (ibuf->userflags & IB_DISPLAY_BUFFER_INVALID &&
+ rr->do_exr_tile == false)
+ {
/* The whole image buffer it so be color managed again anyway. */
return;
}
diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c
index 0a37496c88a..1464d39ff23 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -1,5 +1,5 @@
/*
- * ***** BEGIN GPL LICENSE BLOCK *****
+ * ***** begin GPL LICENSE BLOCK *****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -1901,6 +1901,8 @@ static int sequencer_separate_images_exec(bContext *C, wmOperator *op)
while (seq) {
if ((seq->flag & SELECT) && (seq->type == SEQ_TYPE_IMAGE) && (seq->len > 1)) {
+ Sequence *seq_next;
+
/* remove seq so overlap tests don't conflict,
* see seq_free_sequence below for the real free'ing */
BLI_remlink(ed->seqbasep, seq);
@@ -1944,8 +1946,9 @@ static int sequencer_separate_images_exec(bContext *C, wmOperator *op)
start_ofs += step;
}
+ seq_next = seq->next;
BKE_sequence_free(scene, seq);
- seq = seq->next;
+ seq = seq_next;
}
else {
seq = seq->next;
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c
index 55950579637..ea81bb2b857 100644
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@ -1049,6 +1049,7 @@ static int viewrotate_modal(bContext *C, wmOperator *op, const wmEvent *event)
static void view3d_ensure_persp(struct View3D *v3d, ARegion *ar)
{
RegionView3D *rv3d = ar->regiondata;
+ const bool autopersp = (U.uiflag & USER_AUTOPERSP) != 0;
BLI_assert((rv3d->viewlock & RV3D_LOCKED) == 0);
@@ -1057,9 +1058,11 @@ static void view3d_ensure_persp(struct View3D *v3d, ARegion *ar)
if (rv3d->persp != RV3D_PERSP) {
if (rv3d->persp == RV3D_CAMOB) {
- view3d_persp_switch_from_camera(v3d, rv3d, rv3d->lpersp);
+ /* If autopersp and previous view was an axis one, switch back to PERSP mode, else reuse previous mode. */
+ char persp = (autopersp && RV3D_VIEW_IS_AXIS(rv3d->lview)) ? RV3D_PERSP : rv3d->lpersp;
+ view3d_persp_switch_from_camera(v3d, rv3d, persp);
}
- else if ((U.uiflag & USER_AUTOPERSP) && RV3D_VIEW_IS_AXIS(rv3d->view)) {
+ else if (autopersp && RV3D_VIEW_IS_AXIS(rv3d->view)) {
rv3d->persp = RV3D_PERSP;
}
}
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index 8dc0c6ddaa8..bb0a74f1e09 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -6588,7 +6588,7 @@ static void MaskPointToTransData(Scene *scene, MaskSplinePoint *point,
td->flag = 0;
td->loc = td2d->loc;
- copy_v3_v3(td->center, bezt->vec[1]);
+ mul_v2_m3v2(td->center, parent_matrix, bezt->vec[1]);
copy_v3_v3(td->iloc, td->loc);
memset(td->axismtx, 0, sizeof(td->axismtx));
@@ -6636,7 +6636,7 @@ static void MaskPointToTransData(Scene *scene, MaskSplinePoint *point,
td->flag = 0;
td->loc = td2d->loc;
- copy_v3_v3(td->center, bezt->vec[1]);
+ mul_v2_m3v2(td->center, parent_matrix, bezt->vec[1]);
copy_v3_v3(td->iloc, td->loc);
memset(td->axismtx, 0, sizeof(td->axismtx));
diff --git a/source/blender/makesdna/DNA_particle_types.h b/source/blender/makesdna/DNA_particle_types.h
index 7b06f2a46db..a2a724b6a32 100644
--- a/source/blender/makesdna/DNA_particle_types.h
+++ b/source/blender/makesdna/DNA_particle_types.h
@@ -304,8 +304,8 @@ typedef struct ParticleSystem {
ParticleSpring *fluid_springs;
int tot_fluidsprings, alloc_fluidsprings;
- struct KDTree *tree; /* used for interactions with self and other systems */
- struct BVHTree *bvhtree; /* used for interactions with self and other systems */
+ struct KDTree *tree; /* used for interactions with self and other systems */
+ struct BVHTree *bvhtree; /* used for interactions with self and other systems */
struct ParticleDrawData *pdd;
diff --git a/source/blender/modifiers/intern/MOD_laplaciandeform.c b/source/blender/modifiers/intern/MOD_laplaciandeform.c
index 9ed99fc4aed..8e2a58b2236 100644
--- a/source/blender/modifiers/intern/MOD_laplaciandeform.c
+++ b/source/blender/modifiers/intern/MOD_laplaciandeform.c
@@ -808,7 +808,7 @@ static void copyData(ModifierData *md, ModifierData *target)
modifier_copyData_generic(md, target);
tlmd->vertexco = MEM_dupallocN(lmd->vertexco);
- tlmd->cache_system = MEM_dupallocN(lmd->cache_system);
+ tlmd->cache_system = NULL;
}
static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c
index 833acb68a7c..0d09fa0401e 100644
--- a/source/blender/render/intern/source/convertblender.c
+++ b/source/blender/render/intern/source/convertblender.c
@@ -5036,6 +5036,8 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp
if (!allow_render_object(re, obd, nolamps, onlyselected, actob))
continue;
+ copy_m4_m4(obd->obmat, dob->mat);
+
if (allow_render_dupli_instance(re, dob, obd)) {
ParticleSystem *psys;
ObjectRen *obr = NULL;
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index 29ba7b09e5c..74768f925f8 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -1816,7 +1816,7 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *UNUSED(ar
/* label for 'a' bugfix releases, or 'Release Candidate 1'...
* avoids recreating splash for version updates */
- if (1) {
+ if (false) {
/* placed after the version number in the image,
* placing y is tricky to match baseline */
int x = 260 - (2 * UI_DPI_WINDOW_FAC);
@@ -1870,6 +1870,8 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *UNUSED(ar
split = uiLayoutSplit(layout, 0.0f, FALSE);
col = uiLayoutColumn(split, FALSE);
uiItemL(col, IFACE_("Links"), ICON_NONE);
+ uiItemStringO(col, IFACE_("Support an Open Animation Movie"), ICON_URL, "WM_OT_url_open", "url",
+ "http://cloud.blender.org/gooseberry");
uiItemStringO(col, IFACE_("Donations"), ICON_URL, "WM_OT_url_open", "url",
"http://www.blender.org/foundation/donation-payment/");
uiItemStringO(col, IFACE_("Credits"), ICON_URL, "WM_OT_url_open", "url",
@@ -1879,8 +1881,6 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *UNUSED(ar
uiItemStringO(col, IFACE_("Manual"), ICON_URL, "WM_OT_url_open", "url",
"http://wiki.blender.org/index.php/Doc:2.6/Manual");
uiItemStringO(col, IFACE_("Blender Website"), ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org");
- uiItemStringO(col, IFACE_("User Community"), ICON_URL, "WM_OT_url_open", "url",
- "http://www.blender.org/community/user-community");
if (STREQ(STRINGIFY(BLENDER_VERSION_CYCLE), "release")) {
BLI_snprintf(url, sizeof(url), "http://www.blender.org/documentation/blender_python_api_%d_%d"
STRINGIFY(BLENDER_VERSION_CHAR) "_release",