Operations on the database are not cancellable, so we need to ensure any
critical code (such as database migration) has completed.
Otherwise we risk leaving the database in a locked state (or worse):
WARNING **: 09:24:53.428: Failed to determine schema version: sqlite3_prepare_v2 failed: database is locked: CREATE TABLE IF NOT EXISTS _gom_version (version INTEGER);
It has been reported that the BM818 sometimes unexpectedly
changes the call state from "active" back to "ringing-in"
(as reported by ModemManager) shortly after accepting an incoming call.
ModemManager[734]: <info> [modem1/call1] user request to accept call
ModemManager[734]: <info> [modem1/call1] call is accepted
ModemManager[734]: <info> [modem1/call1] call state changed: ringing-in -> active (accepted)
ModemManager[734]: <info> [modem1/call1] call state changed: active -> ringing-in (unknown)
This leads to a failed assertion and program termination.
Instead of crashing raising a critical warning is more appropriate
and may allow the user to pick up the call after all.
Closes: #547
self->best_match is never NULL:
The test suite used to wrap calls_contacts_provder_new() to always return
NULL which in turn caused the best match to be NULL.
This was done to avoid warnings raised by libfolks
about missing the primary store (eds).
This is no longer necessary as the environment now tells folks which
backend to use.
self->best_match is never NULL:
The test suite used to wrap calls_contacts_provder_new() to always return
NULL which in turn caused the best match to be NULL.
This was done to avoid warnings raised by libfolks
about missing the primary store (eds).
This is no longer necessary as the environment now tells folks which
backend to use.
self->best_match is never NULL:
The test suite used to wrap calls_contacts_provder_new() to always return
NULL which in turn caused the best match to be NULL.
This was done to avoid warnings raised by libfolks
about missing the primary store (eds).
This is no longer necessary as the environment now tells folks which
backend to use.
The windows need to be removed from the GtkApplication because they are
holding references to the application which prevents proper cleanup.
Fixes: #508
As libfeedback uses GDbusProxy under the hood which defaults to timing
out after 25 seconds there is no need to handle timeouts explicitly.
Furthermore 1 second seems to not always be enough time to get a
response which leads to endless ringing.
Fixes#543
There is no need to enable or disable actions until the popover
is actually presented.
This also get's rid of having to be notified of changes to the
"can-add-contact" property which led to a segfault as the signal handler
was not properly cleared.
Fixes: #535
As the "can-add-contact" property is now always checked,
the menu item will be properly shown.
Fixes: #485
_GNU_SOURCE is needed for strcasestr().
The macro should be defined before including any headers. This broke
recently because glib.h seems to include string.h now.
Using rescan allows use to give a priority to search paths. So this way
plugins in `CALLS_PLUGIN_DIR` take precedence over plugins we ship.
This also makes sure that the plugin test searches in the same location
as CallsManager.
When the only feedback of an event is unavailable on a system (e.g. no
vibration motor or LED) the "feedback-ended" signal is emitted
immediately and the end reason will be LFB_EVENT_END_REASON_NOT_FOUND.
In this case we need to change the target state, so that our logic does
not end up retriggering the event infinitely.