Skip to content
  1. May 12, 2021
    • reuk's avatar
      AU Client: Fix variable naming · 40fa4ff9
      reuk authored
      40fa4ff9
    • reuk's avatar
    • reuk's avatar
    • reuk's avatar
      VST3 Host: Avoid calling processBlock, prepareToPlay, and releaseResources simultaneously · c8dae58f
      reuk authored
      The old design had us checking isActive inside our audio callbacks, and
      also modifying isActive from prepareToPlay(), and releaseResources(). To
      avoid race conditions, and to ensure that isActive actually reflects the
      activation state of our plugin, we need to lock in these places. If we
      don't lock, there's a chance that other threads will observe isActive to
      be true while the plugin is not actually active (for example).
      
      If you're not convinced, imagine this scenario:
      - The message thread calls prepareToPlay. The plugin is activated.
      - The audio thread starts calling processBlock, and gets as far as the
        isActive check. The plugin appears active, so we continue into
        processBlock.
      - At the same time, the message thread calls releaseResources(). The
        processBlock call is still in progress, but the message thread is
        simultaneously making calls to setProcessing() and setActive(), which
        is a race.
      
      Normally, it'd be up to the host of the AudioProcessor to ensure that
      prepareToPlay() isn't called at the same time as processBlock().
      However, VST3 plugins can request a restart at any time from the UI
      thread, requiring us to call prepareToPlay() even while processBlock()
      is running.
      c8dae58f
    • ed's avatar
      MinGW: Exclude native accessibility code · 8b74ec2f
      ed authored
      8b74ec2f
  2. May 11, 2021
  3. May 10, 2021
  4. May 07, 2021
  5. May 06, 2021
    • reuk's avatar
      VST3 Host: Ensure AudioProcessor parameter indices are used when appropriate · f35c2d90
      reuk authored
      Previously, IEditController parameter indices were being used to index
      into the AudioProcessor parameter array, but these parameter indices are
      not guaranteed to point to the same parameter (parameter groups may
      cause reordering on JUCE's side). Now, we use the IEditController
      indices universally.
      f35c2d90
    • reuk's avatar
      AudioPlayHead: Tidy up implementation · 32f99d26
      reuk authored
      32f99d26
    • reuk's avatar
      AutoResizingNSViewComponent: Fix display issues for certain plugin views · 0f690662
      reuk authored
      Previously, the following plugins were causing issues when hosting their
      editors:
      
      - Softube plugins. I used Saturation Knob for testing, which crashed when
        deleting the temporary parent view.
      - KORG Gadget series, which displayed a black screen after the temporary parent
        view was deleted.
      - FabFilter Pro-C, which displayed at the wrong scale when opened on a
        retina display.
      0f690662
  6. May 05, 2021
  7. May 04, 2021
    • reuk's avatar
      HWNDComponentPeer: Dismiss modals when windows are moved · 19821db2
      reuk authored
      This change ensures that popup menus will be dismissed when hosted
      plugin windows are moved, even when these plugin views are themselves
      hosted inside JUCE views, like those used in the AudioPluginHost.
      19821db2
  8. May 02, 2021
  9. May 01, 2021
  10. Apr 30, 2021
  11. Apr 28, 2021