1. 30 Jul, 2020 1 commit
  2. 29 Jul, 2020 2 commits
    • Ell's avatar
      app: add progressive performance logs · 60ca6110
      Ell authored
      Add an option to record progressive performance logs.  Progressive
      logs contain complete information after each recorded sample, by
      writing partial address maps at each sample, containing all new
      addresses introduced by the sample.  Furthermore, when recording a
      progressive log, the output stream is flushed after each sample.
      
      This allows recording complete logs even in cases where they can't
      be properly terminated, such as when GIMP crashes or freezes in the
      middle of the log.
      
      Progressive logs are disabled by default, since they potentially
      increase the sampling cost.  They can be enabled through a toggle
      in the log file-dialog, or through the
      GIMP_PERFORMANCE_LOG_PROGRESSIVE environment varaible.
      
      (cherry picked from commit 146c2343)
      60ca6110
    • Ell's avatar
      app: allow controlling performance-log parameters through the UI · 7e21f792
      Ell authored
      When recording a performance log, allow setting the log parametrs
      through the file dialog.  Currently, this includes the sample
      frequency, and the option to include backtraces.
      
      These options are still controllable through the
      GIMP_PERFORMANCE_LOG_SAMPLE_FREQUENCY and
      GIMP_PERFORMANCE_LOG_BACKTRACE environment variables.  When set,
      the variables override the values entered through the UI.
      
      (cherry picked from commit 126002c5)
      7e21f792
  3. 03 Jul, 2019 1 commit
    • Michael Natterer's avatar
      app: GtkAction -> GAction madness part two · ff7ca87c
      Michael Natterer authored
      Change all action callbacks so they can be invoked by a GAction:
      
      - add GimpActionCallback typedef:
        void (* cb) (GimpAction*, GVariant*, gpointer)
      - change all action callbacks to the GimpActionCallback signature
      - add "gimp-activate" and "gimp-change-state" signals to GimpAction,
        with the same signature as the resp. GAction signals
      - remove all other custom action signals and only use the new
        GimpAction signals
      - pass around appropriate GVariants containing booleans, int32,
        strings
      - badly hack around to force a GimpProcedure pointer into a
        uint64 variant
      - remove all G_CALLBACK() casts from all action callbacks,
        they all have the same signature now
      
      (cherry picked from commit 3b6b3fc1)
      ff7ca87c
  4. 02 Jul, 2019 2 commits
    • Michael Natterer's avatar
      app: change all action callback signatures to use GimpAction · a1a8f006
      Michael Natterer authored
      instead of GtkAction, which is correct now because all our actions
      implement the GimpAction interface.
      
      (cherry picked from commit b9d47f2d)
      a1a8f006
    • Michael Natterer's avatar
      app: start porting away from GtkAction and friends · 417d0dcc
      Michael Natterer authored
      Step one: get rid of all those deprecation warnings that make
      it hard to see any other warnings:
      
      - add a lot of dummy API to GimpAction, GimpActionGroup, GimpUIManager
        etc. which simply forwards to the deprecated GTK functions, they
        will all go away again later
      - rename GimpAction to GimpActionImpl
      - add interface GimpAction that is implemented by all action classes,
        creates a common interface and allows to remove some duplicated
        logic from GimpToggleAction and GimpRadioAction, and at the same
        time adds more features
      
      (cherry picked from commit 86e07c16)
      
      Merged to gimp-2-10 to keep the diff to master as small as possible
      417d0dcc
  5. 02 Sep, 2018 1 commit
    • Ell's avatar
      app, icons, menus: add performance-log recording to the dashboard · 40ac4f7b
      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.
      40ac4f7b
  6. 11 Jul, 2018 1 commit
  7. 25 Apr, 2018 1 commit
  8. 30 Dec, 2017 1 commit
    • Ell's avatar
      app: various GimpDashboard improvements · ee418191
      Ell authored
      Refactor GimpDashboard to autogenerate the UI based on a
      description of the different variables, fields, and groups.
      
      Allow individual groups to be expanded/collapsed, and individual
      fields to be enabled/disabled.  Save the relevant state in the
      dashboard's aux-info.
      
      Add fields for the new GeglStats properties, as per GEGL commit
      25c39ce6c9bb618f06ac96d118e624be66464d74.  The new fields are not
      enabled by default.
      
      Add "reset" action, to clear the history, and reset cumulative
      data.
      ee418191
  9. 19 Dec, 2017 1 commit
    • Ell's avatar
      app, menus, icons: add dashboard dockable · 981e8dcd
      Ell authored
      The dashboard dockable shows the current GEGL cache and swap sizes,
      and their recent history.  It has options to control the update
      rate and history duration of the data, and an option to warn (by
      raising/blinking the dialog) when the swap size approaches its
      limit.
      981e8dcd