1. 16 12月, 2020 2 次提交
    • R
      UI/updater: Move in-use files away before writing · 9201390a
      Richard Stanway 提交于
      On a modern Windows OS, you can rename an in-use file despite not being
      able to write to it. With the introduction of the virtual camera, it is
      now quite common that users will have in-use files when updating. This
      commit renames in-use files, allowing the new version to be installed.
      Upon a reboot, the previously in-use file will be deleted.
      9201390a
    • R
      UI/updater: Always clean up temporary files · c0d7602b
      Richard Stanway 提交于
      If an update failed to install, it would leave a single temporary file
      behind for that particular patch / file.
      c0d7602b
  2. 15 12月, 2020 1 次提交
    • R
      UI: Add deferred function to update context bar · 38ad3ba1
      Richard Stanway 提交于
      With the queued connection in d68484e7, the "Deselect" signal for
      sources which are being deleted is never fired, as the object is gone by
      the time the queued signal is processed. This results in the context bar
      not updating.
      
      This commit adds a new UpdateContextBarDeferred function, allowing
      queuing of only the context bar update instead of the whole signal
      handler.
      38ad3ba1
  3. 14 12月, 2020 3 次提交
  4. 13 12月, 2020 5 次提交
    • J
      Revert #3856 · 00f0d5eb
      jp9000 提交于
      It's a bit too close to release, so revert #3856 for now until there's
      an open PR window instead.
      00f0d5eb
    • H
      linux-jack: fix timestamp calculation · a602fa87
      Hector Martin 提交于
      The previous calculation was completely broken, returning offset
      timestamps in the best case, and complete insanity in the worst case
      (e.g. if an xrun occurs or JACK otherwise has a glitch).
      a602fa87
    • H
      linux-jack: fix deadlock when closing the client · b7567f23
      Hector Martin 提交于
      This lock causes a deadlock when freeing the JACK client while a
      process callback is pending:
      
      deactivate_jack -> locks mutex
         JACK thread -> calls jack_process_callback
         jack_process_callback -> blocks on mutex
      jack_client_close -> joins JACK thread
      (deadlock as the process callback never returns)
      
      Instead, just don't lock the mutex. This is only mutexing on
      creation/destruction of the JACK client. This is not necessary: the
      process callback will only run after jack_activate (which is right
      before the mutex is released in jack_init()), and will stop running
      by the time jack_client_close returns. We don't actually need to
      unregister any ports, so just call jack_client_close first thing in
      deactivate_jack, which will guarantee the process callback has
      completed before returning.
      
      In fact, jack_process_callback isn't allowed to lock any mutexes or
      allocate any memory at all, so this plug-in is still broken in this way
      as obs_source_output_audio does that. This can cause audio xruns, as
      realtime guarantees are violated. This is something that should be
      fixed in the future, but at least it's not a deadlock.
      b7567f23
    • H
      linux-jack: mark ports as JackPortIsTerminal · a5439d29
      Hector Martin 提交于
      Ports which do not feed audio back into JACK should be marked as terminal.
      This allows latency compensation to work properly.
      a5439d29
    • H
      linux-pulseaudio: fix race conditions · a5d08e34
      Hector Martin 提交于
      PulseAudio code needs to be called with the PA lock held. This chiefly
      fixes multiple races during stream shutdown:
      
      * If the functions are called without the lock held, deferred event
        handling races end up with PA infinite looping on the mainloop, or
        asserting, or other badness, as the reentrant calls cause data
        structure corruption on the PA side.
      * If we don't reset our callbacks, PA might call us even after we
        request stream disconnection (since the stream actually getting fully
        shut down is asynchronous), and then we dereference NULL pointers from
        our userdata etc. PA will keep its data structures alive until necessary
        via reference counting, but not ours.
      
      The lock around pa_stream_begin_write doesn't result from any issues I
      experienced, but it looks correct; PA doesn't say anywhere that that
      function is thread-safe.
      a5d08e34
  5. 12 12月, 2020 5 次提交
  6. 10 12月, 2020 6 次提交
  7. 09 12月, 2020 1 次提交
  8. 08 12月, 2020 3 次提交
  9. 07 12月, 2020 1 次提交
  10. 06 12月, 2020 2 次提交
  11. 04 12月, 2020 4 次提交
  12. 03 12月, 2020 5 次提交
  13. 02 12月, 2020 2 次提交