bone renaming
* Renaming F-Curves now checks if the corresponding F-Curve's group can also be
renamed accordingly.
* Changed the RNA updates for bone renaming so that they properly update the
channel lists
WM_keymap_add_item(keymap, "TEXT_OT_insert", KM_TEXTINPUT, KM_ANY, KM_ANY, 0);
<--- this catch-all key map item at the end of the Text Editor keymap was
gobbling all the key events for user-defined hotkeys added after it in the
keymap. This includes all hotkeys for new operators defined by addons (via
keymap.keymap_items.new()).
As a slightly hacky workaround for this, I've added an extra parameter to
keymap_items.new() which will force the newly added item to get added to the
start of the key map items list (i.e. with top priority). To enable, simply add,
head=True to keymap_items.new() calls. For example:
keymap.keymap_items.new("MY_OP_my_operator_id", type='E', value='PRESS',
alt=True, head=True)
This should be useful for cases where there are similar catch-alls, where it is
necessary to insert our item before the offending catch-all (without knowing
which one it is). However, in general, it's recommended not to use this, unless
all other methods (inlcuding choosing another key combination if your first
choice doesn't work) fails.
Around Frame is enabled
It turns out that the final "rebuild pose" at the end of each ghost drawing step
was at fault here, as it resulted in bones referring to a different set of
constraints after each ghost drawing step. However, most of the time, these new
references pointed to non-existent locations, causing the segfaults.
To fix this, I've removed this last rebuild step, which seems to work fine (no
major problems seem to arise from this). Also, to ensure that the other object
parameters have not changed (as a result of the reevaluation that needs to go
on), we now evaluate the object once more after all the ghost drawing (but
before final restore) so that object parameters (and potentially sub-data) are
all restored to their original values.
An upside of removing the final rebuild step is that "In Range" and "On
Keyframe" ghosting options now work with proxies again. Previously, trying to
move bones (but without autokey enabled) would mean that bones would snap back
to their unkeyed positions.
- Add check for header field in BMP decoder. This is needed to distinguish
whether file is indeed BMP image or not.
Without this check Blender could easily crash when it'll try to load
non-BMP image.
Tested with files from own HDD, but all of them has got BM header field,
more testing would be welcome.
- Made Jpeg2000 aware of J2K codec. Originally was needed to verify .j2c
files here in the studio, but having support of this codec would be
nice in general.
Currently supports only reading in this codec, writing would still
using jp2 codec.
- Even preserves thickness but can give unsightly loops
- Smooth gives nicer shape but can give unsightly feather/spline mismatch for 'S' shapes created by beziers.
This is an example where smooth works much nicer.
http://www.graphicall.org/ftp/ideasman42/mask_compare.png
- Make FFmpeg initialization called from creator, not from functions
which requires FFmpeg. Makes it easier to follow when initialization
should happen.
- Enable DNxHD codec. It was commented a while ago due to some strange
behavior on some platforms. Re-tested it on Linux and Windows and
it seemd to be working quite nice. Would let it be tested further,
if it wouldn't be stable enough, easy to comment it again.
- Make non-error messages from writeffmpeg.c printed only if ffmpeg
debug argument was passed to blender. Reduces console pollution
with messages which are not useful for general troubleshooting.
Error messages would still be printed to the console.
- Show FFmpeg error message when video stream failed to allocate.
makes it easier to understand what exactly is wrong from Blender
interface, no need to restart blender with FFmpeg debug flag and
check for console messages.
Used custom log callback for this which stores last error message
in static variable. This is not thread safe, but with current
design FFmpeg routines could not be called form several threads
anyway, so think it's fine solution/
Its unlikely you want to do short -> int, int -> float etc, conversion during swapping (if its needed we could have a non type checking macro).
Double that the optimized assembler outbut using SWAP() remains unchanged from before.
This exposed quite a few places where redundant type conversion was going on.
Also remove curve.c's swapdata() and replace its use with swap_v3_v3()