1. 20 Nov, 2019 1 commit
    • Dmitry Kazakov's avatar
      Fix crash when moving a layer under a transformation mask · 77c57103
      Dmitry Kazakov authored
      When doing KisPaintDevice::prepareClone(), we should first set
      new defaultBounds object, and only after that clone the data.
      The reason for this: switching defaultBounds can change current
      level-of-detail/frameId, and therefore, switch currentData().
      
      BUG:412361
      77c57103
  2. 05 Nov, 2019 3 commits
    • Dmitry Kazakov's avatar
      Fix undo of image colorspace conversion · e39e6379
      Dmitry Kazakov authored
      The color space of the image projection should be change **before**
      other layers are converted. Some layers, which are updated using
      resetCache() fetch this information from the image, therefore it
      should be prepared beforehand.
      e39e6379
    • Dmitry Kazakov's avatar
      Implement undoable and thread-safe Assign Profile functionality · 88a343fd
      Dmitry Kazakov authored
      The patch basically implements KisAssignProfileProcessingVisitor
      which assigns a profile using strokes framework.
      
      The action is also undoable now.
      88a343fd
    • Dmitry Kazakov's avatar
      Fix random crashes when converting image color space · ccf5657a
      Dmitry Kazakov authored
      The patch basically ports image color space conversion into strokes
      system. The crash happened becasue updates were initiated right when
      the visitor was changing layers. With the strokes, this problem should
      be resolved.
      
      The patch also changed UIX: now 'Image->Properties->Color Space'
      changes the entire color space of the image, but not only color space
      of the root node (projection).
      
      BUG:410776
      ccf5657a
  3. 02 Aug, 2019 1 commit
  4. 07 May, 2019 1 commit
  5. 02 May, 2019 1 commit
  6. 09 Apr, 2019 1 commit
    • Dmitry Kazakov's avatar
      Fix memory leaks caused by KisPaintDevice::convertTo() · 4bab45a2
      Dmitry Kazakov authored
      For years this method returned KUndoCommand and for years we
      forgot to delete this command, causing memory leaks.
      
      This patch refactors convertTo() call to not return anythingon heap,
      but just accepting optional parent command.
      4bab45a2
  7. 08 Apr, 2019 1 commit
    • Dmitry Kazakov's avatar
      Fix crash in Split Alpha · 38175ae5
      Dmitry Kazakov authored
      convertTo() cannot be called from the ctor, because it creates
      chared pointers to 'this', which causes early death of the object.
      
      BUG:406241
      38175ae5
  8. 02 Apr, 2019 1 commit
  9. 19 Mar, 2019 1 commit
  10. 17 Mar, 2019 1 commit
    • Dmitry Kazakov's avatar
      Fix incorrect tile access in KisPaintDevice::clearSelection() · 195d8425
      Dmitry Kazakov authored
      purge() must be called if and only if no other actor still accesses
      the same tile. Therefore, the iterators should be destroyed before
      calling to purge.
      
      Theoretically this problem may lead to incorrect undo history
      being written, though I couldn't imagine how (yet).
      195d8425
  11. 06 Oct, 2018 1 commit
  12. 09 Aug, 2018 1 commit
  13. 27 May, 2018 1 commit
  14. 19 May, 2018 1 commit
  15. 11 May, 2018 1 commit
  16. 10 May, 2018 1 commit
  17. 04 May, 2018 2 commits
  18. 27 Mar, 2018 1 commit
  19. 13 Mar, 2018 1 commit
  20. 10 Jan, 2018 1 commit
    • Dmitry Kazakov's avatar
      2nd try of fixing color fluctuations in colorsmudge-dulling brushes · cc19c756
      Dmitry Kazakov authored
      Now the colorsmudge brush does all the blending in the high bit-depth
      colorspace. The patch introduces a special wrapper
      (KisPrecisePaintDeviceWrapper) that ensures a proper color space is used
      when needed. See the apidox in KisPrecisePaintDeviceWrapper.h.
      
      NOTE: this patch fixes **both** dulling and smearing modes!
      
      BUG:348267
      
      Test Plan:
      Needs to be tested:
      1) Colorsmudge brushes in Dulling mode with Color Rate option enabled
      2) Smudge Radius enabled or disabled: both should work correctly
      3) Opacity option should work correctly
      4) Overlay mode?
      
      Reviewers: #krita
      Differential Revision: https://phabricator.kde.org/D9686
      cc19c756
  21. 04 Jan, 2018 1 commit
    • Dmitry Kazakov's avatar
      Refactor KisSequentialIterator to use java-style iteration · f352cc1d
      Dmitry Kazakov authored
      This patch touches quite a lot of stuff throughout the entire Krita,
      please report any crashes you get because of that!
      
      Technical details:
      
      The sequential iterator (alongside the hline and vline) iterators had
      an inherent problem: when called with an empty rect it just crashed
      with SIGSEGV (hlive and vline iterators just have a hack to read/write
      at least one pixel when called with an empty rect). This problem happens
      because of the structure of API we use: we call nextPixel() **after** the
      first cycle of iteration, that is we will read/write at least one pixel
      even when the requested rect is empty(!).
      
      Now the iterator inserts one "virtual" pixel before every iteration that
      allows the user to call nextPixel() **before** the the first iteration
      and stop the cycle in case the check fails.
      
      See example code snippets in kis_sequential_iterator.h
      
      CC:kimageshop@kde.org
      BUG:388272
      f352cc1d
  22. 21 Dec, 2017 1 commit
  23. 11 Aug, 2017 1 commit
  24. 22 Jul, 2017 1 commit
  25. 11 Apr, 2017 1 commit
  26. 25 Mar, 2017 1 commit
    • Dmitry Kazakov's avatar
      Fix resetting the paint device cache on every iterator completion · 02ac4216
      Dmitry Kazakov authored
      This bug should have happened one day. We should reset the paint device
      cache not only on the creation of the iterator, but also on its
      completion.
      
      The actual bug happened because of concurrency, while the stroke was
      filling the selection, an delayed updateGUI() in the status bar
      requested selection->selectedExactRect(), which effectively updated the
      cache with empty rect (which it was at that moment). And when the
      iterator completed with the updated seleciton, the cache was already
      initialized with wrong (empty) rect.
      
      Now all the iterators notify the paint device about their completion
      using a special interface, therefore the problem cannot happen, all
      the editing event will be synchronized.
      
      BUG:374142
      02ac4216
  27. 09 Nov, 2016 1 commit
  28. 19 Oct, 2016 1 commit
  29. 18 Oct, 2016 1 commit
    • Frederik Gladhorn's avatar
      Be more consistent in usage of override keyword · b92e5f9c
      Frederik Gladhorn authored
      When a member function in a class uses override, all other functions
      that override virtuals should follow. This makes refactoring easier
      (renaming the base class function for example will result in an error in
      the derrived class).
      Most compilers have a warning for the use of override in only some
      functions. In order to reduce compiler warnings, add missing overrides.
      
      The warnings look like:
      warning: 'icon' overrides a member function but is not marked 'override'
      [-Winconsistent-missing-override]
      
      This patch does not touch KisLayer::original() since that is actually
      weird:
      in KisBaseNode original is a virtual function (not pure) while in the
      derrived class it's declared as pure.
      b92e5f9c
  30. 30 Sep, 2016 1 commit
  31. 28 Sep, 2016 1 commit
  32. 21 Sep, 2016 1 commit
  33. 16 Sep, 2016 1 commit
  34. 09 Sep, 2016 3 commits
  35. 05 Sep, 2016 1 commit
    • Dmitry Kazakov's avatar
      Sequence numbers for paint devices and cache filtered source in Colorize Mask · cac26598
      Dmitry Kazakov authored
      1) Implement KisPaintDevice::sequenceNumber() which basically lets
         us know when the device has changed
      
      2) Implement caching of the filtered paint device in KisColorizeMask.
         Now we can check for the sequence number and reuse the cache in
         case it didn't change.
      
      3) Implement automatic selection of the mask composite op depending on
         the number of transparent pixels in the parent layer.
      
      Ref T372
      cac26598