Author: toshok
Date: 2007-06-20 15:50:57 -0400 (Wed, 20 Jun 2007)
New Revision: 80354

Modified:
   trunk/moon/src/ChangeLog
   trunk/moon/src/clock.cpp
Log:
2007-06-20  Chris Toshok  <[EMAIL PROTECTED]>

        * clock.cpp (Clock::Tick): if we hit our natural duration but our
        duration is Automatic, go to Fill mode, since we may have child
        clocks that started after us and need a chance to run their last
        tick.



Modified: trunk/moon/src/ChangeLog
===================================================================
--- trunk/moon/src/ChangeLog    2007-06-20 19:42:53 UTC (rev 80353)
+++ trunk/moon/src/ChangeLog    2007-06-20 19:50:57 UTC (rev 80354)
@@ -1,3 +1,10 @@
+2007-06-20  Chris Toshok  <[EMAIL PROTECTED]>
+
+       * clock.cpp (Clock::Tick): if we hit our natural duration but our
+       duration is Automatic, go to Fill mode, since we may have child
+       clocks that started after us and need a chance to run their last
+       tick.
+
 2007-06-20  Jeffrey Stedfast  <[EMAIL PROTECTED]>
 
        * runtime.cpp (collection_iterator_move_next): If we can't iterate

Modified: trunk/moon/src/clock.cpp
===================================================================
--- trunk/moon/src/clock.cpp    2007-06-20 19:42:53 UTC (rev 80353)
+++ trunk/moon/src/clock.cpp    2007-06-20 19:50:57 UTC (rev 80354)
@@ -336,7 +336,10 @@
                                        printf (" + clock %p should STOP\n", 
this, remaining_iterations);
 #endif
                                        new_time = duration_timespan;
-                                       Stop ();
+                                       if (*duration == Duration::Automatic)
+                                               SkipToFill ();
+                                       else
+                                               Stop ();
                                }
                                else {
                                        new_time -= duration_timespan;
@@ -352,7 +355,10 @@
 
                        if (remaining_iterations == 0) {
                                new_time = 0;
-                               Stop ();
+                               if (*duration == Duration::Automatic)
+                                       SkipToFill ();
+                               else
+                                       Stop ();
                        }
                }
 
@@ -416,6 +422,9 @@
 
        current_time = new_time = last_parent_time - GetBeginTime ();
 
+#if CLOCK_DEBUG
+       printf (" + it's current time at that point will be %lld\n", 
current_time);
+#endif
        if (natural_duration.HasTimeSpan ())
                current_progress = new_progress = (double)current_time / 
natural_duration.GetTimeSpan();
        else

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to