Fix T38873: Crashing on undo of ocean modifier.

Issue of this bug is that most part of fftw is not thread safe, only compute-intensive fftw_execute & co are.

Since smoke was affected by this issue as well, a global fftw mutex was added to BLI_threads.
Audaspace also uses fftw in one of its readers (AUD_BandPassReader.cpp),
but this is not an issue currently since this code is disabled in CMake/scons files.

There was another threading issue with smoke, we need to copy dm used by emit_from_derivedmesh(),
as it is modified by this func.

Reviewers: sergey, brecht

Reviewed By: brecht

CC: brecht

Differential Revision: https://developer.blender.org/D374
Fix for collapse ignoring pinned panels
Cycles: remove ccl_align macro for GPU as unused and unsupported in OpenCL
Found another place where nproc can be used

/proc/cpuinfo is a Linux-specific thing. Using GNU [[ http://www.gnu.org/software/coreutils/manual/html_node/nproc-invocation.html | nproc ]] should be more portable.

Reviewers: mont29

Reviewed By: mont29

Differential Revision: https://developer.blender.org/D377
Fix for problem with fly speed, caused by other speed tweaks.
Fix T37334: Better "internal links" function for muting and node disconnect.

Implements a more flexible internal connect function for standard nodes
(compositor, shader, texture). Allow feasible datatype connections by
priority.

The priorities for common datatypes in compositor, shader and texture
nodes are encoded in a simple function. Certain impossible connections
(e.g. color -> cycles shader) are excluded by giving them -1 priority.

Priority overrides link status: If a higher priority input can be found,
this will be used regardless of link status. Link status only comes into
play for inputs with same priority.

Reviewers: brecht

CC: sebastian_k

Differential Revision: https://developer.blender.org/D356
Switch Dyntopo enable back to Ctrl-D.

Grease pencil straight line can still be enabled by first pressing D
then Ctrl and looks like there is no final consensus on key shortcut.
Better leave this as before and solve after release.
Fix for own mistake: arc diff swallowed a commit somehow, breaking
compilation.
Fix issue with texture painting: Tex slot scale was being applied twice.
Fixes for view3d rotate axis snapping

- turntable would lockup when snapping, not allowing further rotation.
- userpref rotate-about-selection was ignored (causing strange panning)
UI: Splash text for 'a' releases and the upcoming 'Release Candidate'

This avoids re-uploading splashes for minor version changes.

Enabling now so any glitches can be found before we do the real rc.
UI: "Option" panel in 'Particle Edit' mode was appearing in Tools and GP tab, now only show in Tools.

Patch by Kévin Dietrich.

Reviewed by: dingto
Differential Revision: https://developer.blender.org/D378
Debug function to check valid bmesh now detects duplicate edges
Fix for bmesh triangulate creating duplicate edges
Fix T36496: unwanted behavior with NLA strip blend mode Replace.

If you have two overlapping NLA strips it automatically blends between them.
However it was also blending between the first strip and the rest pose
(e.g. 0,0,0 for locations and 1,1,1 for scale).

This is ok if the blend mode is Add or Multiply since then you are adding onto
the rest pose, but for Replace you want to be able to mix between two poses
and not take the rest pose into account at all.

What this does is that to not do any blending for the first strip if it has
blend mode Replace. If someone wants the old behavior (from bugfix commit
27d792fa9ca1) they can still make an action with the rest pose and use that
as the first strip.
Icon for LineStyle

patch T37008 from Michael P.
Scons: remove lcms reference
Fix T38941: Laplacian Deform crashes on OSX

When vgroup was invalid somehow (e.g. empty, as in this case) and bind could not happen, code was dereferencing a NULL pointer...
Fix for regression noted in T38942: Blender Internal rendering can lead
to wrong obmats of nested dupli objects.

Restoring obmats after BI nested dupli object rendering has to happen
in reverse order, so higher level omats are applied last.
Fix F62828. UV stitch code did not handle non manifold edges very well.
This made loops in linked lists of uvedges from duplicate members
causing a hang. Now check all previous links before adding a new one. It
is not much slower in practice because non-manifolds are not that
frequent.