238 Commits (f8df60a9e661b0ed8311a1125d176fd9e18df9ec)

Author SHA1 Message Date
  Andrew Belt 872aa0397d No need for engineBarrier to be a HybridBarrier since yield() is not called. 2 months ago
  Andrew Belt 617f6ddafd Refactor all Barrier implementations. Explicitly use appropriate memory ordering everywhere. Use __yield() on ARM64. 2 months ago
  Andrew Belt ad30d3a5c2 Move English strings to translation file. 5 months ago
  Andrew Belt 2995ed74ff When launching engine worker threads, inherit main thread's scheduling policy and priority instead of setting manually. 6 months ago
  Andrew Belt 3ed1e2c373 Set EngineWorker thread priority on Windows. 7 months ago
  Andrew Belt 420dd84a8a Use pthread API instead of C++ threads for EngineWorker. 7 months ago
  Andrew Belt f659b0432e Global random state no longer needs to be initialized for each Engine thread. 7 months ago
  Andrew Belt 42ff27175d Engine: Sort `cables` by (inputModule, inputId) tuple. Iterate `cables` by groups of inputs instead of map of vectors. Use non-stacked input cable stepping algorithm if input is not stacked. 1 year ago
  Andrew Belt fc64b13fe8 Clear engine before instantiating modules and before locking in Engine::fromJson(). Fixes ParamHandles from being removed immediately after instantiated modules add them. 1 year ago
  Andrew Belt b04beb9680 Dispatch ExpanderChangeEvent when removing modules. 1 year ago
  Andrew Belt 3464eabb4d Don't assert that a similar cable exists in Engine::addCable() since Engine handles it fine. App code should enforce it. 1 year ago
  Andrew Belt 8f092af042 Fix Engine::removeCable() not updating inputCablesCache. 1 year ago
  Andrew Belt 9314d7a527 Assert that similar cable does not exist in Engine::addCable() 1 year ago
  Andrew Belt c4a5c1016c Allow multiple Cables per Input in Engine. Cache list of Cables connected to each Input. 1 year ago
  Andrew Belt 840e184d7e Rename system::initCpuFlags() to system::resetFpuFlags(). Implement it on ARM64. 1 year ago
  Andrew Belt 20eafc98ff No need to save/restore CPU flags in Engine::stepBlock() anymore. 1 year ago
  Andrew Belt e2a4a6209d Add system::initCpuFlags(). Call it by all new threads. 1 year ago
  Andrew Belt 123da6cd83 Initialize CPU flags for Engine on ARM64. 1 year ago
  Andrew Belt bb8f70c04e When loading a patch or autosave, if modules are unavailable, prompt user to close Rack and view them on the VCV Library. 1 year ago
  Andrew Belt ac92bacd55 Zero input port values when disconnected, but not outputs. 1 year ago
  Andrew Belt e6744e5c3e Don't lock inside Engine::fromJson() until all modules are instantiated. Fix recursive lock when calling getModule(). 1 year ago
  Andrew Belt fb531c5a66 Make engine step modules first, then step cables in Engine::stepFrame(). 1 year ago
  Andrew Belt e67be6b3dd Make Engine::fromJson() lock in entire method, so modules and cables aren't added on different engine frames. Make Cable::fromJson() call non-locking Engine methods. 1 year ago
  Andrew Belt d70372535a Add Engine::addModule_NoLock() and addCable_NoLock(). 1 year ago
  Andrew Belt d62adc6226 Don't zero port values when disconnected. Refactor Engine by removing Engine_updateConnected(). 1 year ago
  Andrew Belt 613f926c35 Change `side` argument from bool to uint8_t in Module::getExpander() and Module::ExpanderChangeEvent. 1 year ago
  Andrew Belt 4a904d4950 Rename ParamQuantity::set/getDirectValue() to set/getImmediateValue(). 2 years ago
  Andrew Belt cdaea345d3 Make ParamQuantity::set/getValue() set/get the target value of engine smoothing instead of the value directly. Add ParamQuantity::set/getDirectValue(). Deprecate ParamQuantity::set/getSmoothValue(). 2 years ago
  Andrew Belt 4905496eed Fix all memory leaks caused by json_array_append() and json_object_set(). 2 years ago
  Andrew Belt 6eaf11ed7a Remove Engine::setFrame(). Guarantee that Engine frame only increases by 1 with no jumps. 2 years ago
  Andrew Belt c12f690786 Remove "v" from all version messages. 2 years ago
  Andrew Belt 08cd572d51 Allow building on ARM64. Only Mac tested, and deps not tested. 2 years ago
  Andrew Belt 8e7acf9b74 Log all calls to Model::createModule() and createModuleWidget(). 3 years ago
  Andrew Belt e0a78e0a27 Use odd prime number for port frame divider so plug lights get a more diverse statistical sample of voltages. 3 years ago
  Andrew Belt e88c39c426 Rename ReadWriteMutex to SharedMutex. Use shared/exclusive terminology instead of read/write. 3 years ago
  Andrew Belt eb9a476105 Move ReadWriteMutex from Engine.cpp to new mutex.hpp header. 3 years ago
  Andrew Belt ffe340f4b2 Use %lld with long long type instead of PRId64 for printf. 3 years ago
  Andrew Belt a98256c6f4 Dispatch Module::SampleRateChange event when the Module is added to the engine. 3 years ago
  Andrew Belt 0bdebebfae Make Engine_updateExpander() non-locking. 3 years ago
  Andrew Belt d7aa204bc7 Copy patch storage dir when cloning individual module. 3 years ago
  Andrew Belt 7bd26deefc Don't display negative meter measurements. 3 years ago
  Andrew Belt d017010925 Subtract call time of system::getTime() itself when measuring Module::process() for meter. 3 years ago
  Andrew Belt 985b996d76 Use much faster system::getTime() implementation on Mac. 3 years ago
  Andrew Belt 0fd6d8a858 Fix deadlock in MIDI Map dataFromJson() and onReset() by creating a few Engine::*_NoLock() methods and calling them. Make Engine::updateParamHandle() write-lock instead of read-lock. 3 years ago
  Andrew Belt 08e1f9a954 Add port name and "Duplicate/create new cable" to port context menu. 3 years ago
  Andrew Belt 1f0e27749e Allow SwitchQuantity first index to start at value other than 0. 3 years ago
  Andrew Belt 4567cc4220 Master audio module (the module that clocks Engine) makes more sense. 3 years ago
  Andrew Belt 95ed0bb5c5 Fix module paste key command. Fix crash when deleting module selection. 3 years ago
  Andrew Belt f1635cd96b Add Module::jsonStripIds(). 3 years ago
  Andrew Belt 90d395ae8b Add Quantity::toScaled() and fromScaled(). Clean up Quantity and ParamQuantity. 3 years ago