Skip to content
Snippets Groups Projects
  1. Jun 11, 2024
    • Jakub Vaněk's avatar
      orconce: Fix typo in GCC __sync-based implementation · f5e61ef0
      Jakub Vaněk authored
      The __sync_val_compare_and_swap() function is defined as [1]:
      
      > type __sync_val_compare_and_swap (type *ptr, type oldval, type newval, ...)
      
      However, the pre-C11 orc_once_enter() function is calling the function like
      __sync_val_compare_and_swap(ptr, newval, oldval). This breaks the orconce
      implementation: the atomic variable is never set to the initialized state
      and so the initialization function is called every time orc_once_enter() is called.
      
      This bug was originally discovered through Buildroot. GStreamer packages are
      currently build with -std=c99 or -std=gnu99 there. These flags disable
      the C11 orconce codepath and instead the old __sync codepath is selected.
      The ultimate effect of this was that all elements relying on ORC (e.g. videotestsrc,
      videoconvert) were slowed down significantly by repeated recompiling of the
      ORC programs.
      
      [1]: https://gcc.gnu.org/onlinedocs/gcc-12.3.0/gcc/_005f_005fsync-Builtins.html
      
      Part-of: <gstreamer/orc!185>
      f5e61ef0
  2. Jun 02, 2024
  3. May 18, 2024
  4. May 15, 2024
  5. Apr 26, 2024
  6. Apr 15, 2024
  7. Apr 13, 2024
  8. Mar 21, 2024
  9. Mar 12, 2024
Loading