1. 09 Aug, 2018 3 commits
  2. 08 Aug, 2018 3 commits
  3. 07 Aug, 2018 7 commits
  4. 06 Aug, 2018 8 commits
  5. 05 Aug, 2018 3 commits
  6. 04 Aug, 2018 5 commits
    • Jehan's avatar
      Issue #1974: Memory leak in gimpimage.c. · 71f37d41
      Jehan authored
      Ok my previous fix was wrong (at least for the part in the macro). This
      is a macro, not a function. So each time we write _reason, the call to
      g_strdup_printf() is reevaluated, hence data is allocated.
      The right fix is to prepend `tmp` to the list, not `_reason`.
      Thanks to Massimo for the debugging, as always!
      
      (cherry picked from commit 2912fe7c)
      71f37d41
    • Jehan's avatar
      Issue #1974: Memory leak in gimpimage.c. · 8909684b
      Jehan authored
      ADD_REASON macro was leaking the allocated string when version_reason
      return value was NULL (i.e. when we didn't care about the version
      reasons).
      
      Also we were not properly freeing all the reason strings at the end,
      only the list. Use g_list_free_full() instead of g_list_free().
      
      (cherry picked from commit 0ab682b0)
      8909684b
    • Ell's avatar
      Issue #1846 - "gitlab::" typo in the Windows installer · 53b07a92
      Ell authored
      Introduced by commit 8eb77376.
      Change to "gitlab:".
      
      (cherry picked from commit aafa9259)
      53b07a92
    • Ell's avatar
      app: short-circuit GimpProjection bounds-changed handler if disjoint · 0edbb058
      Ell authored
      In gimp_projection_projectable_bounds_changed(), bail early by
      calling gimp_projection_projectable_structure_changed() instead, if
      the new bounds don't intersect the old bounds.
      
      (cherry picked from commit c6b8a421)
      0edbb058
    • Ell's avatar
      app: fix gimp_projection_projectable_bounds_changed() · 53afeb11
      Ell authored
      In gimp_projection_projectable_bounds_changed(), which is called by
      GimpProjection in response to a GimpProjectable::bounds-changed
      signal, invalidate all regions of the new projection that weren't
      copied from the old projection, so that they get rendered upon
      flushing, instead of remaining empty.
      
      Additionally, fix preview invalidation -- in particular, don't
      directly invalidate the projectable's preview, even if preview
      invalidation is already queued and chunk rendering was finished by
      the boundary change, and instead always queue a preview
      invalidation.
      
      (cherry picked from commit bb5e3fd9)
      53afeb11
  7. 03 Aug, 2018 11 commits
    • Pat David's avatar
      app, libgimpbase: update vertical text labels (shorten) · a1d2c05f
      Pat David authored
      Shortening vertical text option labels a little bit.
      
      (cherry picked from commit 0ce4db74)
      a1d2c05f
    • Ell's avatar
      app: avoid re-rendering group layers upon resizing · d8c0368a
      Ell authored
      Make sure we don't unnecessarily update the group layer's drawable
      while flusing the group's projection during resizing, since we want
      to either update the entire drawable, or avoid any updates, when
      replacing the drawable's buffer.  Note that explicitly supressing
      updates in this case should theoretically not be necessary, but the
      fact that the call to gimp_projectable_bounds_changed() can result
      in reconstructing the projection (see the FIXME comment in that
      function) makes it necessary in some cases nonetheless.
      
      (cherry picked from commit bd726c96)
      d8c0368a
    • Ell's avatar
      app: avoid re-rendering group layers upon translation · 5eaa2f90
      Ell authored
      When translating group layers, there's no need to re-render the
      group's projection -- we can simply update the group's offset (and
      offset node) directly, and redirect any layer-stack "update"
      signals to the group's drawable.  This significantly improves
      performance when moving groups.
      
      (cherry picked from commit 3ff820a0)
      5eaa2f90
    • Ell's avatar
      app: use gimp_projectable_bounds_changed() when resizing group layers · bcbc3c23
      Ell authored
      In GimpGroupLayer, use gimp_projectable_bounds_changed() when
      updating the group layer's size, instead of reconstructing the
      projection, unless reallocation of the projection has been
      requested.  This is more efficient, since it simply copies the
      content of the projection's old buffer to the new buffer, rather
      than re-rendering the graph.
      
      (cherry picked from commit 1bb3e962)
      bcbc3c23
    • Ell's avatar
      app: stop idle projection rendering when flushing group layers · 379d65e0
      Ell authored
      In gimp_group_layer_flush(), stop any idle rendering, initiated
      when a new buffer is allocated, before flushing the group's
      pickable.  Otherwise, the idle rendering is finished synchronously,
      which unnecessarily introduces a noticeable lag.
      
      (cherry picked from commit a4957c7c)
      379d65e0
    • Ell's avatar
      app: add "update" parameter to gimp_drawable_set_buffer_full() · adadd4bb
      Ell authored
      ... which specifies whether or not to update the drawable in
      response to the buffer change.
      
      Pass TRUE for "update" at all existing call sites, to keep the
      current behavior.
      
      (cherry picked from commit 26a8d141)
      adadd4bb
    • Ell's avatar
      app: respond to GimpProjectable::bounds-changed in GimpProjection · 09d50449
      Ell authored
      In GimpProjection, respond to the projectable's "bounds-changed"
      signal, by reallocating the buffer, and copying the corresponding
      region of the old buffer (using
      gimp_tile_handler_validate_buffer_copy(), added a few commits back,
      so that the relevant portion of the validate handler's dirty region
      is also copied).  Additionally, shift and clip all outstanding
      update regions as necessary (actually, we avoid copying the buffer
      when a shift is necessary, and simply reconstruct the projection;
      see FIXME comment in the code.)
      
      (cherry picked from commit fbeae361)
      09d50449
    • Ell's avatar
      app: add GimpProjectable::bounds-changed signal · 2ad7fe97
      Ell authored
      ... and a corresponding gimp_projectable_bounds_changed() function.
      
      This signal can be emitted by implementers of GimpProjectable,
      instead of the GimpProjectable::structure-changed signal, when the
      projectable's bounds change, but its content does not -- i.e., the
      old content simply gets cropped to the new bounds.
      
      (cherry picked from commit 460c3d13)
      2ad7fe97
    • Ell's avatar
      app: add gimp_tile_handler_validate_buffer_copy() · c0a4e12b
      Ell authored
      Add gimp_tile_handler_validate_buffer_copy(), which can be used
      instead of gegl_buffer_copy(), to copy a (subregion of a) source
      buffer to a destination buffer with a GimpTileHandlerValidate,
      uninvalidating, and avoiding unnecessarily rendering, the
      affected region.  Additionally, if the source buffer also uses a
      GimpTileHandlerValidate, the relevant parts of the source buffer's
      dirty region are copied to the destination's dirty region as well.
      
      (cherry picked from commit eeed4778)
      c0a4e12b
    • Ell's avatar
      app: add gimp_tile_handler_validate_unassign() · 9ad37202
      Ell authored
      ... which should be used to properly remove a
      GimpTileHandlerValidate from a buffer, instead of using
      gegl_buffer_remove_handler() directly.
      
      Use gimp_tile_handler_validate_unassign(), instead of
      gegl_buffer_remove_handler(), in gimp_projection_free_buffer().
      
      (cherry picked from commit 12530e21)
      9ad37202
    • Ell's avatar
      app: in GimpTileHandlerValidate, clear data when allocating tile · cf0abb0e
      Ell authored
      In GimpTileHandlerValidate, when allocating a new tile upon a
      TILE_GET command, but not rendering the whole tile, clear the tile
      data before rendering, so that the unrendered regions of the tile
      contain zeros, rather than junk.
      
      (cherry picked from commit e1e4ba9c)
      cf0abb0e