1. 10 Sep, 2018 6 commits
  2. 09 Sep, 2018 1 commit
  3. 06 Sep, 2018 4 commits
  4. 05 Sep, 2018 6 commits
  5. 04 Sep, 2018 1 commit
  6. 03 Sep, 2018 6 commits
  7. 02 Sep, 2018 12 commits
    • Ell's avatar
      app: remove unused #define in gimpbacktrace-linux.c · c4d89bfe
      Ell authored
      c4d89bfe
    • 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.
      7ac87dc0
    • Ell's avatar
    • Ell's avatar
      0d3647f8
    • Ell's avatar
      app: minor cleanup in GimpBacktrace · cb8dd047
      Ell authored
      cb8dd047
    • 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).
      0e26525e
    • Ell's avatar
      app: fix app/tests linking · 7a02859d
      Ell authored
      Required since commit 80bf686c.
      7a02859d
    • Ell's avatar
      po: add dashboard-commands.c to POTFILES.in · 0e04b775
      Ell authored
      0e04b775
    • 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
      backtrace.
      
      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.
      d7c74a61
    • 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
      overridden using the GIMP_PERFORMANCE_LOG_SAMPLE_FREQUENCY
      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
      active.)
      
      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.
      36477bb2
    • 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
    • Ell's avatar
      app: add mnemonics to dashboard action labels · a109a77d
      Ell authored
      a109a77d
  8. 01 Sep, 2018 1 commit
  9. 31 Aug, 2018 3 commits