1. 03 Sep, 2018 1 commit
  2. 11 Jul, 2018 1 commit
  3. 06 Jul, 2018 1 commit
    • Ell's avatar
      app: properly shut down gimp-parallel in stable versions · ed033b1c
      Ell authored
      In app_exit_after_callback(), call gimp_gegl_exit() before
      gegl_exit() when performing a quick shut-down in stable versions,
      so that gimp-parallel, and, in particular, the async thread pool,
      is properly shut down.  Code running in the async thread pool may
      use GEGL (in particular, now the drawable previews are rendered
      asynchronously), and calling gegl_exit() while it's still running
      is unsafe.
      ed033b1c
  4. 20 May, 2018 4 commits
  5. 03 May, 2018 1 commit
    • Ell's avatar
      app: cleanly remove log handlers on exit · 2e643e62
      Ell authored
      Remove the log handlers registered in errors_init(), in
      errors_exit(), and call errors_exit() before destroying the Gimp
      instance, since the log handlers depend on it.  This avoids
      segfaulting if a message is logged after destroying the Gimp
      instance.
      2e643e62
  6. 01 May, 2018 1 commit
    • Jehan's avatar
      app: popup error at startup when some fonts fail to load. · e796e3a5
      Jehan authored
      As proposed on IRC. This will allow people to debug their fonts (for
      instance when there are permission issues or whatnot) by knowing the
      list of problematic fonts in an error dialog at startup (and not only on
      terminal).
      e796e3a5
  7. 08 Apr, 2018 1 commit
  8. 04 Apr, 2018 1 commit
    • Ell's avatar
      app: add gimp-parallel · 86b89cf6
      Ell authored
      Add gimp-parallel.[cc,h], which provides a set of parallel
      algorithms.
      
      These currently include:
      
        - gimp_parallel_distribute():  Calls a callback function in
          parallel on multiple threads, passing it the current thread
          index, and the total number of threads.  Allows specifying the
          maximal number of threads used.
      
        - gimp_parallel_distribute_range():  Splits a range of integers
          between multiple threads, passing the sub-range to a callback
          function.  Allows specifying the minimal sub-range size.
      
        - gimp_parallel_distribute_area():  Splits a rectangular area
          between multiple threads, passing the sub-area to a callback
          function.  Allows specifying the minimal sub-area.
      
      The callback function is passed using an appropriately-typed
      function pointer, and a user-data pointer.  Additionally, when used
      in a C++ file, each of the above functions has an overloaded
      template version, taking the callback through a generic parameter,
      without a user-data pointer, which allows using function objects.
      86b89cf6
  9. 29 Mar, 2018 1 commit
    • Ell's avatar
      app: add --show-debug-menu command-line option · 53c145c0
      Ell authored
      The debug menu is currently not included in stable versions.
      
      Include the menu unconditionally, but hide it, and its associated
      actions, by default in stable versions.  Allow enabling the menu
      using a new --show-debug-menu command-line option, in the same vein
      as --show-playground.
      53c145c0
  10. 25 Mar, 2018 1 commit
    • Jehan's avatar
      app: run errors_init() after gimp_load_config(). · 9f3ee499
      Jehan authored
      Since error handling is based on preferences, the config needs to be
      loaded first. Otherwise the gimp->config object does not exist yet and
      we get a bunch of "'G_IS_OBJECT (object)' failed" assertion which
      recurse in error handling when trying to get the "debug-policy"
      property.
      Just init the error handling later. It means it won't handle early
      loading code, but that is not much of an issue.
      9f3ee499
  11. 22 Mar, 2018 1 commit
    • Jehan's avatar
      app: output a dialog to recover images salvaged after a crash. · 25af765f
      Jehan authored
      Since commit d916fedf, GIMP has had the hidden feature to salvage
      images (if possible) during a crash into a backup folder. This commit
      finishes the feature by opening a dialog proposing to try and recover
      the salvaged images.
      This is not perfect yet since it doesn't "remember" the XCF path (in
      case it was a previously saved image). The images open as new unsaved
      and dirty images, but directly from the contents at crash time. For now,
      it is up to people to figure out what they correspond to, if relevant.
      25af765f
  12. 21 Feb, 2018 1 commit
    • Jehan's avatar
      Bug 793630 - GIMP does not create 'gradients' directory on first run. · 6c932287
      Jehan authored
      I had to shuffle a bit the order of initialization since we were
      creating a folder for the crash logs, as well as one for the backups a
      bit too early. So now I move errors_init() after configuration folder
      creation/migration, and I create both these folders in this function
      (especially since gimp_init_signal_handlers() is run even earlier).
      
      For this later reason, I also check for backtrace_file and backup_path
      being allocated in gimp_eek() since it is also possible for signals
      happening before errors_init(). In such a case, we will simply bypass
      the GUI error handler (terminal error handler still possible) and the
      backup (anyway there is nothing to backup at this point).
      
      I could also try to create these 2 directories at the last second, when
      needed. But since we are trying to do the strict minimum during crash
      handling, it is better to do whatever can be done earlier.
      6c932287
  13. 29 Jan, 2018 1 commit
  14. 28 Jan, 2018 1 commit
    • Jehan's avatar
      app, tools: add support for ExcHndl/DrMinGW for Win32 debugging. · ae3cd00f
      Jehan authored
      The feature already exists in our code and produces backtraces upon a
      crash into a file. The only difference is that we are now getting the
      file contents and showing it in our new debug dialog, so that it works
      similarly on all platform (and therefore making the debug info visible
      to people, otherwise they would never report, even though the data is
      generated).
      The difference with gdb/lldb is that it doesn't allow backtraces at
      random points (for debugging non-fatal yet bad errors). Also the API has
      just 2 functions and in particular an ExcHndlInit() but no way to unload
      the feature. So we don't need the debugging page in Preferences because
      the switch option would not work. On Windows, the feature will be
      decided at build time only.
      
      Last point: the code is untested on Windows so far. I assume it would
      work, but there is at least one point I am unsure of: will ExcHndl have
      already generated the backtrace file when gimpdebug runs? If not, I will
      have to let gimp die first to be able to get the backtrace.
      ae3cd00f
  15. 17 Dec, 2017 5 commits
  16. 08 Oct, 2017 1 commit
    • Jehan's avatar
      Bug 787457 - Paint brush settings display system language (e.g. zh_TW) · d01e182c
      Jehan authored
      ... and ignore language setting (e.g. en_US).
      The problem came from the fact that these settings names are class
      properties of GimpPaintOptions/GimpContext which is first instanciated
      when the Gimp object is created. This unfortunately happened before
      language_init() since we needed these objects when loading gimprc
      (making inversion of calls rather complicated).
      Therefore they were localized with the system language, not the
      configured language.
      The solution was to create a very simple object GimpLangRC which
      implements the GimpConfig interface, for sole purpose to read the
      language from `gimprc` in a first pass. gimp_load_config() will still
      happen later as a second pass to properly load the rest of the
      configuration.
      d01e182c
  17. 15 Jun, 2017 1 commit
    • Ell's avatar
      app: split sanity check into early/late stages, to fix gegl translation · d37fb8aa
      Ell authored
      The GEGL ops sanity check causes all ops to be initialized.  The
      strings used by their properties will pick the translation selected
      at the time of the check.  It must therefore run after language
      intiailization, otherwise the selected translation would correspond
      to the system locale, even if the user selected a different language
      in the preferences.
      
      Split the sanity check into early and late stages.  The early stage
      is run before the call to app_run(), as it did before, while the
      late stage is run during app_run(), after the configuration has been
      loaded.  Currently, the GEGL ops check is the only late-stage check;
      all other checks are performed during the early stage.
      d37fb8aa
  18. 12 Mar, 2017 1 commit
  19. 26 Feb, 2017 1 commit
  20. 24 Jan, 2017 1 commit
    • Michael Natterer's avatar
      A more hackish way to use GimpLayerMode instead of GimpLayerModeEffects · ebd3ab1b
      Michael Natterer authored
      C++ won't allow us to use GimpLayerMode in the API where we used to
      have GimpLayerModeEffects.
      
      Move GimpLayerModeEffects to libgimpbase/gimpcompatenums.h so it's
      not in the API any longer, and instead typedef and define stuff in
      libgimp/gimptypes.h, and adapt the compat enum registering code
      accordingly.
      ebd3ab1b
  21. 08 Jan, 2017 1 commit
  22. 21 Dec, 2016 1 commit
  23. 11 Nov, 2016 2 commits
  24. 10 Nov, 2016 2 commits
  25. 13 Sep, 2016 1 commit
    • Michael Natterer's avatar
      Bug 599573 - Remember dialog defaults between Gimp sessions · 20a32d97
      Michael Natterer authored
      Add GimpFillOptions and GimpStrokeOptions to GimpDialogConfig and use
      them in the Fill/Stroke Selection/Path dialogs and for the "with last
      values" commands. Add GUI for them to Preferences -> Dialog Defaults.
      
      This requires most of the stuff in my last few commits, and some
      more changes:
      
      GimpFillOptions is a GimpContext which has all sorts of connections to
      everything, including a Gimp pointer. Hack around in GimpDialogConfig
      to add a Gimp property, and add "gimp" parameters to quite some GimpRC
      functions. Treat the Gimp* as a GObject* in all public API because
      core/ stuff is not known in config/.
      20a32d97
  26. 12 Sep, 2016 1 commit
    • Michael Natterer's avatar
      app: merge units.[ch] into core/gimp-units.[ch] · 631110e0
      Michael Natterer authored
      and initialize units in gimp_init(). This was completely
      over-engineered but in the end boils down to a bad hack that needs a
      static "the_unit_gimp" pointer anyway, so let's at least have the hacks
      in one file.
      631110e0
  27. 29 Sep, 2015 1 commit
  28. 06 Oct, 2014 1 commit
  29. 13 Sep, 2014 1 commit
  30. 29 Jul, 2014 1 commit
  31. 28 Jul, 2014 1 commit