1. 10 Nov, 2018 1 commit
  2. 09 Nov, 2018 1 commit
  3. 07 Nov, 2018 2 commits
  4. 03 Nov, 2018 1 commit
  5. 21 Oct, 2018 1 commit
  6. 20 Oct, 2018 1 commit
  7. 19 Oct, 2018 2 commits
  8. 11 Oct, 2018 1 commit
  9. 10 Oct, 2018 1 commit
    • Ell's avatar
      tools: add performance-log-coalesce.py; use in performance-log-viewer · cb51ea98
      Ell authored
      Add a new performance-log-coalesce.py tool, which groups together
      performance-log address-map entries belonging to the same function
      into a single symbol, by filling-in missing base symbol addresses.
      The addresses are grouped such that each set of addresses
      corresponding to a symbol of the same name, in the same source
      file, are given the same (unique, but arbitrary) base address.
      See the previous commit for why this is necessary.
      This should work fine in most cases, however, for logs produced on
      Windows, it can over-coalesce addresses belonging to different C++
      lambda-functions in the same source file, since they all seem to be
      given the same _FUN symbol name.
      Use the new tool as part of the pipeline in performance-log-viewer.
  10. 30 Sep, 2018 4 commits
    • Ell's avatar
      tools: in performance-log-viewer.py, add annotated source view · 88438c50
      Ell authored
      Add an annotated source view to the performance-log viewer's
      profile view.  When selecting the [Self] entry of a function's
      profile, for which source information is available and whose source
      is found locally, a new column opens, showing the function's
      source, annotated with sample statistics.  Header-bar buttons allow
      navigation through the annotated lines, selection of all the
      samples corresponding to a given line, and opening the text editor
      at the current line.
    • Ell's avatar
      tools: in performance-log-view.py, don't change call-graph path ... · b672f200
      Ell authored
      ... when selecting a function's samples
      Since we now preserve the call-graph path across state changes,
      there's no need to explictly set the path after selecting a
      function's samples in the profile view.
    • Ell's avatar
      tools: in performance-log-viewer.py, cache source file lookups · 97498017
      Ell authored
      In the performance-log viewer, cache the results of source-file
      lookups, to speed up future lookups.
    • Ell's avatar
      tools: in performance-log-viewer.py, allow viewing source files ... · 0f387092
      Ell authored
      ... in backtraces
      In the performance-log viewer's backtrace viewer, show a document
      icon next to stack frames with source-location information, whose
      source file is found locally.  Clicking the icon opens the source
      file in a text editor at the relevant line.
      Two environment variables control this feature:
        - PERFORMANCE_LOG_VIEWER_PATH is a list of colon-separated
          directories in which to look for source files.  If this
          variable is undefined, the current directory is used.
        - PERFORMANCE_LOG_VIEWER_EDITOR is the command to use to launch
          the text editor, for editing a specific file at a specific
          line.  The special strings "{file}" and "{line}" are replaced
          with the filename and line-number, respectively.  If this
          variable is undefined, "xdg-open {file}" is used.
  11. 29 Sep, 2018 2 commits
  12. 28 Sep, 2018 1 commit
  13. 27 Sep, 2018 1 commit
    • Ell's avatar
      tools: various improvements in gimp-performance-log-viewer.py · d33fb0e7
      Ell authored
      Fix int-ratio variable formatting when the input is NaN, which can
      happen when calculating the standard deviation, if all the values
      are infinite.
      Fix keyboard sample-range selection.
      Deselect all samples when right-clicking a sample graph.
  14. 23 Sep, 2018 4 commits
  15. 21 Sep, 2018 3 commits
  16. 16 Sep, 2018 3 commits
    • Ell's avatar
    • Ell's avatar
      tools: add performance-log-viewer.py and driver · 3601c918
      Ell authored
      performance-log-viewer.py is a viewer for GIMP performance logs.
      The viewer is made up of two parts: a sample-selection area at the
      top, and an information area at the bottom.
      The sample-selection area visualizes the sampled variables and
      markers using a simultaneous set of plots, and displays the
      currently selected samples.  Samples can be selected directly
      through the sample-selection area, or by other means, such as
      searching for all samples satisfying a certain condition, or
      containing a certain function.
      The information area shows global information stored in the log, as
      well as information specific to the currently selected samples,
      including variable listing and statistics, full backtrace, and
      profile/call-graph information.
      Note that performance-log-viewer.py takes its input from STDIN,
      like the rest of the performance-log tools, and is therefore
      suitable for use as part of a pipeline.  For standalone use, the
      performance-log-viewer driver is also included, which takes the log
      file as a command-line argument, and processes it through an
      appropriate pipeline before feeding it to the viewer.
    • Ell's avatar
      tools: add performance-log-deduce.py · 7e186f3e
      Ell authored
      ... which statistically deduces the correct thread states based on
      backtrace address frequency, fixing local inaccuracies.
  17. 03 Sep, 2018 1 commit
    • Ell's avatar
      app, tools: add "running" thread attribute to GimpBacktrace/performance-log · 78adb7c9
      Ell authored
      The "running" attribute (readable through
      gimp_backtrace_is_thread_running(), and recorded in the performance
      log) specifies if the thread was in a running or suspended state at
      the time the backtrace was taken.  It is accurate on Linux, but
      only approximated on Windows.
      Adapt the performance-log-expand.py tool to maintain this attribute
      (and any future thread attributes we might add).
  18. 02 Sep, 2018 1 commit
    • 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.
  19. 20 Aug, 2018 1 commit
  20. 12 Aug, 2018 1 commit
    • Jehan's avatar
      tools: fix linking error. · 14614969
      Jehan authored
      Though no error was raised during a native build, a cross-build was
      choking on this missing link to libgimpbase and failing.
      The error returned by the linker though was a bit amiss.
      > gimp-test-clipboard.o: In function `test_clipboard_copy_callback':
      > tools/gimp-test-clipboard.c:419: undefined reference to `g_file_get_contents'
      > collect2: error: ld returned 1 exit status
      (cherry picked from commit 0865e9db)
  21. 11 Jul, 2018 1 commit
  22. 23 Jun, 2018 1 commit
  23. 16 Jun, 2018 1 commit
    • Salamandar's avatar
      Fix Python files: · 15075932
      Salamandar authored
      * Prefer python2 to python that may point on python3 on modern installs.
      * Fix indent/spaces consistency.
      (cherry picked from commit 22657012)
  24. 15 Jun, 2018 2 commits
  25. 04 Jun, 2018 1 commit
  26. 28 May, 2018 1 commit