This project is mirrored from Pull mirroring updated .
  1. 25 Mar, 2020 3 commits
  2. 24 Mar, 2020 2 commits
  3. 20 Mar, 2020 3 commits
  4. 16 Mar, 2020 1 commit
    • Danny Hindson's avatar
      Further work on applying cmake GenerateExportHeader · a8c3109c
      Danny Hindson authored
      Apply change to insert export macros into class definition using cmake GenerateExportHeader
      feature to 3 more projects: API, Crystal and CurveFitting
      Have replaced DllExport with the cmake macro except in these places:
      a) class templates - the definitions of class template member functions need to be in the
      same unit as the declaration so dllimport gives a compilation error in the client code
      (C2491 in VS) eg SingleValueParameter, SingleValueParameterParser
      b) headers which are in a project but aren't included by any .cpp units in the project
      eg IBackgroundFunction.h, ICatalogInfoService.h. In these cases I've removed the DLLExport
      attribute completely
      For the API target there were a couple of special cases\extras:
      API has some conditional use of the extern keyword to control instantiation of template
      classes. This has been inserted into the automatically created dllconfig.h using a cmake
      switch that allows some custom content to be appended to the end of the file. Few of the
      targets require this so I've added a boolean parameter to the wrapper function to handle
      I also had to add explicit include directories to PythonInterfaceCore where it imports an
      API target header (in the unit ExtractWorkspace.h) without having API as a dependency
  5. 13 Mar, 2020 3 commits
    • David Fairbrother's avatar
      Re #26703 Replace deprecated API with tbb:global_control · fa503553
      David Fairbrother authored
      Replaces the deprecated scheduler_init with global_control. This should
      future proof us, and completely avoids all the threading issues we were
      seeing previously.
      The TBB_PREVIEW_GLOBAL_CONTROL macro is required until TBB 2019U4, or 11
      internally. So for simplicity we will make platforms using an older
      version of TBB (RHEL7 and Ubuntu at writing) switch to scheduler init
    • David Fairbrother's avatar
      Re #26703 Fix TBB Threading issue · 42793d09
      David Fairbrother authored
      Fixes the following assertion thrown by TBB:
      	Attempt to terminate non-local scheduler instance
      This took a significant amount of time to track down due to a number of
      factors. If your looking for a quick fix; set your
      tbb::task_scheduler_init to use thread local storage.
      This is caused by using Python multi-processing (in our case for the
      system tests). The process will spawn correctly (Windows), however
      Python will helpfully create seperate thread(s). I assume to observe. In
      this case the task_scheduler_init handle would then belong to one of
      these threads, as the act of importing our Python module would init the
      framework and TBB implicitly.
      When the tests run and TBBs scheduling is required it will "sign_on" in
      tbb's governor.cpp to handle scheduling. This works because the
      scheduler_init handle
      is process wide. However internally they then use thread local storage
      (TLS) for tracking the scheduler.
      As the main process goes to destruct it assumes that we must have
      a scheduler instance, since at process level we have done the init.
      But we cannot see any schedulers since they belong to a different
      thread. We have been getting away with this as the TLS returns NULL
      which effectively nops the destruction. But the assert correctly points
      out were getting this wrong.
      Marking each handle to the scheduler as thread local effectively ties
      the destruction of the thread to its init status. For most threads this
      effectively means we create a unique_ptr which isn't used. But for our
      main threads and weird edge case worker threads it keeps the thread
      state consistent.
      We've used a unique_ptr since we have an API which allows us to change
      the number of threads TBB can spin up. However, anyone else facing this
      issue would probably be fine with a thread local object allocated on the
    • Hahn, Steven's avatar
      cpp-check · 9cb86f78
      Hahn, Steven authored
      Signed-off-by: Hahn, Steven's avatarSteven Hahn <>
  6. 11 Mar, 2020 1 commit
  7. 10 Mar, 2020 5 commits
  8. 06 Mar, 2020 6 commits
  9. 05 Mar, 2020 1 commit
    • Danny Hindson's avatar
      Fix problems with setting YErr columns on table workspace · 77b9c037
      Danny Hindson authored
      This change fixes a problem in Workbench when setting columns to YErr
      Previously this only worked if all Y columns had an associated YErr column. If that
      wasn't the case then the associations between Y and YErr cols got mixed up
      I have saved the link between the YErr and Y column into the C++ table workspace
      object via changes to ITableWorkspace and the Column class
      I've also modified the model\view\presenter for the table workspace to set and get
      the link via the ITableWorkspace interface
      The code in has been modified to remove the _add function because
      the logic required for adding x, y and yerr was sufficiently different that trying
      to push them through a common _add function was obscuring the code
      Finally I've removed the labelindex from the ErrorColumn object in the python code
      because it can be worked out on the fly (and I didn't want to have to save this also
      into the C++ table workspace in addition to the linked column index)
      As part of the test updates I have removed the test
      because we do require the ability to add a yerr column before the corresponding y column
      The model gets refreshed whenever the C++ table workspace is updated (eg when the type of a column
      is updated) as part of a replace_workspace call. The model __init__ function builds up the column
      set left to right and a user may have set up a Y err column which is to the left of the corresponding
      Y column.
  10. 28 Feb, 2020 1 commit
    • David Fairbrother's avatar
      Re #28119 Append bad index to out of range exception · 4e871df4
      David Fairbrother authored
      Updates the IndexType to have a new method to convert to a string, this
      reduction in strict type safety could mean developers could abuse
      SpectrumIndex -> String conversions. However, it enables us to print a
      string representation of an index, such as if we need to say index x is
      out of range.
      Previously, the at() access on the IndexProperty map would throw with an
      invalid key message. This is useless for anyone who is trying to Mask a
      range of specra (such as 500), as you have to guess if the min / max or
      a middle value was bad.
  11. 31 Jan, 2020 4 commits
    • Nick Draper's avatar
      clang formatting for this pr · d4dc5ed9
      Nick Draper authored
    • Nick Draper's avatar
      Algorithm Progress details fills with all algorithms on creation · 570c00d9
      Nick Draper authored
      Previously an algorithm only appeared when a progress message came in
      re #27077
    • Nick Draper's avatar
      Reslove MonitorData not showing in the workbench algorithm details box · 55ad2798
      Nick Draper authored
      This was due to:
      1. Too long a default UpdateEvery default
      2. Too infrequest progress updates from MonitorLiveData
      3. The Algorithm Details box not adding an algorithm until it sends a progress update
      4. The StartLiveData custom Dialog not showing the default for UpdateEvery
      1. Decreased the default UpdateEvery from 60 to 30 seconds
      2. Change the default timeout for FakeISISHistongramDAE from 30 to 60s
      3. improved the progress logging for MonitorLivedata to update more frequently with an idle counter as well.
      4. Changed the tie function used in custom algorithm dialogs to set the placeholder text for line edits
      5. Changed the log level for user cancelling of algorithms from Error to warning so it does not trigger the notification service
      6. Changed the log message for user cancellation from Terminated to cancelled to reduce confusion
      re #27077
    • Phil Colebrooke's avatar
  12. 30 Jan, 2020 2 commits
  13. 23 Jan, 2020 2 commits
  14. 21 Jan, 2020 2 commits
  15. 16 Jan, 2020 2 commits
  16. 09 Jan, 2020 1 commit
  17. 12 Dec, 2019 1 commit