MX 2 лет назад
Родитель
Сommit
8e800a3af8
1 измененных файлов с 67 добавлено и 66 удалено
  1. 67 66
      qrcode_app.c

+ 67 - 66
qrcode_app.c

@@ -546,81 +546,82 @@ int32_t qrcode_app(void* p) {
         }
 
         InputEvent input;
-        while(furi_message_queue_get(instance->input_queue, &input, FuriWaitForever) ==
-              FuriStatusOk) {
-            furi_check(furi_mutex_acquire(instance->mutex, FuriWaitForever) == FuriStatusOk);
-
-            if(input.key == InputKeyBack) {
-                if(instance->message) {
-                    furi_string_free(instance->message);
-                    instance->message = NULL;
-                }
-                if(instance->qrcode) {
-                    qrcode_free(instance->qrcode);
-                    instance->qrcode = NULL;
-                }
-                instance->loading = true;
-                instance->edit = false;
-                furi_mutex_release(instance->mutex);
-                break;
-            } else if(input.key == InputKeyRight) {
-                instance->show_stats = true;
-            } else if(input.key == InputKeyLeft) {
-                instance->show_stats = false;
-            } else if(instance->show_stats && !instance->loading && instance->qrcode) {
-                if(input.key == InputKeyUp) {
-                    if(!instance->edit) {
-                        instance->selected_idx = MAX(0, instance->selected_idx - 1);
-                    } else {
-                        if(instance->selected_idx == 0 &&
-                           instance->set_version < MAX_QRCODE_VERSION) {
-                            instance->set_version++;
-                        } else if(instance->selected_idx == 1) {
-                            uint8_t max_ecc = instance->set_version == instance->min_version ?
-                                                  instance->max_ecc_at_min_version :
-                                                  ECC_HIGH;
-                            if(instance->set_ecc < max_ecc) {
-                                instance->set_ecc++;
-                            }
-                        }
+        while(1) {
+            if(furi_message_queue_get(instance->input_queue, &input, 100) == FuriStatusOk) {
+                furi_check(furi_mutex_acquire(instance->mutex, FuriWaitForever) == FuriStatusOk);
+
+                if(input.key == InputKeyBack) {
+                    if(instance->message) {
+                        furi_string_free(instance->message);
+                        instance->message = NULL;
                     }
-                } else if(input.key == InputKeyDown) {
-                    if(!instance->edit) {
-                        instance->selected_idx = MIN(1, instance->selected_idx + 1);
-                    } else {
-                        if(instance->selected_idx == 0 &&
-                           instance->set_version > instance->min_version) {
-                            instance->set_version--;
-                            if(instance->set_version == instance->min_version) {
-                                instance->set_ecc =
-                                    MAX(instance->set_ecc, instance->max_ecc_at_min_version);
+                    if(instance->qrcode) {
+                        qrcode_free(instance->qrcode);
+                        instance->qrcode = NULL;
+                    }
+                    instance->loading = true;
+                    instance->edit = false;
+                    furi_mutex_release(instance->mutex);
+                    break;
+                } else if(input.key == InputKeyRight) {
+                    instance->show_stats = true;
+                } else if(input.key == InputKeyLeft) {
+                    instance->show_stats = false;
+                } else if(instance->show_stats && !instance->loading && instance->qrcode) {
+                    if(input.key == InputKeyUp) {
+                        if(!instance->edit) {
+                            instance->selected_idx = MAX(0, instance->selected_idx - 1);
+                        } else {
+                            if(instance->selected_idx == 0 &&
+                               instance->set_version < MAX_QRCODE_VERSION) {
+                                instance->set_version++;
+                            } else if(instance->selected_idx == 1) {
+                                uint8_t max_ecc = instance->set_version == instance->min_version ?
+                                                      instance->max_ecc_at_min_version :
+                                                      ECC_HIGH;
+                                if(instance->set_ecc < max_ecc) {
+                                    instance->set_ecc++;
+                                }
                             }
-                        } else if(instance->selected_idx == 1 && instance->set_ecc > 0) {
-                            instance->set_ecc--;
                         }
-                    }
-                } else if(input.key == InputKeyOk) {
-                    if(instance->edit && (instance->set_version != instance->qrcode->version ||
-                                          instance->set_ecc != instance->qrcode->ecc)) {
-                        QRCode* qrcode = instance->qrcode;
-                        instance->loading = true;
-
-                        if(rebuild_qrcode(instance, instance->set_version, instance->set_ecc)) {
-                            qrcode_free(qrcode);
+                    } else if(input.key == InputKeyDown) {
+                        if(!instance->edit) {
+                            instance->selected_idx = MIN(1, instance->selected_idx + 1);
                         } else {
-                            FURI_LOG_E(TAG, "Could not rebuild qrcode");
-                            instance->qrcode = qrcode;
-                            instance->set_version = qrcode->version;
-                            instance->set_ecc = qrcode->ecc;
+                            if(instance->selected_idx == 0 &&
+                               instance->set_version > instance->min_version) {
+                                instance->set_version--;
+                                if(instance->set_version == instance->min_version) {
+                                    instance->set_ecc =
+                                        MAX(instance->set_ecc, instance->max_ecc_at_min_version);
+                                }
+                            } else if(instance->selected_idx == 1 && instance->set_ecc > 0) {
+                                instance->set_ecc--;
+                            }
                         }
+                    } else if(input.key == InputKeyOk) {
+                        if(instance->edit && (instance->set_version != instance->qrcode->version ||
+                                              instance->set_ecc != instance->qrcode->ecc)) {
+                            QRCode* qrcode = instance->qrcode;
+                            instance->loading = true;
+
+                            if(rebuild_qrcode(instance, instance->set_version, instance->set_ecc)) {
+                                qrcode_free(qrcode);
+                            } else {
+                                FURI_LOG_E(TAG, "Could not rebuild qrcode");
+                                instance->qrcode = qrcode;
+                                instance->set_version = qrcode->version;
+                                instance->set_ecc = qrcode->ecc;
+                            }
 
-                        instance->loading = false;
+                            instance->loading = false;
+                        }
+                        instance->edit = !instance->edit;
                     }
-                    instance->edit = !instance->edit;
                 }
-            }
 
-            furi_mutex_release(instance->mutex);
+                furi_mutex_release(instance->mutex);
+            }
             view_port_update(instance->view_port);
         }