Commit Graph

2374 Commits

Author SHA1 Message Date
Sergey Sharybin
ac0638f681 Merging r58148 through r58165 from trunk into soc-2013-depsgraph_mt 2013-07-11 08:25:37 +00:00
Campbell Barton
3d13f22e89 no need to copy mat4x4 -> 3x3 in mat4_to_scale 2013-07-10 12:12:58 +00:00
Sergey Sharybin
92835d3030 Merging r58112 through r58124 from trunk into soc-2013-depsgraph_mt 2013-07-09 19:22:26 +00:00
Sergey Sharybin
677e136e4b Partial revert of rev58110
There's one thing we didn't foresee from the beginning,
which is apparently TLS is only available in OSX starting
from version 10.7, and we still do support of 10.6.

After recent Brecht's changes about locked viewport
while initializing BI render this TLS is not needed
in trunk anymore. So reverting this chunk of base
iteration to use static variable. But leaving all the
other static variables warped into context still, it
should help a bit in the future refactor.

Real fix would be to have some kind of graph context
evaluation structure which would be passing to update
routines (which will solve threaded mballs update) and
making depsgraph responsible for getting a motherball.
But this is all for GSoC project.
2013-07-09 18:38:33 +00:00
Sergey Sharybin
643d709d14 Merging r58073 through r58111 from trunk into soc-2013-depsgraph_mt 2013-07-09 08:44:06 +00:00
Sergey Sharybin
86546ca42d Fixed more threading issues with metaballs
This time issue was caused by static variables used in
BKE_scene_base_iter_next function.

Change is not so much ultimate actually, but didn't
find more clear solution for now. So the changes are:

- Wrap almost all the static variables into own context-
  like structure, which is owned by the callee function
  and getting passed to the iteration function.

- Recursion detection wasn't possible with such approach,
  so recursion detection still uses static in_next_object
  variable, but which is now stored in thread local
  storage (TLS, or thread variable if this names are more
  clear for you).

This makes code thread-safe, but for sure final solution
shall be completely different. Ideally, dependency graph
shall be possible to answer on question "which object is
a motherball for this metaball". This will avoid iterating
via all the bases, objects and duplis just to get needed
motherball.

Further, metaball evaluation ideally will use the same
kind of depsgraph filtering, which will get result for
question like "which objects belongs to this group of
metaballs".

But this ideal things are to be solved in Joshua's and
mind GSoC projects.

Tested on linux (gcc and clang) and windows (msvc2008),
hopefully no compilation error will happen.

