summaryrefslogtreecommitdiffhomepage
path: root/options/bundle.cpp
AgeCommit message (Collapse)Author
2019-02-09options, opentrack: fix migrations with tie_settingStanislaw Halik
Migrations only ran after `tie_setting()' handlers were done, clobbering the settings that were about to be migrated. Applying QSignalBlocker to few comboboxes isn't enough as it affects everything touched by `tie_setting()'. Split reload and notify phases in the options system.
2019-01-16spline: fix deadlock, logic errorStanislaw Halik
Tracking rarely deadlocked when saving mappings. Investigating it further also shown how a wrong bundle was used for Accela's splines.
2019-01-16cruft onlyStanislaw Halik
2018-12-24remove const correctness violationsStanislaw Halik
This is possibly related to a livelock where several threads do const removal in their respective code paths. Use the `mutable' specifier for the mutexes and spline's cached data. Now using the `mutable' specifier, get rid of <optional> in compat/mutex.
2018-10-25options/bundle: fix signals not firingStanislaw Halik
The check for ini modified happens after ini modified flag is already cleared. Was breaking spline.
2018-10-25cleanups onlyStanislaw Halik
2018-10-05options: don't use typeindex w/ lambdasStanislaw Halik
Rename traits' functions to be more explicit. Most of the changes are pretty old and I can't read them at this time, sorry. Adjust usages. Issue: #825 Reported-by: @DanielKinsman
2018-07-08options: fix 2 issuesStanislaw Halik
1. Calling valueChanged didn't invoke machinery in value<t>, only base_value aka value_. There's a fast path in value<t>::type() despite the pessimization. 2. Split global scope stuff into options::globals from the options::globals stuff 3. Adjust usages
2018-07-02nothing importantStanislaw Halik
2018-06-26options/base-value: rename to `value_'Stanislaw Halik
2018-01-31gui: clean up a bitStanislaw Halik
2017-06-18minor tweaks onlyStanislaw Halik
2017-05-10options: don't create QSettings all the timeStanislaw Halik
Update usages.
2017-05-10options/bundle: skip needless compare-twiceStanislaw Halik
2017-03-28start renaming internal macros as OPENTRACK_* to OTR_*Stanislaw Halik
2017-03-25options/bundle: appease qt creatorStanislaw Halik
2017-03-21options/{bundle,connector,value}: allow setting to default valuesStanislaw Halik
This is complicated by Qt's rejection of template classes. Also move some stuff to slots where makes sense.
2017-02-27options/fix bundle refcount handlingStanislaw Halik
We rolled up our own refcount while using shared_ptr at the same time. Remove all rolled-up logic and rely on shared_ptr's custom deleter to do the cleanups. This greatly simplifies the code here. Unfortunately, _fini ordering makes Qt crash after the app object runs out of scope: gui/main.cpp: QApplication app(argc, argv); Both things considered, use _exit(2) on Unix to avoid running static destructors.
2016-12-08options: get element with call operatorStanislaw Halik
thread_local is expensive.
2016-09-18add missing copyright termsStanislaw Halik
Due to fucking AT&T vs BSD suit copyright defaults to all rights reserved. Fuck Berne Convention as well.
2016-09-16gui/main-window: exit program when config not writableStanislaw Halik
Note, it opens the config in read-write mode to check if it's writable. This might present a race condition when config is saved. However, we're expecting all config saving to be done in the user interface thread. Add a check for it however.
2016-09-09options/bundle: remove rest of logspamStanislaw Halik
2016-09-09options/{bundle,group}: don't create QSettings all the timeStanislaw Halik
2016-09-09add support for migrationsStanislaw Halik
They're run from the UI thread so can even be interactive.
2016-09-09options/bundle: whitespace onlyStanislaw Halik
2016-09-09options/bundle: lessen logspamStanislaw Halik
2016-08-25options: use non-generic comparison for bundle modification checkStanislaw Halik
The generic QVariant comparison works badly for QList<QPointF>. Create a comparator between two QVariants for base_value in value<tp> ctor, using QVariant::value<tp> which returns right results once it's converted to tp. If a value was registered for a name in a bundle, use that comparator as the comparator for that name. In case conflicting value types were registered always use generic comparison for that name. std::type_index needs to be used here since value<t> can be instantiated in different modules (libraries), resulting in different value for the comparator function pointer. Move group::operator== to bundle type to avoid circular include for connector.h. Also use element_type more consistently in value<tp>.
2016-08-23options/bundle: simplify mutex const-droppingStanislaw Halik
2016-08-23options/bundle: don't fire signals in reload() with no unsaved changesStanislaw Halik
2016-08-23options/bundle: emit changed() whenever any part of a bundle changesStanislaw Halik
2016-08-23options/bundle: treat bundles with empty names speciallyStanislaw Halik
They're now not cached in the singleton. Operations like "reload", "save", and connector stuff short-circuit to prevent anything done with them
2016-08-18options: factor out connector out of bundleStanislaw Halik
2016-08-17options: support deferred writes when saving bundlesStanislaw Halik
The mapping window has 13 bundles total in use. Setting them all can take up to a large fraction of a second on some windows filesystems. Do a single config write instead.
2016-08-17move options framework into its own libraryStanislaw Halik
- adjust usages - add support for QList signals and metatype