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-02-17 10:58:50 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2014-02-17 10:58:50 +0400
commit1776cb92441b180c733ce13bbfcb1058bb46e6ae (patch)
tree4e27478d5d76a2583054a05d5111690bd090b492 /source/blender/editors/transform/transform.c
parent9c79fd1193e796c351f664724d8ab7232b57cde5 (diff)
Fix T38670: Mask transform without a movieclip crashes
Disable transform and mask display when there's no active clip. It's not a matter of returning fallback dimensions if there's no slip, it's also matter of making it so stabilization and distortion routines are aware of clip == NULL which is really crappy. Also almost all the operators are disabled in clip editor without active clip already anyway. Also tweaked header UI a bit to not display mask stuff when there's no active clip,
Diffstat (limited to 'source/blender/editors/transform/transform.c')
-rw-r--r--source/blender/editors/transform/transform.c34
1 files changed, 21 insertions, 13 deletions
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 4269e18734e..e5c8877f076 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -414,26 +414,34 @@ void projectIntViewEx(TransInfo *t, const float vec[3], int adr[2], const eV3DPr
SpaceClip *sc = t->sa->spacedata.first;
if (t->options & CTX_MASK) {
- /* not working quite right, TODO (see above too) */
- float aspx, aspy;
- float v[2];
+ MovieClip *clip = ED_space_clip_get_clip(sc);
- ED_space_clip_get_aspect(sc, &aspx, &aspy);
+ if (clip) {
+ /* not working quite right, TODO (see above too) */
+ float aspx, aspy;
+ float v[2];
- copy_v2_v2(v, vec);
+ ED_space_clip_get_aspect(sc, &aspx, &aspy);
- v[0] = v[0] / aspx;
- v[1] = v[1] / aspy;
+ copy_v2_v2(v, vec);
- BKE_mask_coord_to_movieclip(sc->clip, &sc->user, v, v);
+ v[0] = v[0] / aspx;
+ v[1] = v[1] / aspy;
- v[0] = v[0] / aspx;
- v[1] = v[1] / aspy;
+ BKE_mask_coord_to_movieclip(sc->clip, &sc->user, v, v);
- ED_clip_point_stable_pos__reverse(sc, t->ar, v, v);
+ v[0] = v[0] / aspx;
+ v[1] = v[1] / aspy;
- adr[0] = v[0];
- adr[1] = v[1];
+ ED_clip_point_stable_pos__reverse(sc, t->ar, v, v);
+
+ adr[0] = v[0];
+ adr[1] = v[1];
+ }
+ else {
+ adr[0] = 0;
+ adr[1] = 0;
+ }
}
else if (t->options & CTX_MOVIECLIP) {
float v[2], aspx, aspy;