Thanks to Brecht for reviewing the change and getting
feedback for other possible ways we've dicussed!
2013-07-09 08:23:01 +00:00
Campbell Barton
d4ff53b760 fix [#36066] crash when Tab out text object
the way Curve.len is used at the moment is really stupid, calculate string size on save for now, but should really store the length in bytes and total number of characters.
2013-07-09 06:21:45 +00:00
Brecht Van Lommel
3ce280e825 Fix #35960, #36044: blender internal viewport rendering crash while editing data.
Now the viewport rendering thread will lock the main thread while it is exporting
objects to render data. This is not ideal if you have big scenes that might block
the UI, but Cycles does the same, and it's fairly quick because the same evaluated
mesh can be used as for viewport drawing. It's the only way to get things stable
until the thread safe dependency graph is here.

This adds a mechanism to the job system for jobs to lock the main thread, using a
new 'ticket mutex lock' which is a mutex lock that gives priority to the first
thread that tries to lock the mutex.

Still to solve: undo/redo crashes.
2013-07-08 17:56:51 +00:00
Sergey Sharybin
8097e9d235 Merging r57989 through r58072 from trunk into soc-2013-depsgraph_mt 2013-07-08 11:29:08 +00:00
Campbell Barton
a02d256f5e fix [#35987] bevel gives nan vertices
The line intersection function bevel uses could give nan intersections.
2013-07-05 00:30:00 +00:00
Sergey Sharybin
bae2a2c3b2 Added missing mutex lock around do_exit assignment in task scheduler
Without this lock it's possible that thread_wait_pop will stuck
at the point where it await for new task in the queue but in
fact exit was requested already.

This ended up in deadlock in some circumstances. Really random
because it totally depends on timings.
2013-07-02 19:23:09 +00:00
Sergey Sharybin
8c67e9d799 Merging r57925 through r57933 from trunk into soc-2013-depsgraph_mt 2013-07-02 19:18:10 +00:00
Campbell Barton
418011907c remove nan copyrights from code added since blender become opensource (copy paste errors), also remove BKE_script.h 2013-07-02 10:14:59 +00:00
Sergey Sharybin
e00f5d1c0a Task scheduler ported to C
Patch by Brecht, which in original version also
gets rid of ThreadedWorker in favor of new task
scheduler and ports some areas to it.

Kudos to Brecht for this work!
2013-07-01 21:23:20 +00:00
Campbell Barton
eba9b4f6c1 fix for out of bounds read in BLI_path_rel 2013-06-27 20:47:59 +00:00
Campbell Barton
bb42703ea3 - remove edge collapse loop operator (now replaced by dissolve).
- fix missing null pointer check from own recent changes.
- add asserts if BLI path functions are given wrong id's
2013-06-27 01:10:19 +00:00
Campbell Barton
a050ddf279 remove unused callback 2013-06-26 03:42:45 +00:00
Campbell Barton
fad1da062d correct typos in comments. 2013-06-25 22:58:23 +00:00
Brecht Van Lommel
40d4dfaba8 Fix #35824: finding missing files not working correct for filepaths with special
characters on Windows.

Replaced some uses of stat() by BLI_stat() to properly handle such filepaths.
2013-06-25 14:48:30 +00:00
Campbell Barton
f8c37b083c remove own optimization in scanfill, in rare cases it caused problems, reported as [#35861] 2013-06-24 18:22:59 +00:00
Campbell Barton
adba695209 remove vec_rot_to_mat3(), replace with axis_angle_normalized_to_mat3() 2013-06-22 23:58:52 +00:00
Campbell Barton
1a50be2d94 Make edgehash and ghash use the same limit for expanding buckets, r26206 changed ghash.
double checked and r26206 does indeed give a speedup, so change for edgehash too.
2013-06-22 22:30:56 +00:00
Campbell Barton
1fb980e7df reduce sign conversion comparisons for smallhash and tweak warnings elsewhere. 2013-06-22 20:20:06 +00:00
Dalai Felinto
d23bf09712 build fix for old gccs (after rev.57620)
enabling the new pragmas only when gcc >= 4.6
gcc 4.2.1 here (OSX)
2013-06-22 20:00:17 +00:00
Brecht Van Lommel
2df82a2a2b Code cleanup: fix some vs2012 compiler warnings 2013-06-21 12:33:19 +00:00
Campbell Barton
2efea8cf03 reduce sign comparisons for ghash and add more strict warnings for gcc. 2013-06-20 19:39:29 +00:00
Campbell Barton
c721d82f25 move sort from vert/edge/face into mesh menu only (sorting isn't such a common operation).
correct own recently added assert.
2013-06-20 19:09:18 +00:00
Campbell Barton
998101763a correct for own regressions when refactoring select-path, was using heap popmin incorrectly. 2013-06-19 19:59:49 +00:00
Jürgen Herrmann
3c722f037a Fix for own mistake in r57555 :-(
Add include to autoexec.c instead of BLI_path_util.h

Thanks Bastien Montagne for the hint.
2013-06-18 19:09:49 +00:00
Jürgen Herrmann
f2abb213d2 Compile fix for r57554 missing include "BLI_string.h" in BLI_path_util.h 2013-06-18 18:42:29 +00:00
Campbell Barton
60acf217f8 fix for editmesh transform connected,
the distance checks could get into a feedback loop so that the result depended on the order of verts/edges.

now you can randomize vert/edge/faces and get exactly the same results.

also made some internal improvements,
- used fixed sized arrays (no need to realloc).
- use vertex tag flags rather then a visit-hash.
- remove 'tots' array that did nothing (not sure why it was added).
2013-06-17 16:55:05 +00:00
Campbell Barton
c9341334b1 add BLI_strcpy_rlen, replace strcat, which was used in misleading way. 2013-06-16 08:29:02 +00:00
Campbell Barton
1fe21f29ec utility function for calculating smooth groups from sharp edges: BKE_mesh_calc_smoothgroups 2013-06-14 08:28:27 +00:00
Brecht Van Lommel
8b2c5e693c Fix #35634: weight paint did not do z-buffer culling anymore on Windows after recent change to size of bool. 2013-06-13 17:11:09 +00:00
Campbell Barton
a91964e0e2 code cleanup: use boolean for intersection functions. 2013-06-09 21:25:27 +00:00
Campbell Barton
9b5be450d8 text rendering: shadow offset was causing text to clip, now check for clipping without the shadow since not-drawing characters because of subtle effect is rather annoying. 2013-06-06 21:43:52 +00:00
Campbell Barton
a6b505ef0b style cleanup 2013-06-06 06:02:46 +00:00
Campbell Barton
99b55ef6eb add asserts when scanfilling or triangulating with zero length normal. 2013-06-02 22:54:00 +00:00
Campbell Barton
c431df8f77 remove null checks for list functions, all hard asserts so we would have noticed problems already. 2013-05-30 19:05:46 +00:00
Brecht Van Lommel
fe76c06b30 UI: support 3 digit hex colors like HTML, e.g. #123 becomes #112233.
Patch #35359 by Forest Ka.
2013-05-30 09:48:17 +00:00
Campbell Barton
9fb3d3e032 remove redundant includes from cmake and scons. 2013-05-30 02:16:22 +00:00
Campbell Barton
65baf6ca5c remove duplicate sys-types headers.
also change define checks in BLI_sys_types.h (was warning a lot in linux about unused defines).
2013-05-29 21:38:23 +00:00
Jürgen Herrmann
88fd394dba Addition to r57094 by Campbell:
VS 2010 and 2012 have stdint.h so we should use them for consistency instead of defining the inttypes ourselves.
Added if condition for for stdint.h include for >= VS 2010

P.S.: Compiled and tested on VS2008-2012 and MinGW with scons and CMake ;)
2013-05-29 18:23:59 +00:00
Sergey Sharybin
9e05f6571f Make sure bool will always have the same size in C and C++
There were an issues with data structures defined in headers
and being used by both C and C++ on systems with stdbool
unavailable.

This happened because bool in this case will be defined as
unsigned int, which is 4 bytes. But C++'s bool is only 1
byte and this lead to alignment issues.

Now bool is always 1 byte, also made sure there's no situation
like bool foo = BitField & BitFlag, which could give overflow
issues. Use (BitField & BitFlag) != 0 instead.

Fixes #35553: Compositor broken (Backdrop & Preview)
2013-05-29 11:49:39 +00:00
Campbell Barton
b5cb9e8810 add BLI_sys_types.h 2013-05-28 19:42:19 +00:00
Campbell Barton
225c5fee6b move BLO_sys_types.h -> BLI_sys_types.h (it had nothing todo with loading)
remove MEM_sys_types.h which was a duplicate.
2013-05-28 19:35:26 +00:00
Campbell Barton
c7a46d5369 reorder includes for win 2013-05-28 13:37:47 +00:00
Campbell Barton
a70fa65592 optimize mirror merging, remove array reallocation, replace with fixed size arrays. 2013-05-27 20:11:12 +00:00
Campbell Barton
44b3735078 fix error in own recent commit, also other minor changes. 2013-05-27 18:51:31 +00:00
Campbell Barton
ec8d277c64 BLI_math rename functions:
- mult_m4_m4m4 -> mul_m4_m4m4
- mult_m3_m3m4 -> mul_m3_m3m4

these temporary names were used to avoid problems when argument order was switched.
2013-05-26 18:36:25 +00:00