Revision: 47760
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47760
Author:   campbellbarton
Date:     2012-06-11 20:50:57 +0000 (Mon, 11 Jun 2012)
Log Message:
-----------
fix for crash drawing grease pencil attached to a tracking marker.
also fix for use of uninitialized variable for ED_clip_point_undistorted_pos().

Modified Paths:
--------------
    trunk/blender/source/blender/editors/include/ED_clip.h
    trunk/blender/source/blender/editors/space_clip/clip_draw.c
    trunk/blender/source/blender/editors/space_clip/clip_editor.c

Modified: trunk/blender/source/blender/editors/include/ED_clip.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_clip.h      2012-06-11 
20:32:34 UTC (rev 47759)
+++ trunk/blender/source/blender/editors/include/ED_clip.h      2012-06-11 
20:50:57 UTC (rev 47760)
@@ -69,9 +69,9 @@
 void ED_clip_update_frame(const struct Main *mainp, int cfra);
 int ED_clip_view_selection(struct SpaceClip *sc, struct ARegion *ar, int fit);
 
-void ED_clip_point_undistorted_pos(SpaceClip * sc, float co[2], float nco[2]);
+void ED_clip_point_undistorted_pos(SpaceClip * sc, const float co[2], float 
r_co[2]);
 void ED_clip_point_stable_pos(struct bContext *C, float x, float y, float *xr, 
float *yr);
-void ED_clip_point_stable_pos__reverse(SpaceClip * sc, ARegion *ar, float 
co[2], float nco[2]);
+void ED_clip_point_stable_pos__reverse(SpaceClip * sc, ARegion *ar, const 
float co[2], float r_co[2]);
 void ED_clip_mouse_pos(struct bContext *C, struct wmEvent *event, float co[2]);
 
 int ED_space_clip_texture_buffer_supported(struct SpaceClip *sc);

Modified: trunk/blender/source/blender/editors/space_clip/clip_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_clip/clip_draw.c 2012-06-11 
20:32:34 UTC (rev 47759)
+++ trunk/blender/source/blender/editors/space_clip/clip_draw.c 2012-06-11 
20:50:57 UTC (rev 47760)
@@ -1467,9 +1467,11 @@
 
                                if (track) {
                                        int framenr = sc->user.framenr;
-                                       MovieTrackingMarker *marker = 
BKE_tracking_exact_marker(track, framenr);
-
-                                       glTranslatef(marker->pos[0], 
marker->pos[1], 0.0f);
+                                       /* don't get the exact marker since it 
may not exist for the frame */
+                                       MovieTrackingMarker *marker = 
BKE_tracking_get_marker(track, framenr);
+                                       if (marker) {
+                                               glTranslatef(marker->pos[0], 
marker->pos[1], 0.0f);
+                                       }
                                }
                        }
 

Modified: trunk/blender/source/blender/editors/space_clip/clip_editor.c
===================================================================
--- trunk/blender/source/blender/editors/space_clip/clip_editor.c       
2012-06-11 20:32:34 UTC (rev 47759)
+++ trunk/blender/source/blender/editors/space_clip/clip_editor.c       
2012-06-11 20:50:57 UTC (rev 47760)
@@ -425,9 +425,9 @@
        return TRUE;
 }
 
-void ED_clip_point_undistorted_pos(SpaceClip *sc, float co[2], float nco[2])
+void ED_clip_point_undistorted_pos(SpaceClip *sc, const float co[2], float 
r_co[2])
 {
-       copy_v2_v2(nco, co);
+       copy_v2_v2(r_co, co);
 
        if (sc->user.render_flag & MCLIP_PROXY_RENDER_UNDISTORT) {
                MovieClip *clip = ED_space_clip(sc);
@@ -436,13 +436,13 @@
 
                ED_space_clip_size(sc, &width, &height);
 
-               nco[0] *= width;
-               nco[1] *= height * aspy;
+               r_co[0] *= width;
+               r_co[1] *= height * aspy;
 
-               BKE_tracking_invert_intrinsics(&clip->tracking, nco, nco);
+               BKE_tracking_invert_intrinsics(&clip->tracking, r_co, r_co);
 
-               nco[0] /= width;
-               nco[1] /= height * aspy;
+               r_co[0] /= width;
+               r_co[1] /= height * aspy;
        }
 }
 
@@ -451,7 +451,7 @@
        ARegion *ar = CTX_wm_region(C);
        SpaceClip *sc = CTX_wm_space_clip(C);
        int sx, sy, width, height;
-       float zoomx, zoomy, pos[3] = {0.0f, 0.0f, 0.0f}, imat[4][4];
+       float zoomx, zoomy, pos[3], imat[4][4];
 
        ED_space_clip_zoom(sc, ar, &zoomx, &zoomy);
        ED_space_clip_size(sc, &width, &height);
@@ -460,6 +460,7 @@
 
        pos[0] = (x - sx) / zoomx;
        pos[1] = (y - sy) / zoomy;
+       pos[2] = 0.0f;
 
        invert_m4_m4(imat, sc->stabmat);
        mul_v3_m4v3(pos, imat, pos);
@@ -484,7 +485,7 @@
  * \brief the reverse of ED_clip_point_stable_pos(), gets the marker region 
coords.
  * better name here? view_to_track / track_to_view or so?
  */
-void ED_clip_point_stable_pos__reverse(SpaceClip *sc, ARegion *ar, float 
co[2], float nco[2])
+void ED_clip_point_stable_pos__reverse(SpaceClip *sc, ARegion *ar, const float 
co[2], float r_co[2])
 {
        float zoomx, zoomy;
        float pos[3];
@@ -496,12 +497,13 @@
        ED_space_clip_zoom(sc, ar, &zoomx, &zoomy);
 
        ED_clip_point_undistorted_pos(sc, co, pos);
+       pos[2] = 0.0f;
 
        /* untested */
        mul_v3_m4v3(pos, sc->stabmat, pos);
 
-       nco[0] = (pos[0] * width  * zoomx) + (float)sx;
-       nco[1] = (pos[1] * height * zoomy) + (float)sy;
+       r_co[0] = (pos[0] * width  * zoomx) + (float)sx;
+       r_co[1] = (pos[1] * height * zoomy) + (float)sy;
 }
 
 void ED_clip_mouse_pos(bContext *C, wmEvent *event, float co[2])

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to