diff options
-rw-r--r-- | plugins/mbm/mm-broadband-modem-mbm.c | 3 | ||||
-rw-r--r-- | src/mm-port-serial-at.c | 1 | ||||
-rw-r--r-- | src/mm-port-serial-qcdm.c | 1 | ||||
-rw-r--r-- | src/mm-port-serial.c | 8 | ||||
-rw-r--r-- | src/mm-port-serial.h | 1 |
5 files changed, 12 insertions, 2 deletions
diff --git a/plugins/mbm/mm-broadband-modem-mbm.c b/plugins/mbm/mm-broadband-modem-mbm.c index 06bc9ac2..a4b89fd4 100644 --- a/plugins/mbm/mm-broadband-modem-mbm.c +++ b/plugins/mbm/mm-broadband-modem-mbm.c @@ -1262,7 +1262,8 @@ gps_enabled_ready (MMBaseModem *self, mm_port_serial_command (MM_PORT_SERIAL (gps_port), buf, 3, - FALSE, + FALSE, /* never cached */ + FALSE, /* always queued last */ NULL, NULL, NULL); diff --git a/src/mm-port-serial-at.c b/src/mm-port-serial-at.c index fef910e5..e51f73a5 100644 --- a/src/mm-port-serial-at.c +++ b/src/mm-port-serial-at.c @@ -427,6 +427,7 @@ mm_port_serial_at_command (MMPortSerialAt *self, buf, timeout_seconds, allow_cached, + FALSE, /* always queued last */ cancellable, (GAsyncReadyCallback)serial_command_ready, simple); diff --git a/src/mm-port-serial-qcdm.c b/src/mm-port-serial-qcdm.c index 4d26e398..ec1833f5 100644 --- a/src/mm-port-serial-qcdm.c +++ b/src/mm-port-serial-qcdm.c @@ -193,6 +193,7 @@ mm_port_serial_qcdm_command (MMPortSerialQcdm *self, command, timeout_seconds, FALSE, /* never cached */ + FALSE, /* always queued last */ cancellable, (GAsyncReadyCallback)serial_command_ready, task); diff --git a/src/mm-port-serial.c b/src/mm-port-serial.c index d739313b..4067979c 100644 --- a/src/mm-port-serial.c +++ b/src/mm-port-serial.c @@ -163,6 +163,7 @@ mm_port_serial_command (MMPortSerial *self, GByteArray *command, guint32 timeout_seconds, gboolean allow_cached, + gboolean run_next, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) @@ -203,7 +204,12 @@ mm_port_serial_command (MMPortSerial *self, if (!allow_cached) port_serial_set_cached_reply (self, ctx->command, NULL); - g_queue_push_tail (self->priv->queue, ctx); + /* If requested to run next, push to the head of the queue so that it really is + * the next one sent */ + if (run_next) + g_queue_push_head (self->priv->queue, ctx); + else + g_queue_push_tail (self->priv->queue, ctx); if (g_queue_get_length (self->priv->queue) == 1) port_serial_schedule_queue_process (self, 0); diff --git a/src/mm-port-serial.h b/src/mm-port-serial.h index bac79b44..b30bad77 100644 --- a/src/mm-port-serial.h +++ b/src/mm-port-serial.h @@ -144,6 +144,7 @@ void mm_port_serial_command (MMPortSerial *self, GByteArray *command, guint32 timeout_seconds, gboolean allow_cached, + gboolean run_next, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); |