For MacOS/X this is equivalent, rendering happens using a
CGBitmapContext + image-surface. Windows and Linux needs profiling
for respective equivalent surfaces.
This is an intermediate commit, before replacing image surfaces with
cairo pattern groups.
The eventual goal is to reduce flickering and/or use
CPU + bitblt for specific widgets instead of cairo
graphics-cards accel.
This also removes excessive calls to getenv() for every rendering
operation.
This might fix a "SessionHandleRef exists across session deletion",
when the shared_ptr was be pushed onto a x-thread pool, and not
invalidated in time before the session was closed.
destroy_sources () is only called from Session::remove_last_capture ().
The list of sources to be destroyed is the local scope of that method
and will hold a reference to the object.
copy-construct the list and removing elements one by one from the
copy is only unnecessary overhead.
* remove Y-axis dependent velocity (difference between
black/white keys made this not very usable
* remove Bank/Patch selector (there are already three other
Bank/Patch UIs
* move keyboard-layout selection into Preferences > MIDI
Because (a) it makes the startup seem "very long and complicated",
and (b) sometimes fails or crashes weirdly,
or (c) a plugin dialog gets hidden behind the main window, or ...
Overall the first impression of the program may be horrible when
the first step includes discovering VST plugins.
This fixes an issue with arrow-keys (up/down, left/right). Those
were previously only handled when the Virtual Keyboard window itself
had focus.
Also key-repeat for pitch-bend is now ignored and a dedicated timer
is used to queue events. This fixes an issue with the first repeat
taking longer than successive ones, and makes this feature independent
of any desktop user settings.