Skip to content
  1. May 21, 2021
  2. May 19, 2021
  3. May 18, 2021
  4. May 17, 2021
  5. May 15, 2021
  6. May 14, 2021
  7. May 13, 2021
  8. 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
  9. May 11, 2021
  10. May 10, 2021
  11. May 07, 2021
  12. 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