1. 04 Dec, 2018 2 commits
    • Ell's avatar
      Issue #2604 - XCF saving bug in xcf_save_buffer() · 2168d91c
      Ell authored
      The NULL terminator of the tile-offset array of dummy buffer-levels
      is erroneously written as an int32, instead of an offset, even in
      version-11+ XCFs, in which offsets are 64-bit.
      
      Since the dummy levels aren't actually used by GIMP, we're going to
      keep these fields as int32 as an exception, in order to remain
      consistent with existing XCFs, and just add a comment in the code,
      and update the docs.  If we ever make use of the higher buffer
      levels, we should change these fields to offsets, and bump the XCF
      version.
      2168d91c
    • Michael Natterer's avatar
      Integrate the logic of profile saving with metadata saving · c667fdc5
      Michael Natterer authored
      Add flag GIMP_METADATA_SAVE_COLOR_PROFILE to GimpMetadataSaveFlags and
      initialize it from gimp_export_color_profile() in
      gimp_image_metadata_save_prepare().
      
      Adapt all plug-ins to use the bit from the suggested export flags and
      pass the actually used value back to
      gimp_image_metadata_save_finish().
      
      This changes no behavior at all but creates hooks on the libgimp side
      that are called with the context of an image before and after the
      actual export, which might become useful later. Also, consistency
      is good even though the color profile is not strictly "metadata".
      c667fdc5
  2. 03 Dec, 2018 6 commits
  3. 02 Dec, 2018 15 commits
  4. 01 Dec, 2018 13 commits
  5. 30 Nov, 2018 4 commits
    • Ell's avatar
      app: use gimp_async_add_callback_for_object() in the bucket-fill tool · 6103f0e5
      Ell authored
      ... for the same reason as commit
      7c00cf49.
      6103f0e5
    • Ell's avatar
      app: use gimp_async_add_callback_for_object() in various places · 7c00cf49
      Ell authored
      Use gimp_async_add_callback_for_object(), added in the previous
      commit, instead of gimp_async_add_callback(), in cases where the
      destructor of the object owning the async doesn't wait for the
      async to finish.  This avoids leaking such ongoing asyncs on
      shutdown, during which gimp-parallel either finishes or aborts the
      asyncs: if at this point an async has any registered callbacks, an
      idle source is added for running the callbacks, extending the
      lifetime of the async; however, since we're not getting back into
      the main loop, the idle is never run, and the async (and any
      associated resources) are never freed.
      7c00cf49
    • Ell's avatar
      app: add gimp_async_add_callback_for_object() · 49fd2847
      Ell authored
      ... which is similar to gimp_async_add_callback(), taking an
      additional GObject argument.  The object is kept alive for the
      duration of the callback, and the callback is automatically removed
      when the object is destroyed (if it hasn't been already called).
      
      This is analogous to g_signal_connect_object(), compared to
      g_signal_connect().
      49fd2847
    • Ell's avatar
      app: unref async when removing last callback if idle is pending · a779dd38
      Ell authored
      In gimp_async_remove_callback(), if removing the last callback
      while the callback idle-source is already pending, cancel the idle
      source and unref the async object (the async is reffed when adding
      the idle source.)
      a779dd38