[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47760] trunk/blender/source/blender/ editors: fix for crash drawing grease pencil attached to a tracking marker.

Campbell Barton ideasman42 at gmail.com
Mon Jun 11 22:50:58 CEST 2012


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])




More information about the Bf-blender-cvs mailing list