1. 02 Sep, 2018 1 commit
    • Ell's avatar
      app: add GimpBacktrace · 80bf686c
      Ell authored
      GimpBacktrace provides an interface for creating and traversing
      multi-threaded backtraces, as well as querying symbol information.
      While we already have some backtrace functionality, it relies on
      external tools for the most part, and as such is rather expensive,
      and is only meant for producing opaque backtraces.  GimpBacktrace,
      on the other hand, is meant to be relatively cheap (we're going to
      use it for profiling,) and allow inspection of the backtrace data.
      In the future, it might make sense to replace some, or all, of the
      other backtrace functions with GimpBacktrace.
      
      GimpBacktrace currently only supports Linux.  By default, it uses
      dladdr() to query symbol information, which is somewhat limited (in
      particular, it doesn't work for static functions.)  When libunwind
      is installed, GimpBacktrace uses it to get more complete symbol
      information.  libunwind is currently an optional dependency, but it
      might make sense to promote it to a mandatory, or opt-out,
      dependency, as it's lightweight and widely available.
      
      On other platforms, the GimpBacktrace interface can still be used,
      but it always returns NULL backtraces.
      80bf686c
  2. 31 Jul, 2018 1 commit
    • luz.paz's avatar
      Misc. typos · 949912f5
      luz.paz authored
      Found via `codespell  -q 3 -I ../gimp-word-whitelist.txt --skip="*.po"`
      949912f5
  3. 15 Jul, 2018 2 commits
  4. 11 Jul, 2018 1 commit
  5. 02 Jul, 2018 1 commit
    • Jehan's avatar
      app: add base classes for the extension manager. · b70424b2
      Jehan authored
      Right now it only loads AppStream data, which is completely useless, yet
      is a base of a managed extension system. Having proper metadata is what
      will allow to actually know what is installed.
      This is only the first draft.
      
      Note that I am not adding the extension path into GimpCoreConfig on
      purpose, since the point is not to have people manage their extension
      directories manually anymore.
      The extensions will be loaded from the build-time system path or the
      config directory, and that's all.
      What will probably be stored in the config though will be the remote
      repositories URLs (allowing third-party extension repositories).
      b70424b2
  6. 04 Jun, 2018 3 commits
  7. 29 May, 2018 4 commits
    • Ell's avatar
      app: fix indentation in core-types.h · 56bbd07a
      Ell authored
      56bbd07a
    • Ell's avatar
      app: add GimpAsyncSet · 80de7230
      Ell authored
      GimpAsyncSet represents a dynamic set of running GimpAsync objects.
      The objects are automatically removed from the set once they're
      synced.
      
      GimpAsyncSet implements the GimpWaitable and GimpCancelable
      interfaces, allowing the entire set to be waited-on or canceled.
      
      Additionally, GimpAsyncSet provides an "empty" property, which
      indicates whether the set is empty or not.  This allows responding
      to the completion of all the GimpAsync objects through the set's
      "notify::empty" signal, or drive UI changes through property
      bindings.
      80de7230
    • Ell's avatar
      app: add GimpTriviallyCancelableWaitable · e24ce886
      Ell authored
      GimpTriviallyCancelableWaitable is a proxy object for another
      GimpWaitable object, implementing both the GimpWaitable interface
      and the GimpCancelable interface.  While waiting on the proxy
      simply waits on the underlying waitable, canceling the proxy
      doesn't affect the underlying waitable, even if it implements
      the GimpCancelable interface as well, but rather causes subsequent
      wait operations on the proxy to successfully complete immediately.
      
      This essentially causes cancelation to abort only the wait, rather
      than the underlying operation.
      e24ce886
    • Ell's avatar
      app: add GimpUncancelableWaitable · 4cc92ebd
      Ell authored
      GimpUncancelableWaitable is a simple proxy object for another
      GimpWaitable object, implementing only the GimpWaitable interface.
      Its main purpose is to mask away the cancelability of an object
      implementing both GimpWaitable and GimpCancelable.
      4cc92ebd
  8. 27 May, 2018 2 commits
  9. 20 May, 2018 2 commits
  10. 11 May, 2018 1 commit
    • Ell's avatar
      app: add GimpAsync · e1d15fef
      Ell authored
      GimpAsync represents an asynchronous task, running without blocking
      the main thread.  It provides functions that allow waiting for
      completion, queueing completion callbacks, and requesting
      calcelation.  See the code for more details.
      
      The interface and the implementation are intentionally limited for
      the time being, to keep things simple, and are geared toward
      asynchronous tasks executed on a separate thread (see the next
      commit).  The public interface is relatively general, however, and
      we may extend the implementation to support other kinds of tasks at
      some point, who knows...
      e1d15fef
  11. 25 Mar, 2018 1 commit
    • Ell's avatar
      app: add GimpObjectQueue · 3ee5054e
      Ell authored
      GimpObjectQueue implements a queue of GimpObjects.  It derives from
      GimpSubProgress, and hence can be used as a GimpProgress object.
      It keeps track of the total memsize of the objects that were
      pushed-to and popped-from the queue, and uses these numbers to set
      the corresponding subrange of the progress object when an object is
      popped.
      
      This provides an easy way to perform an operation on a set of
      objects, correctly reporting progress based on the relative sizes
      of the objects, which is assumed to be a good estimate of the
      relative cost of processing each object.
      3ee5054e
  12. 22 Dec, 2017 1 commit
    • Ell's avatar
      Bug 753412 - New Canvas rotation feature rotates brush. · eded91e1
      Ell authored
      Replace the "lock brush size to zoom" paint option with a "lock
      brush to view" option, which links the entire brush transform to
      the view transform, so that the brush remains invariant in display
      space under scaling, rotation, and reflection.
      eded91e1
  13. 11 May, 2017 1 commit
    • Ell's avatar
      app: add GimpLayerStack · 07ac78ef
      Ell authored
      A subclass of GimpDrawableStack, for layer stacks.  Invalidates the
      layers' backdrop as/when necessary, according to the value of their
      excludes_backdrop property.
      
      Make gimp_drawable_stack_update() protected, instead of private, so
      that we can use it in GimpLayerStack.
      07ac78ef
  14. 03 Jan, 2017 2 commits
  15. 20 May, 2016 2 commits
  16. 19 May, 2016 1 commit
  17. 11 May, 2016 1 commit
  18. 03 Feb, 2016 1 commit
  19. 02 Feb, 2016 3 commits
    • Jehan's avatar
      app: add a "Mandala" symmetry. · 1c0a0a47
      Jehan authored
      This is basically a multiple rotation around a given center.
      1c0a0a47
    • Jehan's avatar
      app: add a "Tiling" symmetry. · b5811b05
      Jehan authored
      b5811b05
    • Jehan's avatar
      Bug 648776 - mirror symmetries. · 76f573c9
      Jehan authored
      You can now set any paint tool to mirror painting relatively
      horizontal/vertical axis or a central point (any combination of these 3
      symmetries).
      This has been implemented as a new multi-stroke core, where every stroke
      is actually handled as a multi-stroke (default of size 1).
      This is also the first usage of custom guides for symmetry guiding.
      Current version has to be activated in the playground.
      76f573c9
  20. 29 Dec, 2015 1 commit
  21. 20 Dec, 2015 1 commit
  22. 26 Nov, 2014 1 commit
  23. 17 Nov, 2014 1 commit
  24. 16 Nov, 2014 1 commit
  25. 30 May, 2014 1 commit
  26. 25 May, 2013 1 commit
  27. 11 Apr, 2013 2 commits