1. 03 Sep, 2018 4 commits
  2. 02 Sep, 2018 12 commits
    • Ell's avatar
      app: remove unused #define in gimpbacktrace-linux.c · c4d89bfe
      Ell authored
    • Ell's avatar
      app: rename gimp_backtrace_get_symbol_info() to ..._get_address_info() · 7ac87dc0
      Ell authored
      This function returns information about the given address, which
      is currently mostly limited to the corresponding symbol
      information, but we might want to add address-specific information
      in the future, such as a line number.
    • Ell's avatar
    • Ell's avatar
    • Ell's avatar
      app: minor cleanup in GimpBacktrace · cb8dd047
      Ell authored
    • Ell's avatar
      app: show error on attempt to subtract-from/intersect-with empty selection · 0e26525e
      Ell authored
      In all the selection tools, show an error (and a BAD cursor
      modifier) wheh starting a selection, if the current selection is
      empty, and the tool is in SUBTRACT or INTERSECT mode (in which
      case, the selection has no effect).
    • Ell's avatar
      app: fix app/tests linking · 7a02859d
      Ell authored
      Required since commit 80bf686c.
    • Ell's avatar
      po: add dashboard-commands.c to POTFILES.in · 0e04b775
      Ell authored
    • Ell's avatar
      tools: add performance-log-related tools · d7c74a61
      Ell authored
      performance-log-expand.py decodes a delta-encoded performance log
      by expanding the deltas, producing a log where each sample (and
      other relevant elements) contain complete information.  Note that
      the structure of expanded logs is identical to that of delta-
      encoded logs, the expanded log simply has no deltas.
      performance-log-resolve.py resolves symbol information in
      backtraces.  The logs produced by GIMP only specify the program
      counter at each stack frame, providing an address-map to map
      program-counter addresses to actual symbols separately.  This tool
      looks up each program-counter address in the address map,
      incorporating the relevant symbol information directly into the
      Both tools read their input from STDIN, and write their output to
      STDOUT, and can be chained in a pipeline (with
      gimp-performance-log-expand.py appearing first).
      Note that these tools require Python 3.
    • Ell's avatar
      app, icons, menus: add performance-log recording to the dashboard · 36477bb2
      Ell authored
      Add an option to record a performance log through the dashboard.
      The log contains a series of samples of the dashboard variables, as
      well as the full program backtrace, when available.  As such, it
      essentially acts as a built-in profiler, which allows us to
      correlate program execution with the information available through
      the dashboard.  It is meant to be used for creating logs to
      accompany perofrmance-related bug reports, as well as for profiling
      GIMP during development.
      The sample frequency defaults to 10 samples per second, but can be
      environment variable.  Backtraces are included by default when
      available, but can be suppressed using the
      GIMP_PERFORMANCE_LOG_NO_BACKTRACE environment variable.
      Logs are created through the new "record" button at the bottom of
      the dashboard dialog.  When pressed, a file dialog is opened to
      select the log file, and, once confirmed, data is being recorded to
      the selected file.  Recording is stopped by pressing the "record"
      button again (we use a highlight to indicate that recording is
      While recording, the "reset" button is replaced with an "add marker"
      button, which can be used to add event markers to the log.  These
      can be used to mark events of interest, such as "started painting"
      and "stopped painting", which then appear in the log as part of the
      sample stream.  Markers are numbered sequentually, and the number
      of the next (to-be-added) marker appears on the button.  Shift-
      clicking the button adds an empty (description-less) marker, which
      is only identified by its number; this can be used when markers
      need to be added quickly.
      The log is an XML file, containing some extra information (such as
      the output of "$ gimp -v", and symbol information) in addition to
      the samples.  The data in the file is delta-encoded to reduce the
      file size, meaning that samples (as well as some other elements)
      only specify the changes since the previous sample.  This adds a
      necessary decoding step before data can be processed; the next
      commit adds a tool that does that.
      There are currently no tools to actually analyze the data -- that's
      still TBD -- but at least we can start gathering it.
    • 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.
    • Ell's avatar
      app: add mnemonics to dashboard action labels · a109a77d
      Ell authored
  3. 01 Sep, 2018 1 commit
  4. 31 Aug, 2018 3 commits
  5. 30 Aug, 2018 6 commits
  6. 29 Aug, 2018 1 commit
    • Debarshi Ray's avatar
      file-jpeg: Fix the copyright and license notices of jpeg-icc.* · 5dcee9ad
      Debarshi Ray authored
      This code was originally written by Thomas G. Lane and Todd Newman,
      and proposed for inclusion in the Independent JPEG Group's software.
      However, that fell through when Tom left the IJG. It was not written by
      Marti Maria - Little cms only had a copy of that code.
      This code has recently been merged into libjpeg-turbo, so it seems
      reasonable to now consider libjpeg-turbo as the canonical source of
      these files. However, since the GIMP carries the original version of
      the code proposed for IJG's JPEG, and doesn't contain any of the more
      recent and minor tweaks made during its inclusion in libjpeg-turbo,
      only the original copyright holders (ie., Thomas G. Lane and Todd
      Newman) are mentioned.
      The relevant license text was lifted from the Independent JPEG Group's
      software, similar to the way it's done in Chromium and other users of
      this code.
  7. 28 Aug, 2018 2 commits
  8. 26 Aug, 2018 2 commits
  9. 25 Aug, 2018 2 commits
    • Christian Kirbach's avatar
      Update German translation · 4c9d82aa
      Christian Kirbach authored
      (cherry picked from commit 9feca3b0)
    • Ell's avatar
      Issue #2095 - Filter wavelet-decompose error with layer Group option active · e5638451
      Ell authored
      In gimp_image_merge_layers(), explicitly fetch the graph of the top
      layer's parent layer (if exists), to make sure that the top layer's
      graph has a parent node.  We already fetch the image graph, which
      takes care of top-level layers, however, if the top layer is a
      child of an invisible layer group, as is the case in the wavelet-
      decompose plug-in, this is not generally enough to guarantee that
      the group's graph is constructed.
  10. 21 Aug, 2018 1 commit
  11. 20 Aug, 2018 6 commits
    • Ell's avatar
      app: explicitly clear GUI when halting a filter tool · ec80a885
      Ell authored
      In gimp_filter_tool_halt(), explicitly clear the GUI container
      before clearing filter_tool->config, since the tool might be halted
      during the GUI dialog's delete event, in which case the GUI will
      only be implicitly destroyed *after* the function returns.  The
      destruction of the GUI might fire signals whose handlers rely on
      filter_tool->config, so we need to make sure it happens while it's
      still alive.
      In particular, this fixes a CRITICAL in the threshold tool, which
      occurs due to the histogram view's "range-changhed" signal being
      fired during its destruction, and its handler accessing
    • Ell's avatar
      app: add gimp_gtk_container_clear() · fd64aae4
      Ell authored
      ... which removes all non-internal children of a GtkContainer.
    • Michael Natterer's avatar
      app: make GimpDeviceInfo more rubust against broken device listings · 717c183a
      Michael Natterer authored
      gimp_device_info_set_device(): don't just bail out if a device with
      the same name is added again, instead, simply continue and overwrite
      the info's old device with the new one.
      NOTE that this only happens if something is wrong on the USB or udev
      or libinput or whatever side and the same device is present multiple
      times. The only "safe" thing is to assume that devices listed earlier
      are dead and dangling entities and that the last registered device is
      the one actually delivering events.
    • Michael Natterer's avatar
      icons: make the gap of the broken chain larger in the Color theme · 5d937a23
      Michael Natterer authored
      (cherry picked from commit 68375543)
    • Jehan's avatar
      tools: invert-svg build tool no longer necessary. · 49fc5e30
      Jehan authored
      This tool has been outdated for some time now as we don't generate an
      "inverted icons" theme anymore. This is all done through CSS from a
      single symbolic icon theme.
    • Jehan's avatar