1. 07 Nov, 2018 1 commit
  2. 03 Nov, 2018 1 commit
  3. 21 Oct, 2018 1 commit
  4. 20 Oct, 2018 1 commit
  5. 19 Oct, 2018 1 commit
  6. 11 Oct, 2018 1 commit
    • Ell's avatar
      tools: fix performance-log viewer profile thread-filter · 65131b2c
      Ell authored
      In performance-log-viewer.py, fix thread-state toggling in the
      profile-view thread-filter popover, when not all threads are
      included in the current selection.
      
      (cherry picked from commit 43b492ff834e5fe05050e4845555fba3dd52503f)
      65131b2c
  7. 10 Oct, 2018 1 commit
    • Ell's avatar
      tools: add performance-log-coalesce.py; use in performance-log-viewer · 8c91206d
      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.
      
      (cherry picked from commit cb51ea981a4506d1adbb9346b1b39502994bf35e)
      8c91206d
  8. 30 Sep, 2018 4 commits
    • Ell's avatar
      tools: in performance-log-viewer.py, add annotated source view · c6f11967
      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.
      
      (cherry picked from commit 88438c50558533e1b0626824d9d516e6bda36037)
      c6f11967
    • Ell's avatar
      tools: in performance-log-view.py, don't change call-graph path ... · 8624f307
      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.
      
      (cherry picked from commit b672f2007537de54be17c28327fc3c51c4b19f93)
      8624f307
    • Ell's avatar
      tools: in performance-log-viewer.py, cache source file lookups · 43584300
      Ell authored
      In the performance-log viewer, cache the results of source-file
      lookups, to speed up future lookups.
      
      (cherry picked from commit 97498017c098f136ece121b3c6b208e5e33553b5)
      43584300
    • Ell's avatar
      tools: in performance-log-viewer.py, allow viewing source files ... · 33269cc8
      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.
      
      (cherry picked from commit 0f38709259f52554f5ed61ec69bde21fe73c0e7d)
      33269cc8
  9. 29 Sep, 2018 2 commits
  10. 28 Sep, 2018 1 commit
    • Ell's avatar
      app: in performance-log-viewer.py, add undo support · 61367b3f
      Ell authored
      Add undo functionality to the performance-log viewer, which allows
      undoing/redoing changes to the sample selection, and the call-graph
      state.
      
      (cherry picked from commit 6ad3dbdb17d1cc419b15dbb84a144545d695bf4a)
      61367b3f
  11. 27 Sep, 2018 1 commit
    • Ell's avatar
      tools: various improvements in gimp-performance-log-viewer.py · 6bc2b330
      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.
      
      (cherry picked from commit d33fb0e7b847bf0a899cd78b87f9bc56e7180d70)
      6bc2b330
  12. 23 Sep, 2018 4 commits
  13. 21 Sep, 2018 3 commits
    • Ell's avatar
      tools: only show object/source basename in performance-log backtraces · cb26c31a
      Ell authored
      ... to reduce their verbosity.  Show the full path in the
      corresponding tooltip.
      
      (cherry picked from commit 2c8e3f8e0a0721d57c572373dad36aeaf3077d6e)
      cb26c31a
    • Ell's avatar
      tools: replace performance-log viewer call-graph direction icons · e839794d
      Ell authored
      Use the less-ambiguous, if just as clumsy,
      "format-indent-more/less" icons, to stand for the
      caller -> callee, and callee -> caller, directions, respectively.
      
      (cherry picked from commit c7a4eb46024d7b073c1182d78f41c4d33817c1c5)
      e839794d
    • Ell's avatar
      tools: a few improvements in performance-log-viewer.py · c0e82c03
      Ell authored
      Fix searching for samples by thread name, in particular, when there
      are unnamed threads.
      
      Use GtkMenuButton, instead of GtkButton, for the find-samples
      header button.
      
      Add mnemonics to the find-samples popover.
      
      (cherry picked from commit c537341d35fbb45a7ae15a759fe3d5ed591107e9)
      c0e82c03
  14. 16 Sep, 2018 3 commits
    • Ell's avatar
      tools: in performance-log-viewer.py, fix profile viewer search column · 3d24dfbc
      Ell authored
      (cherry picked from commit f8dd444e980c035b4865ed024717e9c7932f75f5)
      3d24dfbc
    • Ell's avatar
      tools: add performance-log-viewer.py and driver · cc18c2f8
      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.
      
      (cherry picked from commit 3601c9189b602d04d4d75a5ed14417ce9dbf30a7)
      cc18c2f8
    • Ell's avatar
      tools: add performance-log-deduce.py · 440695fa
      Ell authored
      ... which statistically deduces the correct thread states based on
      backtrace address frequency, fixing local inaccuracies.
      
      (cherry picked from commit 7e186f3e5d5cac339a051b700ba8ea9ad574fe24)
      440695fa
  15. 03 Sep, 2018 1 commit
    • Ell's avatar
      app, tools: add "running" thread attribute to GimpBacktrace/performance-log · 0fcf02a7
      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).
      
      (cherry picked from commit 78adb7c9008011161009153a56354198c0842661)
      0fcf02a7
  16. 02 Sep, 2018 1 commit
    • Ell's avatar
      tools: add performance-log-related tools · 1122b3e4
      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.
      
      (cherry picked from commit d7c74a615b0760e87727f38e564748aab3904af7)
      1122b3e4
  17. 12 Aug, 2018 1 commit
    • Jehan's avatar
      tools: fix linking error. · 0865e9db
      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.
      
      Fixes:
      > 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
      0865e9db
  18. 11 Jul, 2018 1 commit
  19. 23 Jun, 2018 1 commit
  20. 16 Jun, 2018 1 commit
    • Félix Piédallu's avatar
      Fix Python files: · 22657012
      Félix Piédallu authored
      * Prefer python2 to python that may point on python3 on modern installs.
      * Fix indent/spaces consistency.
      22657012
  21. 15 Jun, 2018 1 commit
  22. 04 Jun, 2018 1 commit
  23. 27 May, 2018 4 commits
    • Jehan's avatar
      tools: make gimptool memory-managed. · 4bf65903
      Jehan authored
      The code was basically leaking memory everywhere, and apparently on
      purpose (according to a top comment). Even on short-lived process, not
      properly managing memory is not a good habit, especially if we plan to
      maintain a program for the long run.
      So here are some fixes. I'm sure I must have missed some places (code
      was a mess), and hopefully I broke nothing. But that's good for now. At
      least it is somewhat sane code now.
      
      (cherry picked from commit f3de5cd3fee4b7e7aa9041fccca23fa8e084e419)
      4bf65903
    • Jehan's avatar
      tools: do not segfault gimptool with source without extension. · 452c9781
      Jehan authored
      Since commit 58fa382001, gimptool would accept source files with
      non-standard extensions when using known C or C++ compilers. This would
      include source with no extensions at all.
      When this happens, do not try to set a pointer to a non-existing dot
      separator to '\0'. That obviously segfaults.
      
      (cherry picked from commit 02fc818bf651017d21b81e6fda9497fbdaca4682)
      452c9781
    • Jehan's avatar
      tools: clean tabs out of gimptool code. · 41436198
      Jehan authored
      (cherry picked from commit 355676e7ae8971e54860e317360f47beacf0681b)
      41436198
    • 張俊芝's avatar
      Issue #1506: Adds support for source file names with special... · a52f8363
      張俊芝 authored
      ... characters and non-standard suffixes in gimptool
      
      (cherry picked from commit 58fa38200102a2a59ea5d19aa4f36fd5e008a2c2)
      a52f8363
  24. 18 Apr, 2018 1 commit
  25. 15 Apr, 2018 1 commit
  26. 08 Apr, 2018 1 commit
    • Ell's avatar
      Makefiles: don't use -xobjective-c when linking files on Mac · 6ebc3f1b
      Ell authored
      Last commit caused -xobjective-c to be passed during linking on
      Mac, causing object files to be treated as source files.  Add a
      -xnone flag to AM_LDFLAGS, canceling the effect of -xobjective-c.
      
      Additinally, add a -xobjective-c++ flag to AM_CXXFLAGS, so that we
      can use Objective-C in C++ files on Mac, if we ever need to.
      6ebc3f1b