ardour.git
4 years agoFurther tweaks to .pending file removal
Robin Gareus [Fri, 16 Aug 2019 03:31:50 +0000 (05:31 +0200)]
Further tweaks to .pending file removal

* only delete it after successful save
* show unlink notification in debug-builds

4 years agoPrefer implicit deletion of .pending
Robin Gareus [Thu, 15 Aug 2019 23:55:54 +0000 (01:55 +0200)]
Prefer implicit deletion of .pending

Session destruction removes ".pending", no need to explicitly delete
the file.

4 years agoFix periodic backup saves
Robin Gareus [Thu, 15 Aug 2019 23:54:21 +0000 (01:54 +0200)]
Fix periodic backup saves

Retain ".pending" files until explicit save or session destruction.
Previously every transport-stop deleted them :(

4 years agoFix C++98 compat
Robin Gareus [Thu, 15 Aug 2019 23:51:51 +0000 (01:51 +0200)]
Fix C++98 compat

4 years agoPrefer "one track per file" as default
Robin Gareus [Wed, 14 Aug 2019 23:30:17 +0000 (01:30 +0200)]
Prefer "one track per file" as default

4 years agoDon't print usage to stdout for invalid parameters
Robin Gareus [Wed, 14 Aug 2019 23:07:41 +0000 (01:07 +0200)]
Don't print usage to stdout for invalid parameters

4 years agoTweak .clang-format
Robin Gareus [Mon, 12 Aug 2019 23:06:12 +0000 (01:06 +0200)]
Tweak .clang-format

4 years agoNO-OP: clang format, comments & whitespace
Robin Gareus [Mon, 12 Aug 2019 22:56:48 +0000 (00:56 +0200)]
NO-OP: clang format, comments & whitespace

4 years agoRemove unused EditorSources selection filter
Robin Gareus [Mon, 12 Aug 2019 22:53:04 +0000 (00:53 +0200)]
Remove unused EditorSources selection filter

4 years agoRemove remnants of hack from 9f3f3738e7444ee3
Robin Gareus [Mon, 12 Aug 2019 22:49:45 +0000 (00:49 +0200)]
Remove remnants of hack from 9f3f3738e7444ee3

This fixes multiple selection. The original code using
"selection_countdown" is no longer in place. There's no "counter" to arm.

Shift/Tab name edit works regardless.
"s/m/r" solo/mute/rec shortcuts in the treeview have been discontinued
since a long time as well. Keyboard shortcuts are per window, regardless
of grab_focus()

PS. This change makes it easier for a user to start a drag/drop
operation of multiple regions. That currently assert()s, only
the first selected region is used.

4 years agoFix transient removal -- #7785
Robin Gareus [Mon, 12 Aug 2019 22:38:57 +0000 (00:38 +0200)]
Fix transient removal -- #7785

Incorrect iterators were used for user-transients.

4 years agoRemove unused EditorRoutes selection filter
Robin Gareus [Mon, 12 Aug 2019 17:31:42 +0000 (19:31 +0200)]
Remove unused EditorRoutes selection filter

4 years agoRe-order editor sidebar: prioritize "Tracks & Busses"
Robin Gareus [Mon, 12 Aug 2019 16:28:19 +0000 (18:28 +0200)]
Re-order editor sidebar: prioritize "Tracks & Busses"

4 years ago(RegionList) Tweak column ordering + fix translation naming
Robin Gareus [Mon, 12 Aug 2019 15:59:48 +0000 (17:59 +0200)]
(RegionList) Tweak column ordering + fix translation naming

4 years agoSource List: Explicitly check whether a file is in the {Audio|MIDI} folder where...
Ben Loftis [Thu, 1 Aug 2019 21:04:55 +0000 (16:04 -0500)]
Source List: Explicitly check whether a file is in the {Audio|MIDI} folder where it should be.
Anywhere else (even somewhere else inside the session folder) should be flagged "weird"

4 years agoSource List: Source regions can be tagged, too.
Ben Loftis [Thu, 1 Aug 2019 20:27:21 +0000 (15:27 -0500)]
Source List: Source regions can be tagged, too.

4 years agoAdd Pref to write mixer-screenshot post-export
Robin Gareus [Mon, 12 Aug 2019 14:53:55 +0000 (16:53 +0200)]
Add Pref to write mixer-screenshot post-export

4 years agoConsolidate: use PBD method to try hard-linking
Robin Gareus [Mon, 12 Aug 2019 14:42:07 +0000 (16:42 +0200)]
Consolidate: use PBD method to try hard-linking

4 years agoAdd PBD API to hard-link files
Robin Gareus [Mon, 12 Aug 2019 14:41:25 +0000 (16:41 +0200)]
Add PBD API to hard-link files

4 years agoAllow export get_path() without format
Robin Gareus [Mon, 12 Aug 2019 13:44:16 +0000 (15:44 +0200)]
Allow export get_path() without format

This is in preparation for post-export screenshots:
A possibility to get a file-path, independent of the format.

4 years agoNO-OP: whitespace
Robin Gareus [Mon, 12 Aug 2019 13:39:28 +0000 (15:39 +0200)]
NO-OP: whitespace

4 years agoNO-OP: mark private variables, remove cruft
Robin Gareus [Mon, 12 Aug 2019 13:29:39 +0000 (15:29 +0200)]
NO-OP: mark private variables, remove cruft

4 years agoInitialize some more uninitialized variables
Robin Gareus [Mon, 12 Aug 2019 13:18:00 +0000 (15:18 +0200)]
Initialize some more uninitialized variables

4 years agoPrefer std::vector<> over C-style malloc/free**
Robin Gareus [Mon, 12 Aug 2019 13:02:24 +0000 (15:02 +0200)]
Prefer std::vector<> over C-style malloc/free**

This fixes a potential out of bounds read `if (_dbtp_plugin[c])`
if c is larger than the allocated channel count.

4 years agoInitialize variable
Robin Gareus [Mon, 12 Aug 2019 12:34:33 +0000 (14:34 +0200)]
Initialize variable

4 years agoInitialize variable
Robin Gareus [Mon, 12 Aug 2019 12:34:17 +0000 (14:34 +0200)]
Initialize variable

4 years agoFix middle-click note selection
Robin Gareus [Mon, 12 Aug 2019 02:49:31 +0000 (04:49 +0200)]
Fix middle-click note selection

4 years agoFix midi-note selection invert
Robin Gareus [Mon, 12 Aug 2019 00:28:38 +0000 (02:28 +0200)]
Fix midi-note selection invert

Selecting Notes in a region does not select the region itself.

Invert-selection needs to iterate over midi-regions that contain
the selection.

4 years ago(RegionList) Don't change selection for context-menu
Robin Gareus [Mon, 12 Aug 2019 00:07:03 +0000 (02:07 +0200)]
(RegionList) Don't change selection for context-menu

4 years agoAdd Action to save mixer screenshot
Robin Gareus [Sun, 11 Aug 2019 23:39:48 +0000 (01:39 +0200)]
Add Action to save mixer screenshot

4 years agoAdd Lua-Dialog support for FileChooserWidget (save file)
Robin Gareus [Sun, 11 Aug 2019 23:06:14 +0000 (01:06 +0200)]
Add Lua-Dialog support for FileChooserWidget (save file)

4 years agoAdd Lua bindings for convenient Glib methods
Robin Gareus [Sun, 11 Aug 2019 23:00:42 +0000 (01:00 +0200)]
Add Lua bindings for convenient Glib methods

4 years agoFix auto capture alignment when bouncing metronome
Robin Gareus [Sun, 11 Aug 2019 18:37:36 +0000 (20:37 +0200)]
Fix auto capture alignment when bouncing metronome

4 years agoAllow to inhibit screensaver/system sleep
Robin Gareus [Sun, 11 Aug 2019 18:37:07 +0000 (20:37 +0200)]
Allow to inhibit screensaver/system sleep

4 years agoAdd types/enum for screensaver mode
Robin Gareus [Sun, 11 Aug 2019 17:04:42 +0000 (19:04 +0200)]
Add types/enum for screensaver mode

4 years agoSimplify screensaver inhibit API and fix OSX compatibility
Robin Gareus [Sun, 11 Aug 2019 17:04:02 +0000 (19:04 +0200)]
Simplify screensaver inhibit API and fix OSX compatibility

4 years agoAdd/remove source(s) in our MSVC project (gtk2_ardour)
John Emmas [Sun, 11 Aug 2019 09:56:01 +0000 (10:56 +0100)]
Add/remove source(s) in our MSVC project (gtk2_ardour)

4 years agoPrototype infrastructure to disable screensaver
Robin Gareus [Sat, 10 Aug 2019 21:20:39 +0000 (23:20 +0200)]
Prototype infrastructure to disable screensaver

4 years agoptformat: Update to upstream 8d29d79 (drop fades && fix offsets)
Damien Zammit [Sat, 10 Aug 2019 02:34:45 +0000 (12:34 +1000)]
ptformat: Update to upstream 8d29d79 (drop fades && fix offsets)

4 years agoAdd script to `xdot` plot the process graph
Robin Gareus [Wed, 7 Aug 2019 15:39:47 +0000 (17:39 +0200)]
Add script to `xdot` plot the process graph

4 years agoAdd Lua bindings for Pango Alignment
Robin Gareus [Wed, 7 Aug 2019 15:32:05 +0000 (17:32 +0200)]
Add Lua bindings for Pango Alignment

4 years agoNO-OP: Fix compiler warning (-Wreturn-type)
Robin Gareus [Wed, 7 Aug 2019 15:27:56 +0000 (17:27 +0200)]
NO-OP: Fix compiler warning (-Wreturn-type)

4 years agoAdd method to graphviz plot the process-graph
Robin Gareus [Wed, 7 Aug 2019 15:27:01 +0000 (17:27 +0200)]
Add method to graphviz plot the process-graph

4 years agoGui should allow foldback bus to be mono.
Len Ovens [Tue, 6 Aug 2019 20:16:44 +0000 (13:16 -0700)]
Gui should allow foldback bus to be mono.

4 years agofoldback may be mono don't set panner type
Len Ovens [Tue, 6 Aug 2019 18:13:30 +0000 (11:13 -0700)]
foldback may be mono don't set panner type

4 years agoOSC: foldback buses should be able to be mono
Len Ovens [Tue, 6 Aug 2019 18:12:19 +0000 (11:12 -0700)]
OSC: foldback buses should be able to be mono

4 years agoAmend 183d3fb49; implement ImportableSource API
Robin Gareus [Sun, 4 Aug 2019 12:43:46 +0000 (14:43 +0200)]
Amend 183d3fb49; implement ImportableSource API

4 years agoFix meter metric visibility on narrow strips - #7781
Robin Gareus [Sun, 4 Aug 2019 00:40:59 +0000 (02:40 +0200)]
Fix meter metric visibility on narrow strips - #7781

After session load, the meter numerics were always visible,
regardless of strip width.
MixerStrip::set_stuff_from_route() and MixerStrip::set_width_enum()
are called before Mixer UI is realized and calls show_all().

4 years agoImplement missing required virtual fn -- fix Mac builds
Robin Gareus [Sat, 3 Aug 2019 23:37:36 +0000 (01:37 +0200)]
Implement missing required virtual fn -- fix Mac builds

4 years agoUpdate plugins/addons GPL boilerplate and (C) from git log
Robin Gareus [Sat, 3 Aug 2019 12:34:29 +0000 (14:34 +0200)]
Update plugins/addons GPL boilerplate and (C) from git log

4 years agoUpdate utility and tools GPL boilerplate and (C) from git log
Robin Gareus [Sat, 3 Aug 2019 13:48:50 +0000 (15:48 +0200)]
Update utility and tools GPL boilerplate and (C) from git log

4 years agoUpdate core library GPL boilerplate and (C) from git log
Robin Gareus [Sat, 3 Aug 2019 03:10:55 +0000 (05:10 +0200)]
Update core library GPL boilerplate and (C) from git log

4 years agoUpdate canvas/UI lib GPL boilerplate and (C) from git log
Robin Gareus [Sat, 3 Aug 2019 02:40:09 +0000 (04:40 +0200)]
Update canvas/UI lib GPL boilerplate and (C) from git log

4 years agoUpdate audiographer GPL boilerplate and (C) from git log
Robin Gareus [Sat, 3 Aug 2019 02:16:37 +0000 (04:16 +0200)]
Update audiographer GPL boilerplate and (C) from git log

4 years agoUpdate backend GPL boilerplate and (C) from git log
Robin Gareus [Sat, 3 Aug 2019 02:11:41 +0000 (04:11 +0200)]
Update backend GPL boilerplate and (C) from git log

4 years agoUpdate libardour GPL boilerplate and (C) from git log
Robin Gareus [Sat, 3 Aug 2019 02:01:25 +0000 (04:01 +0200)]
Update libardour GPL boilerplate and (C) from git log

4 years agoUpdate GPL boilerplate and (C)
Robin Gareus [Fri, 2 Aug 2019 21:26:43 +0000 (23:26 +0200)]
Update GPL boilerplate and (C)

Copyright-holder and year information is extracted from git log.

git history begins in 2005. So (C) from 1998..2005 is lost. Also some
(C) assignment of commits where the committer didn't use --author.

4 years agoRemove cruft
Robin Gareus [Fri, 2 Aug 2019 20:44:46 +0000 (22:44 +0200)]
Remove cruft

4 years agoAdd/remove source(s) in our MSVC project (gtk2_ardour)
John Emmas [Fri, 2 Aug 2019 08:07:54 +0000 (09:07 +0100)]
Add/remove source(s) in our MSVC project (gtk2_ardour)

4 years agoFix CD cue file Index positions -- #7780
Robin Gareus [Fri, 2 Aug 2019 00:43:43 +0000 (02:43 +0200)]
Fix CD cue file Index positions -- #7780

According to the cdrdao man page, they should be defined as follows:
  INDEX MM:SS:FF
   Increments the index number at given position within the track.
   The first statement will increment from 1 to 2. The position is
   relative to the real track start, not counting an existing pre-gap.

4 years agoprefer lowercase and no spaces, since this will appear in the filename.
Ben Loftis [Wed, 31 Jul 2019 16:14:38 +0000 (11:14 -0500)]
prefer lowercase and no spaces, since this will appear in the filename.

4 years ago(Source List) Catch new sources created by bounce-range-to-source-list
Ben Loftis [Tue, 30 Jul 2019 20:43:22 +0000 (15:43 -0500)]
(Source List) Catch new sources created by bounce-range-to-source-list

4 years ago(Source List) Handle Session::RemoveSource
Ben Loftis [Tue, 30 Jul 2019 18:43:14 +0000 (13:43 -0500)]
(Source List) Handle Session::RemoveSource

4 years ago(Source List) Replace missing initializer; fixes a bug where Sources did not appear...
Ben Loftis [Tue, 30 Jul 2019 18:14:06 +0000 (13:14 -0500)]
(Source List) Replace missing initializer; fixes a bug where Sources did not appear on startup.

4 years ago(Source List) Implement insert-region action... now uses the Source List.
Ben Loftis [Tue, 30 Jul 2019 18:02:15 +0000 (13:02 -0500)]
(Source List) Implement insert-region action... now uses the Source List.

4 years ago(Source List) Recover Regions feature: WIP
Ben Loftis [Fri, 7 Jun 2019 01:28:40 +0000 (20:28 -0500)]
(Source List) Recover Regions feature:  WIP

4 years ago(Source List) Revert to displaying whole-file Regions instead of Sources.
Ben Loftis [Fri, 31 May 2019 18:36:46 +0000 (13:36 -0500)]
(Source List) Revert to displaying whole-file Regions instead of Sources.
This preserves the stereo-ness of files that were imported or recorded in stereo.

ToDo  (maybe someday): provide a disclosure triangle that exposes the individual channels in a multichannel region

4 years ago(Source List) Add forall_regions function, used by Region and Source lists.
Ben Loftis [Fri, 31 May 2019 18:35:40 +0000 (13:35 -0500)]
(Source List) Add forall_regions function, used by Region and Source lists.

4 years ago(Source List) No need to show the path when file is internal to session.
Ben Loftis [Fri, 7 Dec 2018 18:44:15 +0000 (12:44 -0600)]
(Source List) No need to show the path when file is internal to session.

4 years ago(Source List) merge fixes
Ben Loftis [Wed, 29 May 2019 21:18:23 +0000 (16:18 -0500)]
(Source List) merge fixes

4 years ago(Source List) Clean up the natural_position implementation (gtk2 part).
Ben Loftis [Thu, 15 Nov 2018 15:33:44 +0000 (09:33 -0600)]
(Source List) Clean up the natural_position implementation (gtk2 part).

4 years ago(Source List) Clean up the natural_position implementation (libardour part).
Ben Loftis [Thu, 15 Nov 2018 15:33:54 +0000 (09:33 -0600)]
(Source List) Clean up the natural_position implementation (libardour part).

4 years ago(Source List) Implement remove_selected_sources when the user clicks Delete key.
Ben Loftis [Thu, 8 Nov 2018 19:07:52 +0000 (13:07 -0600)]
(Source List) Implement remove_selected_sources when the user clicks Delete key.

4 years ago(Source List) NOOP: whitespace cleanup
Paul Davis [Thu, 8 Nov 2018 16:43:39 +0000 (11:43 -0500)]
(Source List) NOOP: whitespace cleanup

remove debug output

4 years ago(Source List) Fix drag-n-drop.
Ben Loftis [Thu, 15 Nov 2018 15:30:22 +0000 (09:30 -0600)]
(Source List) Fix drag-n-drop.

4 years ago(Source List) RegionFactory should return an empty region here.
Ben Loftis [Thu, 15 Nov 2018 15:29:55 +0000 (09:29 -0600)]
(Source List) RegionFactory should return an empty region here.

4 years ago(Source List) Source list, Region List: Resolve various action+behaviors between...
Ben Loftis [Mon, 22 Oct 2018 21:46:44 +0000 (16:46 -0500)]
(Source List) Source list, Region List:  Resolve various action+behaviors between the 2 lists.

Duplicate the remove_unsued_region action in the Session->Cleanup menu, for discoverability.
Region list should use the same Region actions as the canvas...
OK, now resolve the change in use-cases of Region List and Source List.  tentative.
Rough-in remove_selected_sources (Delete in Sources list).
Column tweaks.

4 years ago(Source List) Region Tags (gtk2 part)
Ben Loftis [Thu, 15 Nov 2018 15:27:04 +0000 (09:27 -0600)]
(Source List) Region Tags (gtk2 part)

4 years ago(Source List) Region Tags (libardour part)
Ben Loftis [Sat, 20 Oct 2018 01:02:44 +0000 (20:02 -0500)]
(Source List) Region Tags (libardour part)

Rough-in: Region-Tags.

More correct implementation of tags property (libardour).

Region Tags (libardour part)

4 years ago(Source List) Make clock change func more explicit.
Ben Loftis [Thu, 18 Oct 2018 23:51:45 +0000 (18:51 -0500)]
(Source List) Make clock change func more explicit.

4 years ago(Source List) Region List rewrite (gtk2 part)
Ben Loftis [Thu, 15 Nov 2018 15:24:37 +0000 (09:24 -0600)]
(Source List) Region List rewrite (gtk2 part)

See:  https://docs.google.com/document/d/1sI7p9RoRVZtNx2n67RvBa0_16fuZblV_lNkkKN2g93s/edit?usp=sharing

4 years ago(Source List) Region List rewrite (libardour part)
Ben Loftis [Tue, 16 Oct 2018 22:44:11 +0000 (17:44 -0500)]
(Source List) Region List rewrite (libardour part)

4 years ago(Source List) Source property signals (gtk2 part)
Ben Loftis [Thu, 15 Nov 2018 15:21:55 +0000 (09:21 -0600)]
(Source List) Source property signals (gtk2 part)

See:  https://docs.google.com/document/d/1sI7p9RoRVZtNx2n67RvBa0_16fuZblV_lNkkKN2g93s/edit?usp=sharing

4 years ago(Source List) Source property signals (libardour part)
Ben Loftis [Thu, 15 Nov 2018 15:21:31 +0000 (09:21 -0600)]
(Source List) Source property signals (libardour part)

4 years ago(Source List) Take-ID: new (working) implementation.
Ben Loftis [Sat, 13 Oct 2018 13:36:43 +0000 (08:36 -0500)]
(Source List) Take-ID: new (working) implementation.

4 years agoUpdate clang-format to match ardour-style
Robin Gareus [Thu, 1 Aug 2019 16:31:44 +0000 (18:31 +0200)]
Update clang-format to match ardour-style

4 years agoFix C++11 NSDMI
Robin Gareus [Wed, 31 Jul 2019 02:48:52 +0000 (04:48 +0200)]
Fix C++11 NSDMI

4 years agoUpdate MIDI Event precedence
Robin Gareus [Tue, 30 Jul 2019 19:17:15 +0000 (21:17 +0200)]
Update MIDI Event precedence

A patch-change that is concurrent with a note-on event should be sent
before the given Note-on event.

As follow up: CCs also need to be prioritize to send bank-select first.

see also https://discourse.ardour.org/t/midi-strangeness-patch-setting-and-first-notes/101415

4 years agoAnother try at fixing our 'spinlock_t' compatibility
John Emmas [Mon, 29 Jul 2019 15:56:45 +0000 (16:56 +0100)]
Another try at fixing our 'spinlock_t' compatibility

4 years agoPartially undo 6d4b94df13 for MSVC and C++98 compat
Robin Gareus [Mon, 29 Jul 2019 02:45:29 +0000 (04:45 +0200)]
Partially undo 6d4b94df13 for MSVC and C++98 compat

4 years agoFix random off-by-one issue when vertically zooming a waveform
Robin Gareus [Mon, 29 Jul 2019 01:55:31 +0000 (03:55 +0200)]
Fix random off-by-one issue when vertically zooming a waveform

To mitigate concurrent rendering, the waveform cache adds a random
range of pixels centered around the visible waveform.

Alignment is using integer half_width = width_samples / 2;
This always aligns the left-edge to the left-most cairo-pixel.

This fixes an issue with moving moiree patterns in waveforms when
zooming vertically (which invalidates the cache and uses a
different random number of pixels),

4 years agoFix rendering of region waveform left-edge
Robin Gareus [Mon, 29 Jul 2019 01:48:52 +0000 (03:48 +0200)]
Fix rendering of region waveform left-edge

The left-most part may be a partial block of a given "sample per pixel"
range. Also previously there was an off-by-one [block] in case
sample_pos was an even multiple of samples_per_visual_peak.

4 years agoNO-OP: whitespace
Robin Gareus [Mon, 29 Jul 2019 01:28:53 +0000 (03:28 +0200)]
NO-OP: whitespace

4 years agoReduce compiler warnings when boost uses std-atomics
Robin Gareus [Sun, 28 Jul 2019 18:10:09 +0000 (20:10 +0200)]
Reduce compiler warnings when boost uses std-atomics

This works around for compilers with non-static-data-member
initialization.

spinlock_t is-a struct { lockType _; } and BOOST_DETAIL_SPINLOCK_INIT
initializes the first member of the struct.
All defines of BOOST_DETAIL_SPINLOCK_INIT include c-style curly braces
to initialize the struct's data member.

However, modern C++ compiler interpret the braces differently resulting
in copy constriction of the initializer.

4 years agoYet another spinlock init hack for g++8 std::atomics
Robin Gareus [Sun, 28 Jul 2019 16:37:57 +0000 (18:37 +0200)]
Yet another spinlock init hack for g++8 std::atomics

Perhaps we should rather implement this ourselves,
using <boost/atomic.hpp>

4 years agoPrevent spinlock copy construction
Robin Gareus [Sun, 28 Jul 2019 13:02:04 +0000 (15:02 +0200)]
Prevent spinlock copy construction

4 years agoAnother attempt at improving spinlock init
Robin Gareus [Sun, 28 Jul 2019 13:01:40 +0000 (15:01 +0200)]
Another attempt at improving spinlock init

4 years agoFollow up d8ae3fd
Robin Gareus [Sun, 28 Jul 2019 12:57:51 +0000 (14:57 +0200)]
Follow up d8ae3fd

Depending on implementation, d8ae3fd may only construct the spinlock
once to `sl_init`. Later it is only copy-constructed and that leads to
compile and/or runtmime errors.

e.g. gcc-8.3 fails to compile
error: use of deleted function ‘boost::detail::spinlock::spinlock(const boost::detail::spinlock&)’

4 years agoMSVC requires an already initialized object to initialize our boost::detail::spinlock...
John Emmas [Sat, 27 Jul 2019 11:31:15 +0000 (12:31 +0100)]
MSVC requires an already initialized object to initialize our boost::detail::spinlock (rather than the simpler #define)

Hopefully this'll work for the other builds too.

4 years agoCorrectly initialize spintlock_t
Robin Gareus [Fri, 26 Jul 2019 19:40:39 +0000 (21:40 +0200)]
Correctly initialize spintlock_t

Depending on underlying implementation, boost::detail::spinlock
needs to be explicitly initialized