1. 14 Jan, 2012 2 commits
    • Dmitry Kazakov's avatar
      Partly fix preview of some filter · 6a85ac08
      Dmitry Kazakov authored
      The temporary device should have a transaction. If we do not create
      a temporary device (which means src==dst), then this is a caller's
      responsibility to create a transaction (this behavior is disputable).
      Still, some filters have wrong preview, because they expect the whole
      image to process
    • Cyrille Berger Skott's avatar
      introduce a gtl giant lock to make sure to avoid threading issues. · b029f548
      Cyrille Berger Skott authored
      Possible fix for those bugs:
      CCBUG: 289729 (could not reproduce before)
      CCBUG: 289279 (could reproduce but now seems to work, waiting for confirmation)
  2. 12 Jan, 2012 1 commit
  3. 08 Jan, 2012 2 commits
    • Dmitry Kazakov's avatar
    • Dmitry Kazakov's avatar
      Finished porting KisShapeController to two-stage signals processing · 2b15f28e
      Dmitry Kazakov authored
      Yay! Now it doesn't depend on multithreading of the KisImage at all!
      The updates of the internal shapes representation are done in two stage
      way like it is done for all the signals of KisCanvas2. First connection
      is direct and fetches the data from the image and the second is automatic
      and executed in the context of UI thread.
      I introduced four new signals for the image:
          void sigNodeAddedAsync(KisNodeSP node);
          void sigNodeMovedAsync(KisNodeSP node);
          void sigRemoveNodeAsync(KisNodeSP node);
          void sigLayersChangedAsync();
      They are supposed to supersede old 7 signals in the nearest future.
      This is the biggest part of refactoring needed for closing bug 290708.
      Now the only thing left is to port KisNodeModel to use dummies stored
      inside KisShapesController.
  4. 06 Jan, 2012 1 commit
  5. 05 Jan, 2012 4 commits
    • Dmitry Kazakov's avatar
      Made all the interactive painting tools threading-friendly · 1a736f4a
      Dmitry Kazakov authored
      Ported most of the painting tools to strokes, they use FreehandStroke
      for executing their jobs:
      - KisToolLine
      - KisToolRectangle
      - KisToolEllipse
      - KisToolPolygon
      - KisToolPolyline
      - KisToolStar
      - KisToolPath
      Wrapped three complex tools into macros to block the UI when some
      action is in porgress:
      - KisToolTransform
      - KisToolFill
      - KisToolGradient
    • Dmitry Kazakov's avatar
      Fixed threading bugs in KisSelectionManager and covered it with unittests · fc151df2
      Dmitry Kazakov authored
      The problem is our transactions declare their work only in the very
      end of processing. It means that there are no guarantees about exclusivity
      of their work. So now I added beginMacro()/endMacro() calls to declare
      their work and to lock the scheduler.
    • Boudewijn Rempt's avatar
      warning--: unused parameter · 2591c867
      Boudewijn Rempt authored
    • Dmitry Kazakov's avatar
      Fixed a bug in oblige child mechanism · 4822324b
      Dmitry Kazakov authored
      After making the global selection a mask root layer may have a mask,
      but still can ask its only child layer to share the projection.
      There was another reason for the bug: the assert in createThumbnail
      didn't take into account that the device may be empty.
  6. 04 Jan, 2012 2 commits
  7. 03 Jan, 2012 1 commit
  8. 02 Jan, 2012 10 commits
    • Dmitry Kazakov's avatar
      Removed blocking signals from the KisImageSignalRouter · ef487ff7
      Dmitry Kazakov authored
      Currently, there is a quite annoying limitation: we cannot add/remove/move
      layers from the context of the scheduler's thread. We can do it only from
      the UI thread. It means that the actions, which work with nodes' position
      should work using legacy undo adapter.
      Here is an explanation of the problem
      (from KisImageSignalRouter::emitAboutToAddANode):
      Some of the users of our signals rely on the fact that the
      signals are emitted synchronously from the same thread. Such
      users are KisNodeModel, KisShapeController. They request the
      data of the signal right from the node data, so these signals cannot
      be emitted asynchronously. We cannot use BlockingQueued
      connections here, because the we'll get a deadlock when UI
      will decide to wait for scheduler to finish it's job.
      That is why we explicitly check that no nodes are added,
      removed or moved from the context of the scheduler thread.
      Currently we have no other way than to assert in such a case.
      So all the node modifications should be done using legacy
      undo adapter, in the context of the UI thread.
    • Dmitry Kazakov's avatar
      Fix compilation · 047e3889
      Dmitry Kazakov authored
    • Boudewijn Rempt's avatar
    • Boudewijn Rempt's avatar
      assignImageProfile should not create commands · 16f6b255
      Boudewijn Rempt authored
      As the apidox already made clear (but it's even clearer now) this method
      is for setting the profile on an image during creation or loading. At
      that time, undo commands are not needed and can be dangerous because
      they lead to a projection update.
    • Boudewijn Rempt's avatar
    • Boudewijn Rempt's avatar
      Make the global selection a mask on the rootlayer · 7c3ef1aa
      Boudewijn Rempt authored
      This way, the selection will be cropped, resized etc. together with
      the other nodes. It will also make it possible in the future to use the
      paint/fill/gradient/filter tools on the selection.
    • Boudewijn Rempt's avatar
      Make the global selection manipulations methods private · 0b4c60d9
      Boudewijn Rempt authored
      These may only be used by the relevant command classes (and one
    • Boudewijn Rempt's avatar
      rename two enums · f3903d8a
      Boudewijn Rempt authored
      Enums used to start in Krita with a lower-case enum prefix. That we
      stopped doing, but we should always initcap the enum's name since an
      enum is a type.
    • Boudewijn Rempt's avatar
      Use the selection's projection outline · c6556056
      Boudewijn Rempt authored
      Instead of having two sepeparate outline objects, one for the shape
      and one for the pixel selection, use the projection to determine the
      outline of the complete selection.
    • Boudewijn Rempt's avatar
      Remove unused method · 363c30bd
      Boudewijn Rempt authored
  9. 30 Dec, 2011 3 commits
  10. 29 Dec, 2011 6 commits
  11. 28 Dec, 2011 5 commits
  12. 27 Dec, 2011 3 commits