1. 06 6月, 2016 1 次提交
    • J
      UI: Do not store prop. view string data as QString · 6eea842d
      jp9000 提交于
      The internal data of a property value would be converted to QString and
      Qt would inevitably try to convert the characters to another encoding,
      causing the internal data to possibly become invalid.  Instead, use
      QByteArray to treat it as nothing more than a byte array.
      6eea842d
  2. 05 6月, 2016 1 次提交
    • J
      linux-capture: Fix window capture crashes · 5d16e448
      jp9000 提交于
      The xcomposite window capture crashes were due to a few factors:
      -------------------------------
      1.) The source's X error handler was possibly being overwritten by
      another part of the program despite us locking the display, presumably
      something in Qt which isn't locking the display when pushing/popping its
      own error handler (though this is not yet certain).  The source's calls
      to X functions happen in the graphics thread, which is separate from the
      UI thread, and it was noticed that somehow the error handler would be
      overwritten almost seemingly at random, indicating that something else
      in the program outside of OBS code was not locking the display while
      pushing/popping the error handler.
      
      To replicate this, make it so that the source cannot find the target
      window and so it continually searches for it each video_tick call, then
      resize the main OBS window continually (which causes Qt to push/pop its
      own error handlers).  A crash will almost always occur due to BadWindow
      despite our error handling.
      
      2.) Calling X functions with a window ID that no longer exists,
      particularly XGetWindowAttributes, in conjunction the unknown error
      handler set in case #1 would cause the program to outright crash because
      that error handler is programmed to crash on BadWindow for whatever
      reason.  The source would call X functions without even checking if
      'win' was 0.
      
      3.) The source stored window IDs (in JSON, even if they've long since
      become invalid/pointless, such as system restarts).  This is a bad
      practice and will result in more cases of BadWindow.
      
      Fixing the problem (reducing the possibility of getting BadWindow):
      -------------------------------
      Step 1.) Deprecate and ignore window IDs in stored settings.  Instead of
      using window IDs to find the window, we now must always search the
      windows and find the target window via the window name exclusively.
      This helps ensure that we actually consistently have a working window
      ID.
      
      Step 2.) Do not call any X functions if the window ID is 0.
      
      Step 3.) Reset the window ID to 0 any time the window has updated, and
      make the source find the window again to ensure it still exists before
      attempting to use any X functions on the window ID again.
      5d16e448
  3. 31 5月, 2016 2 次提交
  4. 29 5月, 2016 2 次提交
  5. 28 5月, 2016 2 次提交
    • F
      linux-pulseaudio: Check for failed operations · eed95471
      fryshorts 提交于
      Add checks to make sure the pulseaudio operation objects are actually
      valid and the request did not fail right away. Other pulseaudio
      functions dealing with the objects expect them not to be NULL,
      otherwise they will kill the application with a failing assert.
      eed95471
    • J
      obs-ffmpeg: Set AVCodecContext thread_count to 0 · 1a72cd40
      jp9000 提交于
      For some reason in the FFmpeg output, this AVCodecContext variable is
      being set to 1 by FFmpeg itself somewhere, and it's causing a massive
      slowdown when encoding with FFmpeg directly.  This should be set to 0 to
      specify to use as many threads as necessary.
      1a72cd40
  6. 27 5月, 2016 10 次提交
  7. 26 5月, 2016 4 次提交
  8. 24 5月, 2016 6 次提交
  9. 21 5月, 2016 4 次提交
  10. 17 5月, 2016 1 次提交
  11. 16 5月, 2016 2 次提交
  12. 15 5月, 2016 4 次提交
  13. 14 5月, 2016 1 次提交