1. 19 Jun, 2020 1 commit
  2. 10 Jun, 2020 1 commit
  3. 07 Jun, 2020 2 commits
    • Øyvind "pippin" Kolås's avatar
      gegl: reject paths containing .dSYM when looking for modules on OSX · e4bbf179
      Øyvind "pippin" Kolås authored
      This removes a lot of warnings when a debug build of gegl/ is run with
      GIMP, fixing issue #112.
    • Niels De Graef's avatar
      Use NULL c_handler for "simple" GObject signals · 3cffc84f
      Niels De Graef authored
      Apart from being less code, this actually gives us a nice performance
      improvement. Up until a few years ago, if you pass `NULL` as the
      marshaller for a signal, GLib would fall back to
      `g_cclosure_marshal_generic` which uses libffi to pack/unpack its
      arguments. One could avoid this by specifying a more specific
      marshaller which would then be used to immediately pack and unpack into
      GValues with the correct type.
      Lately however, as a way of optimizing signal emission (which can be
      quite expensive), GLib added a possibility to set a va_marshaller, which
      skips the unnecessary GValue packing and unpacking and just uses a
      valist variant.
      Since the performance difference is big enough, if the marshaller
      argument is NULL, `g_signal_new()` will now check for the simple
      marshallers (return type NONE and a single argument) and set both the
      generic and the valist marshaller. In other words, less code for us with
      bigger optimizations.
      In case you also want va_marshallers for more complex signals, you can
      use `g_signal_set_va_marshaller()`.
  4. 02 Jun, 2020 2 commits
  5. 28 May, 2020 1 commit
  6. 27 May, 2020 2 commits
  7. 24 May, 2020 2 commits
  8. 23 May, 2020 1 commit
  9. 20 May, 2020 3 commits
  10. 18 May, 2020 1 commit
  11. 17 May, 2020 4 commits
  12. 14 May, 2020 1 commit
  13. 13 May, 2020 2 commits
  14. 11 May, 2020 1 commit
    • Øyvind "pippin" Kolås's avatar
      buffer: tune cubic coefficients away from anomaly · c6b3632d
      Øyvind "pippin" Kolås authored
      As reported in issue #167, the current coefficients of the cubic
      resampler causes a sinuosidal grid anomaly when rotating some noise
      patterns, to work around this we bring the sharpness/smoothness
      trade-off for the cubic half way back to smooth which also
      significantly reduces the strength of the anomaly.
      The code for choosing behavior of the cubic resampler by choosing
      cubic types via string never worked, as the strcmp were the inverse
      of what they should have been. This commit reduces it to only rely
      on computing the coefficent from the formula, and adds comments
      what the different constants we have used mean.
  15. 07 May, 2020 3 commits
    • Niels De Graef's avatar
      Fix some VAPI annotations · 73f519ae
      Niels De Graef authored
      * No need for cheader_filename="gegl.h", since the GIR file now
        correctly includes it
      * Mark init.argv as `(optional)`, since NULL is a valid value
      * Mark some vararg functions as skip=false since Vala can handle these
    • Niels De Graef's avatar
      meson: Use metadata for GEGL VAPI · 996b86ed
      Niels De Graef authored
      In the port to Meson, `Gegl.metadata` was accidentally no longer
      configured and used for the vapigen command.
    • Brian Stafford's avatar
      gegl, operations: add meta-data API · 72a9161e
      Brian Stafford authored
      This adds GeglResolutionUnit, GeglMetaDataStore interface and a
      hashtable implementation, as suggested and refined in issue #222.
      Image loading and saving operations can now implement the "metadata"
      property. For loading ops this means extracting known metadata keys when
      processing, and for saving ops storing the applicable and set key.  The
      file operations can register maps of names of keys between its own
      naming scheme and the GeglMetaDataStore naming scheme, as well as
      provide conversion functions for rewriting formats, for instance for
  16. 06 May, 2020 7 commits
    • Ell's avatar
      buffer: in cache handler and swap backend, use g_hash_table_add() ... · 1ad6d536
      Ell authored
      ... instead of g_hash_table_insert()
    • Ell's avatar
      buffer: in swap backend, improve empty tile storage · 96381633
      Ell authored
    • Ell's avatar
      buffer: misc cleanup in gegl-tile-backend-swap.c · 72bfba85
      Ell authored
    • Ell's avatar
      operation, graph: use uninitialized buffers for operation output · 6e9610e6
      Ell authored
      In gegl_operation_context_get_target(), return uninitialized
      buffers for operation output; likewise, in GeglNode, use an
      uninitialized buffer for the cache.  This avoids unnecessarily
      zero-initializaing output tiles when individual tiles are split
      across threads, or when not generating output on a per-tile basis
      (e.g., when generating output line-by-line).
      Note that since any operation can potentially be cached, and
      therefore have arbitrary data in its output buffer, operations
      should already overwrite the entire requested region when
      processing, and, conversely, consumers should only depend on the
      contents of the requested region.
      Allow reverting back to initialized output buffers by settings the
      GEGL_OPERATION_INIT_OUTPUT environment varaible to 1.
    • Ell's avatar
      buffer: handle uninitialized buffers in gegl_buffer_clear() · 31649e05
      Ell authored
      When calling gegl_buffer_clear() on an uninitialized buffer, fill
      tile-aligned regions with explicitly-created empty tiles, instead
      of voiding the region and relying on the tiles to be created on-
      demand, so that the region is zero-initialized, instead of
    • Ell's avatar
      buffer: allow creating buffers with uninitialized data · 49d0b414
      Ell authored
      Add a new construct-only GeglBuffer::initlalized boolean property,
      which, when FALSE, allows the buffer to avoid zero-initializing
      empty tiles.  This property defaults to TRUE, and is mostly meant
      to be used internally for now.
      When set to TRUE, empty tiles are created fully damaged, so that
      their data is not unnecessarily initialized when uncloned.  Note
      that we already avoid initializing or copying uncloned tile data
      when overwriting the full tile content, but this allows us to avoid
      initialization even when writing partial content.
      This optimization is currently limited to level-0 tiles, to
      simplify the code.
    • Ell's avatar
      buffer: track empty tiles in the swap backend · bb3afed5
      Ell authored
      In GeglTileBackendSwap, track stored empty tiles on TILE_SET, and
      return corresponding empty tiles on TILE_GET.  We'd previously
      ignore empty tiles on TILE_SET, and rely on GeglTileHandlerEmpty to
      recreate them on TILE_GET.
      This allows us to properly store empty tiles in the swap for
      buffers with custom tile handlers, that may return non-empty tiles
      when there's no existing underlying tile.  More importantly, it
      allows us to introduce buffers with uninitialized data, while still
      being able to properly store explicitly-created empty tiles.
      Note that empty tiles don't consume any disk space, and only impose
      bookkeeping overhead.
  17. 04 May, 2020 2 commits
  18. 01 May, 2020 4 commits