summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2006-12-19 02:41:19 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2006-12-19 02:41:19 +0000
commit486020b4032da9bbb20fafd83ec6f10263c892e5 (patch)
treeec7b4a43e25f628a64ccd56afbca5b556c8f268f
parent575c7974ebddffe71b1fc673c1463221f134bc16 (diff)
save keybindings to file used at startup; allow keybindings file to be cmdline-specified; remove some GTK2FIX comments; fix feedback based on john anderson's patch; apply scons patches; fix crash when taking MIDI ports online+offline; try to prevent aborts when shutting down due to metering thread; start work on reconstructing GlobalFOOCommand commands; use ftruncate to hint at peakfile preallocation to reduce fragmentation
git-svn-id: svn://localhost/ardour2/trunk@1223 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/ardour.bindings408
-rw-r--r--gtk2_ardour/ardour_ui.cc20
-rw-r--r--gtk2_ardour/ardour_ui.h8
-rw-r--r--gtk2_ardour/ardour_ui_dependents.cc27
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc15
-rw-r--r--gtk2_ardour/audio_region_view.cc3
-rw-r--r--gtk2_ardour/crossfade_edit.cc2
-rw-r--r--gtk2_ardour/editor.cc5
-rw-r--r--gtk2_ardour/editor_imageframe.cc12
-rw-r--r--gtk2_ardour/main.cc5
-rw-r--r--gtk2_ardour/option_editor.cc18
-rw-r--r--gtk2_ardour/opts.cc10
-rw-r--r--gtk2_ardour/opts.h1
-rw-r--r--gtk2_ardour/playlist_selector.cc5
-rw-r--r--libs/ardour/ardour/session.h7
-rw-r--r--libs/ardour/audioengine.cc10
-rw-r--r--libs/ardour/audiosource.cc53
-rw-r--r--libs/ardour/control_protocol_manager.cc2
-rw-r--r--libs/ardour/session.cc6
-rw-r--r--libs/ardour/session_command.cc10
-rw-r--r--libs/ardour/session_state.cc22
-rw-r--r--libs/clearlooks/SConscript24
-rw-r--r--templates/SConscript3
23 files changed, 495 insertions, 181 deletions
diff --git a/gtk2_ardour/ardour.bindings b/gtk2_ardour/ardour.bindings
index f7c39fba9e..eb1dc87f6f 100644
--- a/gtk2_ardour/ardour.bindings
+++ b/gtk2_ardour/ardour.bindings
@@ -1,116 +1,312 @@
-; this file is NOT an automated accelerator map dump
-
-(gtk_accel_path "<Actions>/Transport/ToggleRoll" "space")
-(gtk_accel_path "<Actions>/Transport/ToggleRollForgetCapture" "<control>space")
-(gtk_accel_path "<Actions>/Transport/Forward" "<control>Right")
-(gtk_accel_path "<Actions>/Transport/Rewind" "<control>Left")
-(gtk_accel_path "<Actions>/Transport/GotoZero" "KP_Insert")
-(gtk_accel_path "<Actions>/Transport/GotoStart" "Home")
-(gtk_accel_path "<Actions>/Transport/GotoEnd" "End")
-
-(gtk_accel_path "<Actions>/Editor/align-regions-sync-relative" "a")
-(gtk_accel_path "<Actions>/Editor/crop" "c")
-(gtk_accel_path "<Actions>/Editor/duplicate-region" "d")
-(gtk_accel_path "<Actions>/Editor/set-edit-cursor" "e")
-(gtk_accel_path "<Actions>/Editor/toggle-follow-playhead" "f")
-(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-gain" "g")
-(gtk_accel_path "<Actions>/Editor/split-region" "s")
-(gtk_accel_path "<Actions>/Editor/set-region-sync-position" "v")
-(gtk_accel_path "<Actions>/Editor/mute-unmute-region" "m")
-(gtk_accel_path "<Actions>/Editor/insert-region" "i")
-(gtk_accel_path "<Actions>/Editor/normalize-region" "n")
-(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-object" "o")
-(gtk_accel_path "<Actions>/Transport/Loop" "l")
-(gtk_accel_path "<Actions>/Editor/set-playhead" "p")
+; ardour.bin GtkAccelMap rc-file -*- scheme -*-
+; this file is an automated accelerator map dump
+;
+; (gtk_accel_path "<Actions>/RegionList/RegionListSort" "")
+(gtk_accel_path "<Actions>/Common/Quit" "<Control>q")
+(gtk_accel_path "<Actions>/Common/Save" "<Control>s")
+; (gtk_accel_path "<Actions>/Editor/Pullup" "")
+; (gtk_accel_path "<Actions>/Editor/zoom-to-session" "")
+; (gtk_accel_path "<Actions>/JACK/JACKReconnect" "")
+; (gtk_accel_path "<Actions>/Editor/Autoconnect" "")
+; (gtk_accel_path "<Actions>/Editor/Edit" "")
+(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-end" "<Control>grave")
+; (gtk_accel_path "<Actions>/redirectmenu/copy" "")
+; (gtk_accel_path "<Actions>/options/MeterFalloffFaster" "")
+(gtk_accel_path "<Actions>/Transport/ToggleRollForgetCapture" "<Control>space")
+(gtk_accel_path "<Actions>/Transport/Record" "<Shift>r")
+; (gtk_accel_path "<Actions>/RegionList/SortByRegionLength" "")
+; (gtk_accel_path "<Actions>/options/MeterFalloffSlowest" "")
+; (gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-sync" "")
+; (gtk_accel_path "<Actions>/redirectmenu/deactivate_all" "")
+; (gtk_accel_path "<Actions>/RegionList/SortByRegionPosition" "")
+; (gtk_accel_path "<Actions>/Editor/ZoomFocus" "")
+; (gtk_accel_path "<Actions>/options/MeterFalloffSlow" "")
+; (gtk_accel_path "<Actions>/RegionList/rlHide" "")
+; (gtk_accel_path "<Actions>/Main/Metering" "")
+(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-end" "<Control>Tab")
+; (gtk_accel_path "<Actions>/Zoom/zoom-focus-playhead" "")
+; (gtk_accel_path "<Actions>/Editor/center-edit-cursor" "")
+; (gtk_accel_path "<Actions>/Editor/Monitoring" "")
+; (gtk_accel_path "<Actions>/redirectmenu/deactivate" "")
+; (gtk_accel_path "<Actions>/options/LatchedRecordEnable" "")
+; (gtk_accel_path "<Actions>/Transport/TogglePunchIn" "")
+; (gtk_accel_path "<Actions>/ShuttleActions/SetShuttleUnitsPercentage" "")
+(gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-start" "bracketleft")
+; (gtk_accel_path "<Actions>/Main/Close" "")
+; (gtk_accel_path "<Actions>/Main/New" "")
+(gtk_accel_path "<Actions>/Editor/nudge-next-backward" "<Control>KP_Subtract")
+; (gtk_accel_path "<Actions>/Editor/EditSelectRangeOptions" "")
+; (gtk_accel_path "<Actions>/Transport/ToggleTimeMaster" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-thirds" "")
+(gtk_accel_path "<Actions>/Editor/align-regions-start-relative" "<Shift>a")
+; (gtk_accel_path "<Actions>/Main/Export" "")
+(gtk_accel_path "<Actions>/Editor/jump-forward-to-mark" "<Control>KP_Right")
+; (gtk_accel_path "<Actions>/Editor/Smpte30" "")
+; (gtk_accel_path "<Actions>/Editor/playhead-to-range-start" "")
+; (gtk_accel_path "<Actions>/Editor/Subframes" "")
+; (gtk_accel_path "<Actions>/Editor/Smpte2997drop" "")
+; (gtk_accel_path "<Actions>/Main/AddTrackBus" "")
+(gtk_accel_path "<Actions>/Editor/align-regions-end" "<Control><Mod2>a")
+; (gtk_accel_path "<Actions>/JACK/JACKDisconnect" "")
+; (gtk_accel_path "<Actions>/options/MeterFalloffFast" "")
+; (gtk_accel_path "<Actions>/options/FileDataFormatFloat" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-region-end" "")
+(gtk_accel_path "<Actions>/Editor/edit-cursor-to-next-region-sync" "semicolon")
+; (gtk_accel_path "<Actions>/options/StopRecordingOnXrun" "")
+; (gtk_accel_path "<Actions>/Editor/addExternalAudioToRegionList" "")
+; (gtk_accel_path "<Actions>/RegionList/SortDescending" "")
+; (gtk_accel_path "<Actions>/options/DoNotRunPluginsWhileRecording" "")
+; (gtk_accel_path "<Actions>/Editor/PullupNone" "")
(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-range" "r")
-(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-timefx" "t")
-(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-zoom" "z")
-
-(gtk_accel_path "<Actions>/Transport/Record" "<shift>r")
-
-
+(gtk_accel_path "<Actions>/Editor/jump-backward-to-mark" "<Control>KP_Left")
+; (gtk_accel_path "<Actions>/Main/AudioFileFormatData" "")
+; (gtk_accel_path "<Actions>/options/MeterFalloffFastest" "")
+(gtk_accel_path "<Actions>/Editor/audition-at-mouse" "period")
+(gtk_accel_path "<Actions>/Transport/Forward" "<Control>Right")
+; (gtk_accel_path "<Actions>/Snap/snap-to-smpte-seconds" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-smpte-frame" "")
+; (gtk_accel_path "<Actions>/Main/ExportSelection" "")
+; (gtk_accel_path "<Actions>/options/StopPluginsWithTransport" "")
+(gtk_accel_path "<Actions>/Editor/editor-paste" "<Control>v")
+(gtk_accel_path "<Actions>/Editor/scroll-tracks-down" "Page_Down")
+; (gtk_accel_path "<Actions>/Snap/snap-to-smpte-minutes" "")
+(gtk_accel_path "<Actions>/Editor/normalize-region" "n")
(gtk_accel_path "<Actions>/Editor/nudge-forward" "KP_Add")
-(gtk_accel_path "<Actions>/Editor/nudge-next-forward" "<control>KP_Add")
+; (gtk_accel_path "<Actions>/Main/FlushWastebasket" "")
+; (gtk_accel_path "<Actions>/RegionList/SortByRegionEndinFile" "")
+; (gtk_accel_path "<Actions>/Editor/ToggleMeasureVisibility" "")
+; (gtk_accel_path "<Actions>/Zoom/zoom-focus-center" "")
(gtk_accel_path "<Actions>/Editor/nudge-backward" "KP_Subtract")
-(gtk_accel_path "<Actions>/Editor/nudge-next-backward" "<control>KP_Subtract")
-
-(gtk_accel_path "<Actions>/Editor/show-editor-mixer" "<shift>e")
-
-(gtk_accel_path "<Actions>/Common/goto-editor" "<alt>e")
-(gtk_accel_path "<Actions>/Common/goto-mixer" "<alt>m")
-(gtk_accel_path "<Actions>/Common/ToggleSoundFileBrowser" "<alt>f")
-(gtk_accel_path "<Actions>/Common/ToggleLocations" "<alt>l")
-(gtk_accel_path "<Actions>/Common/ToggleBigClock" "<alt>b")
-(gtk_accel_path "<Actions>/Common/ToggleColorManager" "<alt>c")
-
-(gtk_accel_path "<Actions>/Editor/editor-copy" "<control>c")
-(gtk_accel_path "<Actions>/Common/Quit" "<control>q")
-(gtk_accel_path "<Actions>/Editor/redo" "<control>r")
-(gtk_accel_path "<Actions>/Common/Save" "<control>s")
-(gtk_accel_path "<Actions>/Editor/editor-paste" "<control>v")
-(gtk_accel_path "<Actions>/Editor/remove-last-capture" "<control>Delete")
-(gtk_accel_path "<Actions>/Editor/editor-cut" "<control>x")
-(gtk_accel_path "<Actions>/Editor/editor-delete" "Delete")
-(gtk_accel_path "<Actions>/Editor/undo" "<control>z")
-
-(gtk_accel_path "<Actions>/Editor/scroll-tracks-down" "Page_Down")
+; (gtk_accel_path "<Actions>/options/LatchedSolo" "")
+; (gtk_accel_path "<Actions>/options/MeterHoldOff" "")
+; (gtk_accel_path "<Actions>/options/OutputAutoConnectMaster" "")
+; (gtk_accel_path "<Actions>/JACK/JACKLatency64" "")
+(gtk_accel_path "<Actions>/Editor/undo" "<Control>z")
+(gtk_accel_path "<Actions>/Editor/insert-region" "i")
+; (gtk_accel_path "<Actions>/Editor/center-playhead" "")
+(gtk_accel_path "<Actions>/Editor/edit-cursor-to-next-region-start" "bracketright")
+; (gtk_accel_path "<Actions>/Snap/snap-to-region-start" "")
+; (gtk_accel_path "<Actions>/Editor/View" "")
+; (gtk_accel_path "<Actions>/Editor/Layering" "")
+; (gtk_accel_path "<Actions>/JACK/JACKLatency4096" "")
(gtk_accel_path "<Actions>/Editor/scroll-tracks-up" "Page_Up")
-(gtk_accel_path "<Actions>/Editor/scroll-backward" "leftarrow")
-(gtk_accel_path "<Actions>/Editor/scroll-forward" "rightarrow")
+(gtk_accel_path "<Actions>/Editor/set-edit-cursor" "e")
+; (gtk_accel_path "<Actions>/Editor/Smpte30drop" "")
+; (gtk_accel_path "<Actions>/Zoom/zoom-focus-edit" "")
+(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-start" "grave")
+; (gtk_accel_path "<Actions>/Editor/EditCursorMovementOptions" "")
+; (gtk_accel_path "<Actions>/redirectmenu/activate_all" "")
+; (gtk_accel_path "<Actions>/Editor/addExternalAudioAsTapeTrack" "")
+; (gtk_accel_path "<Actions>/redirectmenu/paste" "")
+; (gtk_accel_path "<Actions>/Editor/Smpte25" "")
+; (gtk_accel_path "<Actions>/Main/MeteringFallOffRate" "")
+; (gtk_accel_path "<Actions>/options/UseHardwareMonitoring" "")
+; (gtk_accel_path "<Actions>/Editor/Smpte24" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-mark" "")
+; (gtk_accel_path "<Actions>/Editor/CrossfadesShort" "")
+; (gtk_accel_path "<Actions>/Editor/Smpte5994" "")
+; (gtk_accel_path "<Actions>/JACK/JACKLatency8192" "")
(gtk_accel_path "<Actions>/Editor/step-tracks-down" "downarrow")
-(gtk_accel_path "<Actions>/Editor/step-tracks-up" "uparrow")
-(gtk_accel_path "<Actions>/Editor/playhead-to-edit" "Return")
+; (gtk_accel_path "<Actions>/Editor/toggle-xfades-visible" "")
+(gtk_accel_path "<Actions>/Editor/extend-range-to-end-of-region" "rightanglebracket")
+(gtk_accel_path "<Actions>/Editor/scroll-backward" "leftarrow")
+(gtk_accel_path "<Actions>/Editor/start-range" "<Control>KP_Down")
+; (gtk_accel_path "<Actions>/ShuttleActions/SetShuttleUnitsSemitones" "")
+; (gtk_accel_path "<Actions>/JACK/JACKLatency128" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-beat" "")
+; (gtk_accel_path "<Actions>/Editor/RegionEditOps" "")
+; (gtk_accel_path "<Actions>/Editor/snap-magnetic" "")
+; (gtk_accel_path "<Actions>/Editor/playhead-to-range-end" "")
+(gtk_accel_path "<Actions>/Editor/align-regions-sync-relative" "a")
+; (gtk_accel_path "<Actions>/Editor/EditSelectRegionOptions" "")
+(gtk_accel_path "<Actions>/Editor/crop" "c")
+; (gtk_accel_path "<Actions>/redirectmenu/newsend" "")
+; (gtk_accel_path "<Actions>/Editor/ToggleGeneric MIDISurfaceSubMenu" "")
+; (gtk_accel_path "<Actions>/Editor/MeterFalloff" "")
+; (gtk_accel_path "<Actions>/RegionList/rlRemove" "")
+(gtk_accel_path "<Actions>/Transport/GotoStart" "Home")
+(gtk_accel_path "<Actions>/Editor/split-region" "s")
+; (gtk_accel_path "<Actions>/Transport/ToggleAutoInput" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-thirtyseconds" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-minutes" "")
+(gtk_accel_path "<Actions>/Editor/align-regions-sync" "<Mod2>a")
+; (gtk_accel_path "<Actions>/Main/Windows" "")
+; (gtk_accel_path "<Actions>/Main/CleanupUnused" "")
+; (gtk_accel_path "<Actions>/redirectmenu/deselectall" "")
+; (gtk_accel_path "<Actions>/options/SoloViaBus" "")
+(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-zoom" "z")
+; (gtk_accel_path "<Actions>/RegionList/rlAudition" "")
+(gtk_accel_path "<Actions>/Editor/set-region-sync-position" "v")
+; (gtk_accel_path "<Actions>/Editor/PullupPlus4Plus1" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-region-boundary" "")
+; (gtk_accel_path "<Actions>/JACK/JACK" "")
+(gtk_accel_path "<Actions>/Editor/editor-cut" "<Control>x")
+; (gtk_accel_path "<Actions>/RegionList/SortAscending" "")
+; (gtk_accel_path "<Actions>/Main/Help" "")
+; (gtk_accel_path "<Actions>/options/UseExternalMonitoring" "")
+; (gtk_accel_path "<Actions>/Editor/Smpte23976" "")
+(gtk_accel_path "<Actions>/Common/goto-editor" "<Alt>e")
+(gtk_accel_path "<Actions>/Editor/select-all" "<Control>a")
+(gtk_accel_path "<Actions>/Editor/nudge-next-forward" "<Control>KP_Add")
+; (gtk_accel_path "<Actions>/Snap/snap-to-eighths" "")
+(gtk_accel_path "<Actions>/Editor/select-all-after-playhead" "<Shift><Control>p")
+(gtk_accel_path "<Actions>/Common/ToggleMaximalEditor" "F11")
+; (gtk_accel_path "<Actions>/RegionList/SortBySourceFileLength" "")
+; (gtk_accel_path "<Actions>/Editor/Timecode" "")
+; (gtk_accel_path "<Actions>/Transport/PlaySelection" "")
+; (gtk_accel_path "<Actions>/Editor/PullupMinus4Minus1" "")
+(gtk_accel_path "<Actions>/Editor/select-all-after-edit-cursor" "<Shift><Control>e")
+; (gtk_accel_path "<Actions>/RegionList/SortBySourceFileName" "")
+(gtk_accel_path "<Actions>/Editor/finish-range" "<Control>KP_Up")
+(gtk_accel_path "<Actions>/Transport/Loop" "l")
+; (gtk_accel_path "<Actions>/Editor/CrossfadesFull" "")
+(gtk_accel_path "<Actions>/Editor/finish-add-range" "<Shift><Control>KP_Up")
+; (gtk_accel_path "<Actions>/Transport/ToggleClick" "")
+; (gtk_accel_path "<Actions>/options/SendMTC" "")
+; (gtk_accel_path "<Actions>/Transport/TogglePunchOut" "")
+(gtk_accel_path "<Actions>/Editor/select-all-in-loop-range" "<Control>l")
+(gtk_accel_path "<Actions>/Editor/show-editor-mixer" "<Shift>e")
+; (gtk_accel_path "<Actions>/options/SoloInPlace" "")
+; (gtk_accel_path "<Actions>/Main/Options" "")
+; (gtk_accel_path "<Actions>/options/MeterFalloffMedium" "")
+(gtk_accel_path "<Actions>/Editor/toggle-follow-playhead" "f")
+; (gtk_accel_path "<Actions>/Main/SaveTemplate" "")
+; (gtk_accel_path "<Actions>/RegionList/SortByRegionStartinFile" "")
+; (gtk_accel_path "<Actions>/options/GainReduceFastTransport" "")
+; (gtk_accel_path "<Actions>/Common/ToggleInspector" "")
+; (gtk_accel_path "<Actions>/Transport/ToggleAutoPlay" "")
+; (gtk_accel_path "<Actions>/Editor/playhead-to-next-region-sync" "")
(gtk_accel_path "<Actions>/Editor/edit-to-playhead" "<Alt>Return")
-
+; (gtk_accel_path "<Actions>/Editor/LayerMoveAddHigher" "")
+; (gtk_accel_path "<Actions>/Editor/Smpte60" "")
+; (gtk_accel_path "<Actions>/Main/Open" "")
+(gtk_accel_path "<Actions>/Editor/scroll-forward" "rightarrow")
+; (gtk_accel_path "<Actions>/Zoom/zoom-focus-left" "")
+; (gtk_accel_path "<Actions>/Main/TransportOptions" "")
+; (gtk_accel_path "<Actions>/Main/ControlSurfaces" "")
+; (gtk_accel_path "<Actions>/options/FileHeaderFormatBWF" "")
+; (gtk_accel_path "<Actions>/Transport/ToggleAutoReturn" "")
+; (gtk_accel_path "<Actions>/Editor/Smpte2997" "")
+; (gtk_accel_path "<Actions>/Editor/ToggleWaveformVisibility" "")
+(gtk_accel_path "<Actions>/Editor/redo" "<Control>r")
+; (gtk_accel_path "<Actions>/Editor/addExternalAudioAsRegion" "")
+; (gtk_accel_path "<Actions>/Main/ExportSession" "")
+; (gtk_accel_path "<Actions>/options/InputAutoConnectPhysical" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-edit-cursor" "")
(gtk_accel_path "<Actions>/Editor/temporal-zoom-in" "minus")
-(gtk_accel_path "<Actions>/Editor/temporal-zoom-out" "equal")
-
-(gtk_accel_path "<Actions>/Editor/select-all" "<control>a")
-(gtk_accel_path "<Actions>/Editor/select-all-after-edit-cursor" "<shift><Control>e")
-(gtk_accel_path "<Actions>/Editor/select-all-before-edit-cursor" "<control>e")
-(gtk_accel_path "<Actions>/Editor/select-all-after-playhead" "<shift><Control>p")
-(gtk_accel_path "<Actions>/Editor/select-all-before-playhead" "<control>p")
-(gtk_accel_path "<Actions>/Editor/select-all-between-cursors" "u")
-(gtk_accel_path "<Actions>/Editor/select-all-in-punch-range" "<Control>d")
-(gtk_accel_path "<Actions>/Editor/select-all-in-loop-range" "<Control>l")
-
+; (gtk_accel_path "<Actions>/JACK/Latency" "")
+(gtk_accel_path "<Actions>/Editor/edit-cursor-to-range-end" "F2")
+; (gtk_accel_path "<Actions>/redirectmenu/rename" "")
+; (gtk_accel_path "<Actions>/RegionList/rlShowAuto" "")
+(gtk_accel_path "<Actions>/Editor/select-all-before-playhead" "<Control>p")
+; (gtk_accel_path "<Actions>/Editor/addExistingAudioFiles" "")
+; (gtk_accel_path "<Actions>/Main/Session" "")
+(gtk_accel_path "<Actions>/Editor/edit-cursor-to-range-start" "F1")
+; (gtk_accel_path "<Actions>/Main/AudioFileFormat" "")
+(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-timefx" "t")
+; (gtk_accel_path "<Actions>/Transport/Transport" "")
+; (gtk_accel_path "<Actions>/RegionList/SortByRegionName" "")
+; (gtk_accel_path "<Actions>/Main/KeyMouse Actions" "")
+(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-gain" "g")
+; (gtk_accel_path "<Actions>/Snap/snap-to-frame" "")
+; (gtk_accel_path "<Actions>/Editor/SnapTo" "")
+; (gtk_accel_path "<Actions>/Editor/Crossfades" "")
+; (gtk_accel_path "<Actions>/Editor/PullupPlus4" "")
+(gtk_accel_path "<Actions>/Editor/add-location-from-playhead" "KP_Enter")
+(gtk_accel_path "<Actions>/Common/ToggleSoundFileBrowser" "<Alt>f")
+(gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-end" "<Control>bracketleft")
+; (gtk_accel_path "<Actions>/Main/MeteringHoldTime" "")
+; (gtk_accel_path "<Actions>/Editor/PullupPlus1" "")
+; (gtk_accel_path "<Actions>/Editor/Smpte24976" "")
+; (gtk_accel_path "<Actions>/options/FileDataFormat24bit" "")
+; (gtk_accel_path "<Actions>/Common/ToggleOptionsEditor" "")
+; (gtk_accel_path "<Actions>/Editor/SnapMode" "")
+; (gtk_accel_path "<Actions>/Editor/PullupMinus4" "")
+(gtk_accel_path "<Actions>/Common/goto-mixer" "<Alt>m")
+; (gtk_accel_path "<Actions>/Editor/addExternalAudioToTrack" "")
+; (gtk_accel_path "<Actions>/RegionList/SortBySourceFileCreationDate" "")
+; (gtk_accel_path "<Actions>/redirectmenu/activate" "")
(gtk_accel_path "<Actions>/Editor/extend-range-to-start-of-region" "leftanglebracket")
-(gtk_accel_path "<Actions>/Editor/extend-range-to-end-of-region" "rightanglebracket")
-
-(gtk_accel_path "<Actions>/Editor/align-regions-sync" "<mod2>a")
-(gtk_accel_path "<Actions>/Editor/align-regions-end" "<mod2><control>a")
-(gtk_accel_path "<Actions>/Editor/align-regions-start-relative" "<shift>a")
-
-(gtk_accel_path "<Actions>/Editor/brush-at-mouse" "<control>b")
-(gtk_accel_path "<Actions>/Editor/audition-at-mouse" "period")
-
+; (gtk_accel_path "<Actions>/Editor/PullupMinus1" "")
+; (gtk_accel_path "<Actions>/Editor/snap-normal" "")
+; (gtk_accel_path "<Actions>/Editor/addExternalAudioAsTrack" "")
+(gtk_accel_path "<Actions>/Common/ToggleBigClock" "<Alt>b")
+; (gtk_accel_path "<Actions>/Snap/snap-to-asixteenthbeat" "")
+(gtk_accel_path "<Actions>/Editor/select-all-in-punch-range" "<Control>d")
+; (gtk_accel_path "<Actions>/redirectmenu/edit" "")
+(gtk_accel_path "<Actions>/Editor/duplicate-region" "d")
+; (gtk_accel_path "<Actions>/JACK/JACKLatency2048" "")
+; (gtk_accel_path "<Actions>/Editor/ToggleWaveformsWhileRecording" "")
+; (gtk_accel_path "<Actions>/Zoom/zoom-focus-right" "")
+(gtk_accel_path "<Actions>/Editor/remove-last-capture" "<Control>Delete")
+; (gtk_accel_path "<Actions>/options/FileHeaderFormatWAVE" "")
+(gtk_accel_path "<Actions>/Transport/GotoZero" "KP_Insert")
+(gtk_accel_path "<Actions>/Transport/GotoEnd" "End")
+; (gtk_accel_path "<Actions>/redirectmenu/cut" "")
+; (gtk_accel_path "<Actions>/redirectmenu/newinsert" "")
+; (gtk_accel_path "<Actions>/options/UseMMC" "")
+; (gtk_accel_path "<Actions>/options/MeterFalloffOff" "")
+(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-object" "o")
+; (gtk_accel_path "<Actions>/Editor/PullupMinus4Plus1" "")
+; (gtk_accel_path "<Actions>/Editor/MeterHold" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-cd-frame" "")
+; (gtk_accel_path "<Actions>/options/StopTransportAtEndOfSession" "")
+; (gtk_accel_path "<Actions>/Main/Cleanup" "")
+; (gtk_accel_path "<Actions>/Main/Snapshot" "")
+; (gtk_accel_path "<Actions>/Transport/ToggleVideoSync" "")
+(gtk_accel_path "<Actions>/Transport/ToggleRoll" "space")
+; (gtk_accel_path "<Actions>/RegionList/SortBySourceFilesystem" "")
+(gtk_accel_path "<Actions>/Common/ToggleColorManager" "<Alt>c")
+; (gtk_accel_path "<Actions>/Common/About" "")
+; (gtk_accel_path "<Actions>/JACK/JACKLatency32" "")
+(gtk_accel_path "<Actions>/Editor/playhead-to-edit" "Return")
+; (gtk_accel_path "<Actions>/options/FileHeaderFormatWAVE64" "")
+(gtk_accel_path "<Actions>/Editor/brush-at-mouse" "<Control>b")
+; (gtk_accel_path "<Actions>/RegionList/rlShowAll" "")
+(gtk_accel_path "<Actions>/Transport/Rewind" "<Control>Left")
+; (gtk_accel_path "<Actions>/RegionList/SortByRegionTimestamp" "")
+; (gtk_accel_path "<Actions>/options/VerifyRemoveLastCapture" "")
+; (gtk_accel_path "<Actions>/options/OutputAutoConnectPhysical" "")
+(gtk_accel_path "<Actions>/Editor/step-tracks-up" "uparrow")
(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-start" "Tab")
-(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-end" "<Control>Tab")
-
-(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-start" "grave")
-(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-end" "<control>grave")
-
-(gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-start" "bracketleft")
-(gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-end" "<Control>bracketleft")
-
-(gtk_accel_path "<Actions>/Editor/edit-cursor-to-next-region-start" "bracketright")
-(gtk_accel_path "<Actions>/Editor/edit-cursor-to-next-region-end" "<Control>bracketright")
-
+; (gtk_accel_path "<Actions>/options/SendMMC" "")
+; (gtk_accel_path "<Actions>/Editor/toggle-auto-xfades" "")
+; (gtk_accel_path "<Actions>/Main/AudioFileFormatHeader" "")
+; (gtk_accel_path "<Actions>/options/MeterHoldShort" "")
+; (gtk_accel_path "<Actions>/options/MeterHoldMedium" "")
+(gtk_accel_path "<Actions>/Editor/select-all-before-edit-cursor" "<Control>e")
+; (gtk_accel_path "<Actions>/Editor/Subframes80" "")
+; (gtk_accel_path "<Actions>/options/FileHeaderFormatCAF" "")
+(gtk_accel_path "<Actions>/Common/ToggleLocations" "<Alt>l")
+; (gtk_accel_path "<Actions>/Editor/ToggleGeneric MIDISurface" "")
+(gtk_accel_path "<Actions>/Editor/editor-delete" "Delete")
+; (gtk_accel_path "<Actions>/JACK/JACKLatency256" "")
+(gtk_accel_path "<Actions>/Editor/select-all-between-cursors" "u")
+; (gtk_accel_path "<Actions>/Editor/LayerAddHigher" "")
+; (gtk_accel_path "<Actions>/Editor/Solo" "")
+; (gtk_accel_path "<Actions>/JACK/JACKLatency1024" "")
+; (gtk_accel_path "<Actions>/Main/ExportRangeMarkers" "")
+(gtk_accel_path "<Actions>/Editor/set-playhead" "p")
+; (gtk_accel_path "<Actions>/Editor/toggle-xfades-active" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-bar" "")
+; (gtk_accel_path "<Actions>/Editor/LayerLaterHigher" "")
+; (gtk_accel_path "<Actions>/redirectmenu/selectall" "")
+(gtk_accel_path "<Actions>/Editor/editor-copy" "<Control>c")
+; (gtk_accel_path "<Actions>/Snap/snap-to-quarters" "")
+(gtk_accel_path "<Actions>/Editor/temporal-zoom-out" "equal")
+; (gtk_accel_path "<Actions>/options/UseSoftwareMonitoring" "")
+; (gtk_accel_path "<Actions>/Editor/Subframes100" "")
+(gtk_accel_path "<Actions>/Editor/mute-unmute-region" "m")
+; (gtk_accel_path "<Actions>/options/OutputAutoConnectManual" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-region-sync" "")
(gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-sync" "apostrophe")
-(gtk_accel_path "<Actions>/Editor/edit-cursor-to-next-region-sync" "semicolon")
-
-(gtk_accel_path "<Actions>/Editor/edit-cursor-to-range-start" "F1")
-(gtk_accel_path "<Actions>/Editor/edit-cursor-to-range-end" "F2")
-(gtk_accel_path "<Actions>/Common/ToggleMaximalEditor" "F11")
-
-(gtk_accel_path "<Actions>/Editor/jump-forward-to-mark" "<control>KP_Right")
-(gtk_accel_path "<Actions>/Editor/jump-backward-to-mark" "<control>KP_Left")
-
-(gtk_accel_path "<Actions>/Editor/start-range" "<control>KP_Down")
-(gtk_accel_path "<Actions>/Editor/finish-range" "<control>KP_Up")
-(gtk_accel_path "<Actions>/Editor/finish-add-range" "<shift><control>KP_Up")
-
-
-(gtk_accel_path "<Actions>/Editor/add-location-from-playhead" "KP_Enter")
-
-
+; (gtk_accel_path "<Actions>/redirectmenu/clear" "")
+; (gtk_accel_path "<Actions>/Editor/ToggleGeneric MIDISurfaceFeedback" "")
+; (gtk_accel_path "<Actions>/Editor/PullupPlus4Minus1" "")
+; (gtk_accel_path "<Actions>/JACK/JACKLatency512" "")
+(gtk_accel_path "<Actions>/Editor/edit-cursor-to-next-region-end" "<Control>bracketright")
+; (gtk_accel_path "<Actions>/Main/Recent" "")
+; (gtk_accel_path "<Actions>/redirectmenu/newplugin" "")
+; (gtk_accel_path "<Actions>/options/InputAutoConnectManual" "")
+; (gtk_accel_path "<Actions>/options/MeterHoldLong" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-seconds" "")
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index e369c85261..4680514771 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -164,6 +164,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], string rcfile)
_will_create_new_session_automatically = false;
session_loaded = false;
last_speed_displayed = -1.0f;
+ keybindings_path = ARDOUR::find_config_file ("ardour.bindings");
last_configure_time.tv_sec = 0;
last_configure_time.tv_usec = 0;
@@ -345,9 +346,7 @@ ARDOUR_UI::save_ardour_state ()
Config->add_instant_xml (mnode, get_user_ardour_path());
}
- /* keybindings */
-
- AccelMap::save ("ardour.saved_bindings");
+ save_keybindings ();
}
void
@@ -382,6 +381,9 @@ If you still wish to quit, please use the\n\n\
}
}
+ if (session) {
+ session->set_deletion_in_progress ();
+ }
engine->stop (true);
Config->save_state();
quit ();
@@ -2412,3 +2414,15 @@ ARDOUR_UI::record_state_changed ()
break;
}
}
+
+void
+ARDOUR_UI::set_keybindings_path (string path)
+{
+ keybindings_path = path;
+}
+
+void
+ARDOUR_UI::save_keybindings ()
+{
+ AccelMap::save (keybindings_path);
+}
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index 80aad8763c..d59fbd476f 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -208,6 +208,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI
void set_native_file_header_format (ARDOUR::HeaderFormat sf);
void set_native_file_data_format (ARDOUR::SampleFormat sf);
+ void set_keybindings_path (std::string path);
+ void save_keybindings ();
+
protected:
friend class PublicEditor;
@@ -534,6 +537,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI
void connect_to_session (ARDOUR::Session *);
void connect_dependents_to_session (ARDOUR::Session *);
void we_have_dependents ();
+
+ std::string keybindings_path;
+
void setup_keybindings ();
void setup_session_options ();
@@ -665,7 +671,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI
void map_meter_falloff ();
void toggle_control_protocol (ARDOUR::ControlProtocolInfo*);
- void toggle_control_protocol_feedback (ARDOUR::ControlProtocolInfo*, const char* group_name, const char* action_name);
+ void toggle_control_protocol_feedback (ARDOUR::ControlProtocolInfo*, const char* group_name, std::string action_name);
};
#endif /* __ardour_gui_h__ */
diff --git a/gtk2_ardour/ardour_ui_dependents.cc b/gtk2_ardour/ardour_ui_dependents.cc
index e00a769a37..7c4f3563f3 100644
--- a/gtk2_ardour/ardour_ui_dependents.cc
+++ b/gtk2_ardour/ardour_ui_dependents.cc
@@ -60,19 +60,36 @@ ARDOUR_UI::we_have_dependents ()
editor->UpdateAllTransportClocks.connect (mem_fun (*this, &ARDOUR_UI::update_transport_clocks));
}
+static void
+accel_map_changed (GtkAccelMap* map,
+ gchar* path,
+ guint key,
+ GdkModifierType mod,
+ gpointer arg)
+{
+ static_cast<ARDOUR_UI*>(arg)->save_keybindings ();
+}
+
void
ARDOUR_UI::setup_keybindings ()
{
install_actions ();
RedirectBox::register_actions ();
- std::string key_binding_file = ARDOUR::find_config_file("ardour.bindings");
+ cerr << "loading bindings from " << keybindings_path << endl;
try {
- AccelMap::load (key_binding_file);
+ AccelMap::load (keybindings_path);
} catch (...) {
- error << "ardour key bindings file not found" << endmsg;
+ error << string_compose (_("Ardour key bindings file not found at \"%1\" or contains errors."), keybindings_path)
+ << endmsg;
}
+
+ /* catch changes */
+
+ GtkAccelMap* accelmap = gtk_accel_map_get();
+ g_signal_connect (accelmap, "changed", (GCallback) accel_map_changed, this);
+
}
void
@@ -80,6 +97,10 @@ ARDOUR_UI::connect_dependents_to_session (ARDOUR::Session *s)
{
editor->connect_to_session (s);
mixer->connect_to_session (s);
+
+ /* its safe to do this now */
+
+ s->restore_history ("");
}
void
diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc
index 2acf1b28c6..33307e61ec 100644
--- a/gtk2_ardour/ardour_ui_ed.cc
+++ b/gtk2_ardour/ardour_ui_ed.cc
@@ -479,7 +479,7 @@ ARDOUR_UI::toggle_control_protocol (ControlProtocolInfo* cpi)
}
void
-ARDOUR_UI::toggle_control_protocol_feedback (ControlProtocolInfo* cpi, const char* group, const char* action)
+ARDOUR_UI::toggle_control_protocol_feedback (ControlProtocolInfo* cpi, const char* group, string action)
{
if (!session) {
/* this happens when we build the menu bar when control protocol support
@@ -490,14 +490,17 @@ ARDOUR_UI::toggle_control_protocol_feedback (ControlProtocolInfo* cpi, const cha
}
if (cpi->protocol) {
- Glib::RefPtr<Gtk::Action> act = ActionManager::get_action (group, action);
+ Glib::RefPtr<Gtk::Action> act = ActionManager::get_action (group, action.c_str());
if (act) {
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
- bool x = tact->get_active();
- if (tact && x != cpi->protocol->get_feedback()) {
- cpi->protocol->set_feedback (!x);
+ if (tact) {
+ bool x = tact->get_active();
+
+ if (x != cpi->protocol->get_feedback()) {
+ cpi->protocol->set_feedback (x);
+ }
}
}
}
@@ -552,7 +555,7 @@ ARDOUR_UI::build_control_surface_menu ()
(bind (mem_fun (*this, &ARDOUR_UI::toggle_control_protocol_feedback),
*i,
"Editor",
- action_name.c_str())));
+ action_name)));
ui += "<menu action='";
ui += submenu_name;
diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc
index 02debbaf8a..c71abe8676 100644
--- a/gtk2_ardour/audio_region_view.cc
+++ b/gtk2_ardour/audio_region_view.cc
@@ -715,8 +715,7 @@ AudioRegionView::show_region_editor ()
// trackview.editor.ensure_float (*editor);
}
- editor->show_all ();
- editor->get_window()->raise();
+ editor->present ();
}
void
diff --git a/gtk2_ardour/crossfade_edit.cc b/gtk2_ardour/crossfade_edit.cc
index be96a65e9a..4271a35315 100644
--- a/gtk2_ardour/crossfade_edit.cc
+++ b/gtk2_ardour/crossfade_edit.cc
@@ -698,8 +698,6 @@ CrossfadeEditor::redraw ()
}
- // GTK2FIX some odd math to fix up here
-
size_t last_spt = (npoints + 3) - 1;
for (size_t i = 0; i < npoints; ++i) {
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index b21db92119..ef507740ff 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -2639,13 +2639,10 @@ Editor::setup_toolbar ()
zoom_focus_selector.signal_changed().connect (mem_fun(*this, &Editor::zoom_focus_selection_done));
ARDOUR_UI::instance()->tooltips().set_tip (zoom_focus_selector, _("Zoom focus"));
- zoom_box.pack_start (zoom_focus_selector, false, false);
+ zoom_box.pack_start (zoom_focus_selector, true, true);
zoom_box.pack_start (zoom_out_button, false, false);
zoom_box.pack_start (zoom_in_button, false, false);
- //zoom_box.pack_start (zoom_range_clock, false, false);
zoom_box.pack_start (zoom_out_full_button, false, false);
-
- ARDOUR_UI::instance()->tooltips().set_tip (zoom_range_clock, _("Current Zoom Range\n(Width of visible area)"));
/* Edit Cursor / Snap */
diff --git a/gtk2_ardour/editor_imageframe.cc b/gtk2_ardour/editor_imageframe.cc
index b90ce17423..0e5131bb97 100644
--- a/gtk2_ardour/editor_imageframe.cc
+++ b/gtk2_ardour/editor_imageframe.cc
@@ -100,16 +100,14 @@ Editor::scroll_timeaxis_to_imageframe_item(const TimeAxisViewItem* item)
nframes_t offset = 0;
nframes_t x_pos = 0 ;
- if(item->get_position() < offset)
- {
+
+ if (item->get_position() < offset) {
x_pos = 0 ;
- }
- else
- {
- x_pos = item->get_position() - offset + (item->get_duration() / 2) ;
+ } else {
+ x_pos = item->get_position() - offset + (item->get_duration() / 2);
}
- reposition_x_origin(x_pos) ;
+ reposition_x_origin (x_pos);
}
void
diff --git a/gtk2_ardour/main.cc b/gtk2_ardour/main.cc
index 21b03f9a63..3e0d6d4e62 100644
--- a/gtk2_ardour/main.cc
+++ b/gtk2_ardour/main.cc
@@ -417,6 +417,9 @@ int main (int argc, char *argv[])
exit (1);
}
+ if (!keybindings_path.empty()) {
+ ui->set_keybindings_path (keybindings_path);
+ }
if (!no_splash) {
ui->show_splash ();
@@ -445,7 +448,7 @@ int main (int argc, char *argv[])
}
ui->start_engine ();
-
+
if (maybe_load_session ()) {
ui->run (text_receiver);
ui = 0;
diff --git a/gtk2_ardour/option_editor.cc b/gtk2_ardour/option_editor.cc
index 77af855845..ac3122d740 100644
--- a/gtk2_ardour/option_editor.cc
+++ b/gtk2_ardour/option_editor.cc
@@ -533,7 +533,7 @@ void
OptionEditor::port_online_toggled (MIDI::Port* port, ToggleButton* tb)
{
bool wanted = tb->get_active();
-
+
if (wanted != port->input()->offline()) {
port->input()->set_offline (wanted);
}
@@ -542,12 +542,16 @@ OptionEditor::port_online_toggled (MIDI::Port* port, ToggleButton* tb)
void
OptionEditor::map_port_online (MIDI::Port* port, ToggleButton* tb)
{
- if (port->input()->offline()) {
- tb->set_label (_("offline"));
- tb->set_active (false);
- } else {
- tb->set_label (_("online"));
- tb->set_active (true);
+ bool bstate = tb->get_active ();
+
+ if (bstate != port->input()->offline()) {
+ if (port->input()->offline()) {
+ tb->set_label (_("offline"));
+ tb->set_active (false);
+ } else {
+ tb->set_label (_("online"));
+ tb->set_active (true);
+ }
}
}
diff --git a/gtk2_ardour/opts.cc b/gtk2_ardour/opts.cc
index fcd62de512..820b346d40 100644
--- a/gtk2_ardour/opts.cc
+++ b/gtk2_ardour/opts.cc
@@ -37,6 +37,7 @@ bool GTK_ARDOUR::use_vst = true;
bool GTK_ARDOUR::new_session = false;
char* GTK_ARDOUR::curvetest_file = 0;
bool GTK_ARDOUR::try_hw_optimization = true;
+string GTK_ARDOUR::keybindings_path = ""; /* empty means use builtin default */
using namespace GTK_ARDOUR;
@@ -56,7 +57,7 @@ print_help (const char *execname)
#endif
<< _(" [session-name] Name of session to load\n")
<< _(" -C, --curvetest filename Curve algorithm debugger\n")
- << _(" -g, --gtktheme Allow GTK to load a theme\n")
+ << _(" -k, --keybindings filename Name of key bindings to load (default is ~/.ardour2/ardour.bindings)")
;
return 1;
@@ -66,7 +67,7 @@ int
GTK_ARDOUR::parse_opts (int argc, char *argv[])
{
- const char *optstring = "U:hbvVnoc:C:N:g";
+ const char *optstring = "U:hbvVnoc:C:N:k:";
const char *execname = strrchr (argv[0], '/');
if (execname == 0) {
@@ -85,7 +86,6 @@ GTK_ARDOUR::parse_opts (int argc, char *argv[])
{ "new", 1, 0, 'N' },
{ "no-hw-optimizations", 0, 0, 'O' },
{ "curvetest", 1, 0, 'C' },
- { "gtktheme", 0, 0, 'g' },
{ 0, 0, 0, 0 }
};
@@ -142,6 +142,10 @@ GTK_ARDOUR::parse_opts (int argc, char *argv[])
curvetest_file = optarg;
break;
+ case 'k':
+ keybindings_path = optarg;
+ break;
+
default:
return print_help(execname);
}
diff --git a/gtk2_ardour/opts.h b/gtk2_ardour/opts.h
index 0516c3aa98..710621ac65 100644
--- a/gtk2_ardour/opts.h
+++ b/gtk2_ardour/opts.h
@@ -37,6 +37,7 @@ extern bool new_session;
extern char* curvetest_file;
extern bool try_hw_optimization;
extern bool use_gtk_theme;
+extern string keybindings_path;
extern int32_t parse_opts (int argc, char *argv[]);
diff --git a/gtk2_ardour/playlist_selector.cc b/gtk2_ardour/playlist_selector.cc
index 87531bbbd0..d02c5a88de 100644
--- a/gtk2_ardour/playlist_selector.cc
+++ b/gtk2_ardour/playlist_selector.cc
@@ -61,9 +61,8 @@ PlaylistSelector::PlaylistSelector ()
scroller.add (tree);
scroller.set_policy (POLICY_AUTOMATIC, POLICY_AUTOMATIC);
- // GTK2FIX do we need this stuff or is GTK applying some policy now?
- //set_border_width (6);
- // set_spacing (12);
+ get_vbox()->set_border_width (6);
+ get_vbox()->set_spacing (12);
get_vbox()->pack_start (scroller);
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h
index 253cd28b7f..3ea443d9ef 100644
--- a/libs/ardour/ardour/session.h
+++ b/libs/ardour/ardour/session.h
@@ -242,6 +242,7 @@ class Session : public PBD::StatefulDestructible
void set_dirty ();
void set_clean ();
bool dirty() const { return _state_of_the_state & Dirty; }
+ void set_deletion_in_progress ();
bool deletion_in_progress() const { return _state_of_the_state & Deletion; }
sigc::signal<void> DirtyChanged;
@@ -762,8 +763,10 @@ class Session : public PBD::StatefulDestructible
std::map<PBD::ID, PBD::StatefulThingWithGoingAway*> registry;
// these commands are implemented in libs/ardour/session_command.cc
- Command *memento_command_factory(XMLNode *n);
- void register_with_memento_command_factory(PBD::ID, PBD::StatefulThingWithGoingAway *);
+ Command* memento_command_factory(XMLNode* n);
+ void register_with_memento_command_factory(PBD::ID, PBD::StatefulThingWithGoingAway*);
+
+ Command* global_state_command_factory (XMLNode* n);
class GlobalSoloStateCommand : public Command
{
diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc
index e68dc718d9..b68235171f 100644
--- a/libs/ardour/audioengine.cc
+++ b/libs/ardour/audioengine.cc
@@ -156,6 +156,7 @@ AudioEngine::stop (bool forever)
jack_client_t* foo = _jack;
_jack = 0;
jack_client_close (foo);
+ stop_metering_thread ();
} else {
jack_deactivate (_jack);
}
@@ -379,9 +380,9 @@ AudioEngine::stop_metering_thread ()
{
if (m_meter_thread) {
g_atomic_int_set (&m_meter_exit, 1);
+ m_meter_thread->join ();
+ m_meter_thread = 0;
}
- m_meter_thread->join ();
- m_meter_thread = 0;
}
void
@@ -395,8 +396,11 @@ AudioEngine::start_metering_thread ()
void
AudioEngine::meter_thread ()
{
- while (g_atomic_int_get(&m_meter_exit) != true) {
+ while (true) {
Glib::usleep (10000); /* 1/100th sec interval */
+ if (g_atomic_int_get(&m_meter_exit)) {
+ break;
+ }
IO::update_meters ();
}
}
diff --git a/libs/ardour/audiosource.cc b/libs/ardour/audiosource.cc
index a8d8929812..cc6d156c9c 100644
--- a/libs/ardour/audiosource.cc
+++ b/libs/ardour/audiosource.cc
@@ -35,6 +35,7 @@
#include <pbd/pthread_utils.h>
#include <ardour/audiosource.h>
+#include <ardour/cycle_timer.h>
#include "i18n.h"
@@ -431,7 +432,8 @@ AudioSource::read_peaks (PeakData *peaks, nframes_t npeaks, nframes_t start, nfr
expected_peaks = (cnt / (double) frames_per_peak);
scale = npeaks/expected_peaks;
-#if 0
+#undef DEBUG_READ_PEAKS
+#ifdef DEBUG_READ_PEAKS
cerr << "======>RP: npeaks = " << npeaks
<< " start = " << start
<< " cnt = " << cnt
@@ -457,8 +459,9 @@ AudioSource::read_peaks (PeakData *peaks, nframes_t npeaks, nframes_t start, nfr
if (npeaks == cnt) {
+#ifdef DEBUG_READ_PEAKS
cerr << "RAW DATA\n";
-
+#endif
/* no scaling at all, just get the sample data and duplicate it for
both max and min peak values.
*/
@@ -490,7 +493,9 @@ AudioSource::read_peaks (PeakData *peaks, nframes_t npeaks, nframes_t start, nfr
return -1;
}
- // cerr << "DIRECT PEAKS\n";
+#ifdef DEBUG_READ_PEAKS
+ cerr << "DIRECT PEAKS\n";
+#endif
nread = ::pread (peakfile, peaks, sizeof (PeakData)* npeaks, first_peak_byte);
close (peakfile);
@@ -523,8 +528,9 @@ AudioSource::read_peaks (PeakData *peaks, nframes_t npeaks, nframes_t start, nfr
if (scale < 1.0) {
- // cerr << "DOWNSAMPLE\n";
-
+#ifdef DEBUG_READ_PEAKS
+ cerr << "DOWNSAMPLE\n";
+#endif
/* the caller wants:
- more frames-per-peak (lower resolution) than the peakfile, or to put it another way,
@@ -535,7 +541,7 @@ AudioSource::read_peaks (PeakData *peaks, nframes_t npeaks, nframes_t start, nfr
to avoid confusion, I'll refer to the requested peaks as visual_peaks and the peakfile peaks as stored_peaks
*/
- const uint32_t chunksize = (uint32_t) min (expected_peaks, 4096.0);
+ const uint32_t chunksize = (uint32_t) min (expected_peaks, 65536.0);
staging = new PeakData[chunksize];
@@ -569,10 +575,15 @@ AudioSource::read_peaks (PeakData *peaks, nframes_t npeaks, nframes_t start, nfr
tnp = min ((_length/frames_per_peak - current_stored_peak), (nframes_t) expected_peaks);
to_read = min (chunksize, tnp);
- off_t fend = lseek (peakfile, 0, SEEK_END);
+#ifdef DEBUG_READ_PEAKS
+ cerr << "read " << sizeof (PeakData) * to_read << " from peakfile @ " << start_byte << endl;
+#endif
if ((nread = ::pread (peakfile, staging, sizeof (PeakData) * to_read, start_byte))
!= sizeof (PeakData) * to_read) {
+
+ off_t fend = lseek (peakfile, 0, SEEK_END);
+
cerr << "AudioSource["
<< _name
<< "]: cannot read peak data from peakfile ("
@@ -589,11 +600,11 @@ AudioSource::read_peaks (PeakData *peaks, nframes_t npeaks, nframes_t start, nfr
<< endl;
goto out;
}
-
+
i = 0;
stored_peaks_read = nread / sizeof(PeakData);
}
-
+
xmax = -1.0;
xmin = 1.0;
@@ -624,8 +635,9 @@ AudioSource::read_peaks (PeakData *peaks, nframes_t npeaks, nframes_t start, nfr
} else {
- // cerr << "UPSAMPLE\n";
-
+#ifdef DEBUG_READ_PEAKS
+ cerr << "UPSAMPLE\n";
+#endif
/* the caller wants
- less frames-per-peak (more resolution)
@@ -704,6 +716,10 @@ AudioSource::read_peaks (PeakData *peaks, nframes_t npeaks, nframes_t start, nfr
delete [] raw_staging;
}
+#ifdef DEBUG_READ_PEAKS
+ cerr << "RP DONE\n";
+#endif
+
return ret;
}
@@ -777,6 +793,7 @@ AudioSource::do_build_peak (nframes_t first_frame, nframes_t cnt)
off_t first_peak_byte;
int peakfile = -1;
int ret = -1;
+ off_t target_length;
#ifdef DEBUG_PEAK_BUILD
cerr << pthread_self() << ": " << _name << ": building peaks for " << first_frame << " to " << first_frame + cnt - 1 << endl;
@@ -828,6 +845,20 @@ AudioSource::do_build_peak (nframes_t first_frame, nframes_t cnt)
cnt -= frames_read;
}
+#define BLOCKSIZE (256 * 1024)
+
+ target_length = BLOCKSIZE * ((first_peak_byte + BLOCKSIZE + 1) / BLOCKSIZE);
+
+ /* on some filesystems (ext3, at least) this helps to reduce fragmentation of
+ the peakfiles. its not guaranteed to do so, and even on ext3 (as of december 2006)
+ it does not cause single-extent allocation even for peakfiles of
+ less than BLOCKSIZE bytes.
+ */
+
+ ftruncate (peakfile, target_length);
+
+ /* error doesn't actually matter though, so continue on without testing */
+
if (::pwrite (peakfile, peakbuf, sizeof (PeakData) * peaki, first_peak_byte) != (ssize_t) (sizeof (PeakData) * peaki)) {
error << string_compose(_("%1: could not write peak file data (%2)"), _name, strerror (errno)) << endmsg;
goto out;
diff --git a/libs/ardour/control_protocol_manager.cc b/libs/ardour/control_protocol_manager.cc
index a715254747..495a66465e 100644
--- a/libs/ardour/control_protocol_manager.cc
+++ b/libs/ardour/control_protocol_manager.cc
@@ -180,7 +180,7 @@ ControlProtocolManager::discover_control_protocols (string path)
vector<string *> *found;
PathScanner scanner;
- info << string_compose (_("looking for control protocols in %1"), path) << endmsg;
+ // info << string_compose (_("looking for control protocols in %1"), path) << endmsg;
found = scanner (path, protocol_filter, 0, false, true);
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index 86770939da..932db17909 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -831,10 +831,6 @@ Session::when_engine_running ()
}
}
-
- /* its safe to do this now */
-
- restore_history (snap_name());
_state_of_the_state = StateOfTheState (_state_of_the_state & ~(CannotSave|Dirty));
@@ -861,7 +857,6 @@ Session::hookup_io ()
*/
_state_of_the_state = StateOfTheState (_state_of_the_state | InitialConnecting);
- cerr << "InitialConnecting set\n";
if (auditioner == 0) {
@@ -917,7 +912,6 @@ Session::hookup_io ()
IOConnectionsComplete (); /* EMIT SIGNAL */
_state_of_the_state = StateOfTheState (_state_of_the_state & ~InitialConnecting);
- cerr << "InitialConnectingUN set\n";
/* now handle the whole enchilada as if it was one
graph reorder event.
diff --git a/libs/ardour/session_command.cc b/libs/ardour/session_command.cc
index 06ed44f722..022aa43145 100644
--- a/libs/ardour/session_command.cc
+++ b/libs/ardour/session_command.cc
@@ -22,7 +22,8 @@ void Session::register_with_memento_command_factory(PBD::ID id, PBD::StatefulThi
registry[id] = ptr;
}
-Command *Session::memento_command_factory(XMLNode *n)
+Command *
+Session::memento_command_factory(XMLNode *n)
{
PBD::ID id;
XMLNode *before = 0, *after = 0;
@@ -87,6 +88,13 @@ Command *Session::memento_command_factory(XMLNode *n)
return 0 ;
}
+Command *
+Session::global_state_command_factory(XMLNode *n)
+{
+ error << string_compose (_("cannot reconstitute %1 from XML yet, ignored"), n->name()) << endmsg;
+ return 0 ;
+}
+
// solo
Session::GlobalSoloStateCommand::GlobalSoloStateCommand(Session &sess, void *src)
: sess(sess), src(src)
diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc
index 55f2e4be29..cbc363a203 100644
--- a/libs/ardour/session_state.cc
+++ b/libs/ardour/session_state.cc
@@ -1218,7 +1218,6 @@ Session::set_state (const XMLNode& node)
StateReady (); /* EMIT SIGNAL */
_state_of_the_state = Clean;
- cerr << "session marked clean\n";
if (state_was_pending) {
save_state (_current_snapshot_name);
@@ -2818,6 +2817,12 @@ Session::set_clean ()
}
void
+Session::set_deletion_in_progress ()
+{
+ _state_of_the_state = StateOfTheState (_state_of_the_state | Deletion);
+}
+
+void
Session::add_controllable (Controllable* c)
{
Glib::Mutex::Lock lm (controllables_lock);
@@ -2917,6 +2922,10 @@ Session::restore_history (string snapshot_name)
XMLTree tree;
string xmlpath;
+ if (snapshot_name.empty()) {
+ snapshot_name = _current_snapshot_name;
+ }
+
/* read xml */
xmlpath = _path + snapshot_name + ".history";
cerr << string_compose(_("Loading history from '%1'."), xmlpath) << endmsg;
@@ -2957,10 +2966,21 @@ Session::restore_history (string snapshot_name)
if (n->name() == "MementoCommand" ||
n->name() == "MementoUndoCommand" ||
n->name() == "MementoRedoCommand") {
+
if ((c = memento_command_factory(n))) {
ut->add_command(c);
}
+
+ } else if (n->name() == "GlobalRecordEnableStateCommand" ||
+ n->name() == "GlobalSoloStateCommand" ||
+ n->name() == "GlobalMuteStateCommand") {
+
+ if ((c = global_state_command_factory (n))) {
+ ut->add_command (c);
+ }
+
} else {
+
error << string_compose(_("Couldn't figure out how to make a Command out of a %1 XMLNode."), n->name()) << endmsg;
}
}
diff --git a/libs/clearlooks/SConscript b/libs/clearlooks/SConscript
index 0df20efe56..fe8acf915f 100644
--- a/libs/clearlooks/SConscript
+++ b/libs/clearlooks/SConscript
@@ -1,4 +1,14 @@
+# -*- python -*-
+
import os.path
+import glob
+
+libclearlooks_files = [
+ 'clearlooks_draw.c',
+ 'clearlooks_rc_style.c',
+ 'clearlooks_style.c',
+ 'clearlooks_theme_main.c',
+ 'support.c' ]
Import ('env install_prefix')
@@ -7,13 +17,7 @@ clearlooks = env.Copy()
clearlooks.Replace(CCFLAGS = ' `pkg-config --cflags gtk+-2.0` ',
LINKFLAGS = ' `pkg-config --libs gtk+-2.0` ')
-libclearlooks = clearlooks.SharedLibrary('clearlooks', [
- 'clearlooks_draw.c',
- 'clearlooks_rc_style.c',
- 'clearlooks_style.c',
- 'clearlooks_theme_main.c',
- 'support.c'
-])
+libclearlooks = clearlooks.SharedLibrary('clearlooks', libclearlooks_files)
usable_libclearlooks = clearlooks.Install ('engines', libclearlooks)
Default (usable_libclearlooks)
@@ -21,3 +25,9 @@ Default (usable_libclearlooks)
env.Alias('install',
env.Install(os.path.join(install_prefix,'lib/ardour2/engines'),
libclearlooks))
+
+env.Alias('tarball', env.Distribute (env['DISTTREE'],
+ [ 'SConscript', 'bits.c'] +
+ libclearlooks_files +
+ glob.glob('*.h')
+ ))
diff --git a/templates/SConscript b/templates/SConscript
index 7fa556530b..874d70cf06 100644
--- a/templates/SConscript
+++ b/templates/SConscript
@@ -3,6 +3,7 @@
import os
import glob
template_files = glob.glob('*.template.in')
+files = glob.glob('*.template')
Import('env install_prefix subst_dict')
@@ -13,5 +14,5 @@ for template in template_files:
Default(template_build)
-env.Alias('install', env.Install(os.path.join(install_prefix, 'share/ardour2/templates'), template_build))
+env.Alias('install', env.Install(os.path.join(install_prefix, 'share/ardour2/templates'), files))
env.Alias('tarball', env.Distribute (env['DISTTREE'], [ 'SConscript' ] + template_build))