[MPlayer-cvslog] r28473 - trunk/libass/ass_render.c

eugeni subversion at mplayerhq.hu
Sat Feb 7 02:13:12 CET 2009


Author: eugeni
Date: Sat Feb  7 02:13:11 2009
New Revision: 28473

Log:
In case of several \move or \pos in one line, prefer the first one.

Patch by Grigori G, greg at chown ath cx.

Modified:
   trunk/libass/ass_render.c

Modified: trunk/libass/ass_render.c
==============================================================================
--- trunk/libass/ass_render.c	Sat Feb  7 02:13:07 2009	(r28472)
+++ trunk/libass/ass_render.c	Sat Feb  7 02:13:11 2009	(r28473)
@@ -813,10 +813,12 @@ static char* parse_tag(char* p, double p
 		else k = ((double)(t - t1)) / delta_t;
 		x = k * (x2 - x1) + x1;
 		y = k * (y2 - y1) + y1;
-		render_context.pos_x = x;
-		render_context.pos_y = y;
-		render_context.detect_collisions = 0;
-		render_context.evt_type = EVENT_POSITIONED;
+		if (render_context.evt_type != EVENT_POSITIONED) {
+			render_context.pos_x = x;
+			render_context.pos_y = y;
+			render_context.detect_collisions = 0;
+			render_context.evt_type = EVENT_POSITIONED;
+		}
 	} else if (mystrcmp(&p, "frx")) {
 		double val;
 		if (mystrtod(&p, &val)) {
@@ -892,10 +894,12 @@ static char* parse_tag(char* p, double p
 		v2 = strtol(p, &p, 10);
 		skip(')');
 		mp_msg(MSGT_ASS, MSGL_DBG2, "pos(%d, %d)\n", v1, v2);
-		render_context.evt_type = EVENT_POSITIONED;
-		render_context.detect_collisions = 0;
-		render_context.pos_x = v1;
-		render_context.pos_y = v2;
+		if (render_context.evt_type != EVENT_POSITIONED) {
+			render_context.evt_type = EVENT_POSITIONED;
+			render_context.detect_collisions = 0;
+			render_context.pos_x = v1;
+			render_context.pos_y = v2;
+		}
 	} else if (mystrcmp(&p, "fad")) {
 		int a1, a2, a3;
 		long long t1, t2, t3, t4;



More information about the MPlayer-cvslog mailing list