David Rose 23 年之前
父节点
当前提交
7c0ef38c85
共有 1 个文件被更改,包括 8 次插入0 次删除
  1. 8 0
      direct/src/interval/cMetaInterval.cxx

+ 8 - 0
direct/src/interval/cMetaInterval.cxx

@@ -883,11 +883,15 @@ do_event_forward(CMetaInterval::PlaybackEvent *event,
       ai = find(new_active.begin(), new_active.end(), event->_begin_event);
       if (ai != new_active.end()) {
         new_active.erase(ai);
+        // This interval was new this frame; we must invoke it as
+        // an instant event.
+        enqueue_event(event->_n, ET_instant, is_initial);
 
       } else {
         ai = find(_active.begin(), _active.end(), event->_begin_event);
         if (ai != _active.end()) {
           _active.erase(ai);
+          enqueue_event(event->_n, ET_finalize, is_initial);
 
         } else {
           // Hmm, this event wasn't on either list.  Maybe there was a
@@ -960,11 +964,15 @@ do_event_reverse(CMetaInterval::PlaybackEvent *event,
       ai = find(new_active.begin(), new_active.end(), event);
       if (ai != new_active.end()) {
         new_active.erase(ai);
+        // This interval was new this frame; we invoke it as an
+        // instant event.
+        enqueue_event(event->_n, ET_reverse_instant, is_initial);
 
       } else {
         ai = find(_active.begin(), _active.end(), event);
         if (ai != _active.end()) {
           _active.erase(ai);
+          enqueue_event(event->_n, ET_reverse_finalize, is_initial);
 
         } else {
           // Hmm, this event wasn't on either list.  Maybe there was a