1. 04 Aug, 2020 1 commit
  2. 19 Jun, 2020 1 commit
  3. 05 Jun, 2020 2 commits
  4. 05 May, 2020 2 commits
  5. 23 Mar, 2020 1 commit
    • Jan Alexander Steffens's avatar
      gststructure: Fix gst_structure_take ownership handling · a20ff6aa
      Jan Alexander Steffens authored
      The old code would leave a dangling pointer in oldstr_ptr if two threads
      attempted to take the same structure into the same location at the same
      time:
      
      1. First "oldstr == newstr" check (before the loop) fails.
      2. Compare-and-exchange fails, due to a second thread completing the
         same gst_structure_take.
      3. Second "oldstr == newstr" check (in the loop) succeeds, loop breaks.
      4. "oldstr" check succeeds, old structure gets freed.
      5. oldstr_ptr now contains a dangling pointer.
      
      This shouldn't happen in code that handles ownership sanely, so check
      that we don't try to do this and complain loudly.
      
      Also simplify the function by using a do-while loop, like
      gst_mini_object_take.
      
      !413
      a20ff6aa
  6. 18 Mar, 2020 3 commits
    • Edward Hervey's avatar
      gstvalue: Inline GstValueList/GstValueArray · 917dd088
      Edward Hervey authored
      This tries to inline as much as possible array/list and its contents
      in order to avoid double allocation/freeing. This also improves the
      locality of data.
      
      The internal value is still API/ABI compatible with the *public*
      GArray structure. This allows READ-ONLY backwards compatibility with
      any external users that assume that the content of a list/array value
      is backed by a GArray.
      917dd088
    • Edward Hervey's avatar
      gststructure: Optimize pre-allocation of structures · 5318a038
      Edward Hervey authored
      For all the structure creation using valist/varargs we calculate
      the number of fields we will need to store. This ensures all callers
      will end up with a single allocation.
      5318a038
    • Edward Hervey's avatar
      gststructure: Inline array and contents · 1b568fa0
      Edward Hervey authored
      Instead of having 3 allocations:
      * One for GstStructure
      * One for GArray
      * One for the array *within* GArray
      
      We try to limit this to a single allocation, inlining everything. This
      reduces the number of micro-allocations and improves locality of data
      access.
      1b568fa0
  7. 14 Nov, 2019 1 commit
  8. 13 May, 2019 2 commits
  9. 23 Apr, 2019 1 commit
  10. 09 Jan, 2019 2 commits
  11. 12 Nov, 2018 1 commit
  12. 05 Nov, 2018 2 commits
  13. 04 Jul, 2018 1 commit
  14. 15 Jun, 2018 1 commit
  15. 27 Jan, 2018 1 commit
  16. 02 Oct, 2017 1 commit
  17. 06 Apr, 2017 1 commit
  18. 24 Mar, 2017 1 commit
  19. 23 Feb, 2017 2 commits
  20. 27 Jan, 2017 1 commit
  21. 30 Dec, 2016 1 commit
  22. 13 Dec, 2016 1 commit
  23. 02 Nov, 2016 1 commit
  24. 02 Jun, 2016 1 commit
  25. 15 Feb, 2016 1 commit
  26. 20 Jan, 2016 1 commit
  27. 15 Jan, 2016 1 commit
    • Stefan Sauer's avatar
      tracerrecord: add a log record class · 10b78d87
      Stefan Sauer authored
      We use this class to register tracer log entry metadata and build a log
      template. With the log template we can serialize log data very efficiently.
      This also simplifies the logging code, since that is now a simple varargs
      function that is not exposing the implementation details.
      
      Add docs for the new class and basic tests.
      
      Remove the previous log handler.
      
      Fixes #760267
      10b78d87
  28. 06 Jan, 2016 1 commit
  29. 31 May, 2015 1 commit
  30. 25 May, 2015 1 commit
    • Jan Schmidt's avatar
      gstvalue: Add GstFlagSet type · f9e5178d
      Jan Schmidt authored
      GstFlagSet is a new type designed for negotiating sets
      of boolean capabilities flags, consisting of a 32-bit
      flags bitfield and 32-bit mask field. The mask field
      indicates which of the flags bits an element needs to have
      as specific values, and which it doesn't care about.
      
      This allows efficient negotiation of arrays of boolean
      capabilities.
      
      The standard serialisation format is FLAGS:MASK, with
      flags and mask fields expressed in hexadecimal, however
      GstFlagSet has a gst_register_flagset() function, which
      associates a new GstFlagSet derived type with an existing
      GFlags gtype. When serializing a GstFlagSet with an
      associated set of GFlags, it also serializes a human-readable
      form of the flags for easier debugging.
      
      It is possible to parse a GFlags style serialisation of a
      flagset, without the hex portion on the front. ie,
      +flag1/flag2/flag3+flag4, to indicate that
      flag1 & flag4 must be set, and flag2/flag3 must be unset,
      and any other flags are don't-care.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=746373
      f9e5178d
  31. 16 Dec, 2014 1 commit
  32. 01 Dec, 2014 1 commit