Age | Commit message (Collapse) | Author |
|
|
|
|
|
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.
|
|
Tracking rarely deadlocked when saving mappings.
Investigating it further also shown how a wrong bundle was used for
Accela's splines.
|
|
|
|
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.
|
|
The check for ini modified happens after ini modified
flag is already cleared. Was breaking spline.
|
|
|
|
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
|
|
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
|
|
|
|
|
|
|
|
|
|
Update usages.
|
|
|
|
|
|
|
|
This is complicated by Qt's rejection of template classes.
Also move some stuff to slots where makes sense.
|
|
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.
|
|
thread_local is expensive.
|
|
Due to fucking AT&T vs BSD suit copyright defaults to all rights
reserved. Fuck Berne Convention as well.
|
|
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.
|
|
|
|
|
|
They're run from the UI thread so can even be interactive.
|
|
|
|
|
|
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>.
|
|
|
|
|
|
|
|
They're now not cached in the singleton. Operations like "reload", "save", and
connector stuff short-circuit to prevent anything done with them
|
|
|
|
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.
|
|
- adjust usages
- add support for QList signals and metatype
|