Strip FX writes from the Design View mode switch; split view.cpp into park/lanes/reconcile/tracks and add the record-scoped undo repair pass
This commit is contained in:
+12
-10
@@ -39,8 +39,11 @@ add_library(reaper_reasampler MODULE
|
||||
${LICE_SRC}
|
||||
${REASAMPLER_SRC_DIR}/shell/capture/insert.cpp
|
||||
${REASAMPLER_SRC_DIR}/shell/view/view.cpp
|
||||
${REASAMPLER_SRC_DIR}/shell/view/view_fx_park.cpp
|
||||
${REASAMPLER_SRC_DIR}/shell/view/view_lanes.cpp
|
||||
${REASAMPLER_SRC_DIR}/shell/view/view_park.cpp
|
||||
${REASAMPLER_SRC_DIR}/shell/view/view_reconcile.cpp
|
||||
${REASAMPLER_SRC_DIR}/shell/view/view_solo.cpp
|
||||
${REASAMPLER_SRC_DIR}/shell/view/view_tracks.cpp
|
||||
${REASAMPLER_SRC_DIR}/shell/capture/track_guid.cpp
|
||||
${REASAMPLER_SRC_DIR}/shell/capture/provenance_shell.cpp
|
||||
${REASAMPLER_SRC_DIR}/shell/capture/item_read.cpp
|
||||
@@ -56,20 +59,19 @@ add_library(reaper_reasampler MODULE
|
||||
${REASAMPLER_SRC_DIR}/shell/actions/insert_fx_action.cpp
|
||||
${REASAMPLER_SRC_DIR}/shell/persist/usage_scan.cpp
|
||||
)
|
||||
target_link_libraries(reaper_reasampler PRIVATE json wire file_bytes bank_model capture_paths capture_name peaks bank_grid mode_switch tab_strip view_mode_model view_tree fx_state guid_diff lane_keys solo_cache insert_plan render_settings render_window track_topology batch_capture tail_control capture_realtime bank_book wav_codec origin_ledger tracking_authority prune_reconcile prune_button app_version provenance drag_out instrument_drop theme component_geometry action_bar footer_bar overflow_menu mode_enable insert_fx_enable tooltip card_meta card_drag assignment_request bank_sync sample_usage bake_wire resample_name export_bank package_pickers)
|
||||
target_link_libraries(reaper_reasampler PRIVATE json wire file_bytes bank_model capture_paths capture_name peaks bank_grid mode_switch tab_strip view_mode_model view_tree fx_state applied_state guid_diff lane_keys solo_cache insert_plan render_settings render_window track_topology batch_capture tail_control capture_realtime bank_book wav_codec origin_ledger tracking_authority prune_reconcile prune_button app_version provenance drag_out instrument_drop theme component_geometry action_bar footer_bar overflow_menu mode_enable insert_fx_enable tooltip card_meta card_drag assignment_request bank_sync sample_usage bake_wire resample_name export_bank package_pickers)
|
||||
# NOT linked here, deliberately: sampler_core / pitch_shift / the filter / limiter. The
|
||||
# instrument renders its own bake in its own process, which is what keeps the extension's
|
||||
# link graph free of the voice engine — a link edge to it here means the design drifted.
|
||||
target_include_directories(reaper_reasampler PRIVATE ${SDK_INC} ${WDL_INC})
|
||||
|
||||
# The park surface's decisions are pure (header-inline, no REAPER types), so they are
|
||||
# CTest-covered like a core/ module: the snapshot trust test, the refusal message and
|
||||
# its once-per-changed-set gate, and the apply's undo-point fold. Declared here rather
|
||||
# than in a src/shell/view/CMakeLists.txt because that directory deliberately has none
|
||||
# — its TUs are compiled into this target directly. view_mode_model is linked for
|
||||
# makeParkPlan, the flag set the trust test folds over; pinning that against hand-built
|
||||
# ops would not catch a change to the planner.
|
||||
reasampler_test(view_fx_park LINK fx_offline view_mode_model)
|
||||
# The view shell's decisions are pure (header-inline, no REAPER types), so they are
|
||||
# CTest-covered like a core/ module: the Flag -> parameter mapping, the apply's
|
||||
# undo-point fold, and the reconcile's scope rule and drift trigger. Declared here
|
||||
# rather than in a src/shell/view/CMakeLists.txt because that directory deliberately
|
||||
# has none — its TUs are compiled into this target directly.
|
||||
reasampler_test(view_park LINK view_mode_model)
|
||||
reasampler_test(view_reconcile LINK applied_state view_mode_model)
|
||||
|
||||
# Bank-package import: the promptless verb plus its action skin. Kept as its own
|
||||
# appended block rather than merged into the lists above, so the two package
|
||||
|
||||
+8
-1
@@ -38,7 +38,9 @@
|
||||
#include "shell/panel/panel_input.h" // bankPanelRefresh / bankPanelNotifyProjectLoaded
|
||||
#include "shell/panel/panel_window.h" // panel lifecycle (init/toggle/open-query/shutdown)
|
||||
#include "shell/persist/session.h" // ReaSamplerSession
|
||||
#include "shell/view/view.h" // reconcileManagedLanes / applyMode
|
||||
#include "shell/view/view.h" // applyMode
|
||||
#include "shell/view/view_lanes.h" // reconcileManagedLanes
|
||||
#include "shell/view/view_reconcile.h" // reconcileAppliedFlags
|
||||
|
||||
namespace capture = reasampler::capture;
|
||||
|
||||
@@ -205,6 +207,11 @@ static void OnTimer()
|
||||
// the cross-session source of truth) BEFORE reapplying visibility. Never
|
||||
// re-mints, never mass-tags.
|
||||
reasampler::reconcileManagedLanes(g_session.view(), nullptr);
|
||||
// An undo/redo reload also arrives here, and REAPER's undo does not restore
|
||||
// the visibility flags a park drove (UNDO_STATE_TRACKCFG does not carry them).
|
||||
// Repair the tracks the reloaded model no longer records BEFORE the reapply,
|
||||
// which only ever drives tracks the model still records.
|
||||
reasampler::reconcileAppliedFlags(g_session.view(), nullptr);
|
||||
reasampler::applyMode(g_session.view(), g_session.view().activeModeId(), nullptr);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user