Emmanuele Bassi
a545f66a5c
master clock: Improve the timeline advancement protection
...
The commit 1c69c61745ed510f0b6ab16cb963ca01994cb9fc which improved the
protection against timeline removals during the master clock advancement
was only doing half the job - and actually broke the chaining of
animations inside the ::completed signal.
We cannot simply take a reference on the timelines and still use the list
held by the master clock because the do_tick() might result in the
creation of a new timeline, which gets added at the end of the list with
no reference increase and thus gets disposed at the end of the iteration.
We also cannot steal the master clock timelines list because a timeline
might be removed as the direct result of do_tick() and remove_timeline()
would not find the timeline, failing and leaving a dangling pointer
behind.
For this reason we copy the list of timelines out of the one that the
Master Clock holds, take a reference on each timeline, advance them all,
release the reference and free the list.
2010-01-21 23:54:25 +00:00
..
2010-01-14 14:10:05 +00:00
2009-10-16 18:58:50 +01:00
2009-10-16 18:58:50 +01:00
2009-10-16 18:58:50 +01:00
2010-01-12 17:10:15 +00:00
2009-10-18 17:11:42 +01:00
2009-11-06 11:48:42 +00:00
2009-10-16 18:58:50 +01:00
2010-01-19 16:10:23 +00:00
2010-01-15 14:48:42 +00:00
2010-01-08 20:19:49 +00:00
2009-12-20 17:33:51 +00:00
2009-11-13 15:01:17 +00:00
2009-01-20 18:47:50 +00:00
2009-05-27 13:01:31 +01:00
2009-05-27 13:01:31 +01:00
2009-11-24 16:59:24 +00:00
2009-08-25 12:16:41 +01:00
2010-01-08 20:19:49 +00:00
2009-10-16 18:58:47 +01:00
2009-01-23 13:08:46 +00:00
2009-03-16 15:00:55 +00:00
2009-06-19 16:38:35 +01:00
2009-06-19 16:38:35 +01:00
2009-01-20 16:42:49 +00:00
2009-03-16 15:00:55 +00:00
2009-02-20 12:09:07 +00:00
2009-11-19 11:51:21 +00:00
2009-06-19 16:38:35 +01:00
2009-06-19 16:38:35 +01:00
2009-06-19 16:38:35 +01:00
2009-06-19 16:38:35 +01:00
2009-11-06 11:39:30 +00:00
2009-01-20 16:42:49 +00:00
2009-01-20 16:20:54 +00:00
2008-12-05 13:13:37 +00:00
2009-11-05 12:26:10 +00:00
2009-10-14 11:31:29 +01:00
2009-11-17 21:32:17 +00:00
2009-01-14 15:03:30 +00:00
2009-12-23 10:36:46 +00:00
2009-12-13 01:15:02 +00:00
2009-12-04 16:54:22 +00:00
2009-12-04 16:54:22 +00:00
2009-06-15 12:41:13 +01:00
2009-05-14 15:53:59 +01:00
2009-02-20 12:09:07 +00:00
2009-03-16 15:00:55 +00:00
2009-10-22 15:51:06 +01:00
2009-03-16 15:00:55 +00:00
2009-10-26 16:29:31 +00:00
2009-06-29 21:37:02 +02:00
2009-09-22 17:55:04 +01:00
2009-05-28 17:18:13 +01:00
2009-09-24 21:41:49 +01:00
2009-07-21 09:22:38 +01:00
2009-05-29 12:40:23 +01:00
2007-08-20 20:16:15 +00:00
2009-12-10 22:20:36 +00:00
2009-12-10 22:20:36 +00:00
2010-01-15 17:06:56 +00:00
2010-01-15 17:06:56 +00:00
2009-10-14 11:31:30 +01:00
2009-10-14 11:31:29 +01:00
2009-03-10 12:38:04 +00:00
2009-03-10 12:38:04 +00:00
2009-12-03 15:38:05 +00:00
2009-10-14 11:31:30 +01:00
2009-03-16 15:40:18 +00:00
2009-03-16 15:40:18 +00:00
2010-01-18 12:42:42 +00:00
2009-04-08 18:19:46 +01:00
2009-10-07 12:53:19 +01:00
2008-10-30 17:04:34 +00:00
2009-10-16 15:57:21 +01:00
2009-01-08 11:15:09 +00:00
2009-08-12 15:31:16 +01:00
2008-06-10 06:37:46 +00:00
2008-08-05 10:54:40 +00:00
2009-12-23 10:37:10 +00:00
2009-12-13 01:23:54 +00:00
2009-10-14 11:31:26 +01:00
2009-12-02 11:36:25 +00:00
2009-05-12 16:31:41 +01:00
2009-02-14 11:31:00 +00:00
2010-01-12 15:58:27 +00:00
2009-12-07 19:00:55 +00:00
2010-01-04 12:01:51 +00:00
2010-01-21 23:54:25 +00:00
2009-07-10 11:38:42 +01:00
2010-01-11 13:04:16 +00:00
2010-01-11 13:04:16 +00:00
2009-05-05 20:18:28 +01:00
2009-09-10 13:28:54 +01:00
2009-05-20 16:06:09 +01:00
2009-10-07 16:06:26 +01:00
2009-10-06 10:43:41 +01:00
2009-12-20 17:33:51 +00:00
2010-01-08 20:19:50 +00:00
2010-01-08 20:19:50 +00:00
2009-06-30 17:13:38 +01:00
2009-03-16 15:00:55 +00:00
2009-03-17 14:13:31 +00:00
2009-03-16 15:00:55 +00:00
2010-01-05 10:55:28 +00:00
2009-11-06 11:39:30 +00:00
2009-11-06 14:07:46 +00:00
2009-03-16 15:00:55 +00:00
2009-02-26 14:57:58 +00:00
2008-10-30 17:04:34 +00:00
2009-07-27 15:01:52 +01:00
2009-05-12 14:53:44 +01:00
2009-06-01 17:40:23 +01:00
2009-04-03 12:47:21 +01:00
2009-10-19 12:01:38 +01:00
2009-12-02 11:38:04 +00:00
2009-09-08 10:52:58 +01:00
2009-09-08 10:52:58 +01:00
2010-01-12 15:58:27 +00:00
2010-01-12 15:58:27 +00:00
2010-01-11 17:10:00 +00:00
2009-10-19 12:01:38 +01:00
2010-01-13 15:13:10 +00:00
2009-05-23 19:35:19 +01:00
2009-09-16 11:57:57 +01:00
2009-06-19 16:38:35 +01:00
2009-03-16 15:40:18 +00:00
2009-03-16 15:40:18 +00:00
2009-03-16 16:56:51 +00:00
2009-03-16 15:40:18 +00:00
2009-12-11 23:48:58 +00:00
2009-10-16 15:55:05 +01:00
2009-10-16 15:25:37 +01:00
2008-02-12 17:17:52 +00:00
2008-10-30 17:04:34 +00:00
2009-10-30 11:02:35 +00:00
2009-10-14 11:31:48 +01:00
2010-01-19 16:10:23 +00:00