[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