diff --git a/aegisub/src/audio_controller.cpp b/aegisub/src/audio_controller.cpp index 8c567100d..c208a8921 100644 --- a/aegisub/src/audio_controller.cpp +++ b/aegisub/src/audio_controller.cpp @@ -498,9 +498,8 @@ SampleRange AudioController::GetPrimaryPlaybackRange() const void AudioController::GetMarkers(const SampleRange &range, AudioMarkerVector &markers) const { /// @todo Find all sources of markers - if (keyframes_marker_provider.get()) keyframes_marker_provider->GetMarkers(range, markers); - if (video_position_marker_provider.get()) video_position_marker_provider->GetMarkers(range, markers); if (timing_controller) timing_controller->GetMarkers(range, markers); + if (video_position_marker_provider.get()) video_position_marker_provider->GetMarkers(range, markers); } void AudioController::GetLabels(const SampleRange &range, std::vector &labels) const diff --git a/aegisub/src/audio_controller.h b/aegisub/src/audio_controller.h index ba3af635e..d7fb78092 100644 --- a/aegisub/src/audio_controller.h +++ b/aegisub/src/audio_controller.h @@ -213,9 +213,6 @@ class AudioController : public wxEvtHandler, public AudioMarkerProvider, public /// The current timing mode, if any; owned by the audio controller agi::scoped_ptr timing_controller; - /// Provide keyframe data for audio displays - agi::scoped_ptr keyframes_marker_provider; - /// Provider current video position data for audio display agi::scoped_ptr video_position_marker_provider; diff --git a/aegisub/src/audio_timing_dialogue.cpp b/aegisub/src/audio_timing_dialogue.cpp index d6d638c00..ef8613267 100644 --- a/aegisub/src/audio_timing_dialogue.cpp +++ b/aegisub/src/audio_timing_dialogue.cpp @@ -338,7 +338,8 @@ const AudioMarkerDialogueTiming *AudioTimingControllerDialogue::GetRightMarker() void AudioTimingControllerDialogue::GetMarkers(const SampleRange &range, AudioMarkerVector &out_markers) const { - keyframes_provider.GetMarkers(range, out_markers); + // The order matters here; later markers are painted on top of earlier + // markers, so the markers that we want to end up on top need to appear last // Copy inactive line markers in the range std::vector::const_iterator @@ -352,6 +353,8 @@ void AudioTimingControllerDialogue::GetMarkers(const SampleRange &range, AudioMa out_markers.push_back(&active_markers[0]); if (range.contains(active_markers[1])) out_markers.push_back(&active_markers[1]); + + keyframes_provider.GetMarkers(range, out_markers); } void AudioTimingControllerDialogue::OnActiveLineChanged(AssDialogue *new_line)