iface-modem: don't run signal quality check if last update was less than 15s ago
This commit is contained in:
@@ -419,6 +419,20 @@ signal_quality_update_context_free (SignalQualityUpdateContext *ctx)
|
|||||||
g_free (ctx);
|
g_free (ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static time_t
|
||||||
|
get_last_signal_quality_update_time (MMIfaceModem *self)
|
||||||
|
{
|
||||||
|
SignalQualityUpdateContext *ctx;
|
||||||
|
|
||||||
|
if (G_UNLIKELY (!signal_quality_update_context_quark))
|
||||||
|
signal_quality_update_context_quark = (g_quark_from_static_string (
|
||||||
|
SIGNAL_QUALITY_UPDATE_CONTEXT_TAG));
|
||||||
|
|
||||||
|
ctx = g_object_get_qdata (G_OBJECT (self), signal_quality_update_context_quark);
|
||||||
|
|
||||||
|
return (ctx ? ctx->last_update : 0);
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
expire_signal_quality (MMIfaceModem *self)
|
expire_signal_quality (MMIfaceModem *self)
|
||||||
{
|
{
|
||||||
@@ -573,7 +587,10 @@ periodic_signal_quality_check (MMIfaceModem *self)
|
|||||||
|
|
||||||
ctx = g_object_get_qdata (G_OBJECT (self), signal_quality_check_context_quark);
|
ctx = g_object_get_qdata (G_OBJECT (self), signal_quality_check_context_quark);
|
||||||
|
|
||||||
if (!ctx->running) {
|
/* Only launch a new one if not one running already OR if the last one run
|
||||||
|
* was more than 15s ago. */
|
||||||
|
if (!ctx->running ||
|
||||||
|
(time (NULL) - get_last_signal_quality_update_time (self) > 15)) {
|
||||||
ctx->running = TRUE;
|
ctx->running = TRUE;
|
||||||
MM_IFACE_MODEM_GET_INTERFACE (self)->load_signal_quality (
|
MM_IFACE_MODEM_GET_INTERFACE (self)->load_signal_quality (
|
||||||
self,
|
self,
|
||||||
|
Reference in New Issue
Block a user