1. 02 Apr, 2019 4 commits
  2. 01 Apr, 2019 1 commit
  3. 30 Mar, 2019 1 commit
  4. 29 Mar, 2019 1 commit
  5. 28 Mar, 2019 1 commit
    • Agata Cacko's avatar
      Disable assert on empty parent in Colorize Mask · 630ce858
      Agata Cacko authored
      Before this change, Colorize Mask asserted after flattening
      or merging with another layer when the image was smaller than 1024px
      wide and long. After this commit, it shouldn't happen.
      
      It was caused by setting the parent dirty just before the parent gets
      deleted. The request was linked to refreshing area outside the image
      boundaries; since Colorize Mask didn't and doesn't work outside of the
      image boundaries, it isn't necessary.
      
      NOTE: In case of providing support for Colorize Mask working outside of
      the canvas boundaries, the decision in this commit might need
      reevaluation (in case of a need to update the mask there).
      
      BUG:402494
      630ce858
  6. 27 Mar, 2019 2 commits
    • Alvin Wong's avatar
      Fix splash screen for some high DPI setup · 8f022ec3
      Alvin Wong authored
      8f022ec3
    • Dmitry Kazakov's avatar
      Add sanity checks to KisProjectionLeaf::Private::node · 44337c52
      Dmitry Kazakov authored
      It looks like one of the users managed to catch such a case,
      when the node has been deleted while the updates were still
      holding a pointer to it. I don't know how it was reproduced,
      and, technically, our system should not allow such cases.
      
      Therefore, this patch just converts the node pointer into a
      weak pointer and adds a sanity check assert into KisAsyncMerger.
      
      I hope we'll catch this assert one day and get better report
      about what triggered it.
      
      CCBUG:405879
      44337c52
  7. 26 Mar, 2019 5 commits
  8. 25 Mar, 2019 1 commit
  9. 23 Mar, 2019 2 commits
  10. 22 Mar, 2019 2 commits
    • Agata Cacko's avatar
      Fix Background Color change after flattening · ad1f2707
      Agata Cacko authored
      Before this commit if you flatten the image using
      Layer -> Flatten Image, the resulting image
      had canvas background color set to transparent black.
      Now the resulting image has the same canvas color
      as before the flattening.
      
      BUG:405230
      ad1f2707
    • Boudewijn Rempt's avatar
      Fix broken c-style casts · 193e2349
      Boudewijn Rempt authored
      You cannot cast something that doesn't inherit from KisTool to
      KisTool, but c-style casts don't know that.
      193e2349
  11. 21 Mar, 2019 6 commits
    • Boudewijn Rempt's avatar
      Shape layers: change the canvas compressor delay depending on image size · 861995e8
      Boudewijn Rempt authored
      This sort of keeps the best of both the fix for
      https://bugs.kde.org/show_bug.cgi?id=399363 and some responsiveness
      for smaller images.
      
      The real solution probably would be to render the vector shapes at
      the current zoom level, LoD-like (and only for the visible part,
      of course), but that's way out of scope for now. We might as well
      wish we could write our svg renderer without QPainter and with
      proper color management.
      
      CCBUG:399363
      CCBUG:405698
      861995e8
    • Dmitry Kazakov's avatar
      c7a921d1
    • Dmitry Kazakov's avatar
      Less warnings · a990a6d2
      Dmitry Kazakov authored
      a990a6d2
    • Dmitry Kazakov's avatar
      Fix race condition in the lockfree hash table's garbage collector · 96e8dce2
      Dmitry Kazakov authored
      This is the same problem that has been present in the lockfree
      stack until recently. We should check for m_rawPointerUsers when
      we already have a local copy of the free nodes list. Only in this
      case it guarantees that noone added elements between the check and
      the actual destruction.
      96e8dce2
    • Dmitry Kazakov's avatar
      Fix a race condition in KisLocklessStack · 64dc4d5b
      Dmitry Kazakov authored
      When recycling the objects after pop(), a race condition could happen.
      After the thread has successfully passed 'if (m_deleteBlockers == 1)'
      check, it could go to sleep. During its sleep some other threads could
      release more objects into m_freeNodes, which were still accessed by
      someone. It could lead to both: invalid access or even ABA problem
      (the latter, theoretically, could cause bug 405663).
      
      The patch fixes the problem by forcing the releasing thread to check
      if it is still the only owner of the freeNodes list. It atomically
      fetches the list of free nodes, and only after that checks if all its
      other users are dead. Since the list is stored in a local variable,
      it is guaranteed that noone modifies it during the check.
      
      BUG:405663
      64dc4d5b
    • Ashwin  Dhakaita's avatar
      Fix crash when using the transform tool on a colorize mask · 2b617387
      Ashwin Dhakaita authored
      This fixes a crash when the transform tool is selected while
      using a colorize mask in the layer stack with edit-key-strokes
      option set to OFF.
      
      Differential Revision:  https://phabricator.kde.org/D19906
      BUG: 404759
      2b617387
  12. 20 Mar, 2019 3 commits
  13. 19 Mar, 2019 6 commits
  14. 18 Mar, 2019 2 commits
  15. 17 Mar, 2019 3 commits
    • Dmitry Kazakov's avatar
      44cd9e8d
    • Dmitry Kazakov's avatar
      Fix race condition in projection cache in KisLayer · da26d46c
      Dmitry Kazakov authored
      When indirect painting is disabled (or a mask is removed) the layer
      becomes projection-free, that is, projection device should be recycled.
      The problem is that the projection may still be accessed by worker
      threads, therefore the actual cleaning of the devices should happen in
      an exclusive context.
      
      The patch adds a special exclusive spontaneous job, that does all the
      cleaning when all workers are guaranteed to be idle/paused.
      da26d46c
    • 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