[Fl-3147] Remove ValueMutex (#2467)
* Move keypad_test to furi_mutex * Move text_box_test to furi_mutex * Move snake_game to furi_mutex * Remove ValueMutex completely * Snake Game: simplify code and fix PVS warning * F18: sync API symbols Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
		| @@ -53,15 +53,17 @@ static void (*text_box_test_render[])(Canvas* canvas) = { | ||||
|  | ||||
| typedef struct { | ||||
|     uint32_t idx; | ||||
|     FuriMutex* mutex; | ||||
| } TextBoxTestState; | ||||
|  | ||||
| static void text_box_test_render_callback(Canvas* canvas, void* ctx) { | ||||
|     TextBoxTestState* state = acquire_mutex((ValueMutex*)ctx, 25); | ||||
|     TextBoxTestState* state = ctx; | ||||
|     furi_mutex_acquire(state->mutex, FuriWaitForever); | ||||
|     canvas_clear(canvas); | ||||
|  | ||||
|     text_box_test_render[state->idx](canvas); | ||||
|  | ||||
|     release_mutex((ValueMutex*)ctx, state); | ||||
|     furi_mutex_release(state->mutex); | ||||
| } | ||||
|  | ||||
| static void text_box_test_input_callback(InputEvent* input_event, void* ctx) { | ||||
| @@ -74,17 +76,17 @@ int32_t text_box_test_app(void* p) { | ||||
|     FuriMessageQueue* event_queue = furi_message_queue_alloc(32, sizeof(InputEvent)); | ||||
|     furi_check(event_queue); | ||||
|  | ||||
|     TextBoxTestState _state = {.idx = 0}; | ||||
|     TextBoxTestState state = {.idx = 0, .mutex = NULL}; | ||||
|     state.mutex = furi_mutex_alloc(FuriMutexTypeNormal); | ||||
|  | ||||
|     ValueMutex state_mutex; | ||||
|     if(!init_mutex(&state_mutex, &_state, sizeof(TextBoxTestState))) { | ||||
|     if(!state.mutex) { | ||||
|         FURI_LOG_E(TAG, "Cannot create mutex"); | ||||
|         return 0; | ||||
|     } | ||||
|  | ||||
|     ViewPort* view_port = view_port_alloc(); | ||||
|  | ||||
|     view_port_draw_callback_set(view_port, text_box_test_render_callback, &state_mutex); | ||||
|     view_port_draw_callback_set(view_port, text_box_test_render_callback, &state); | ||||
|     view_port_input_callback_set(view_port, text_box_test_input_callback, event_queue); | ||||
|  | ||||
|     // Open GUI and register view_port | ||||
| @@ -94,24 +96,24 @@ int32_t text_box_test_app(void* p) { | ||||
|     uint32_t test_renders_num = COUNT_OF(text_box_test_render); | ||||
|     InputEvent event; | ||||
|     while(furi_message_queue_get(event_queue, &event, FuriWaitForever) == FuriStatusOk) { | ||||
|         TextBoxTestState* state = acquire_mutex_block(&state_mutex); | ||||
|         furi_mutex_acquire(state.mutex, FuriWaitForever); | ||||
|  | ||||
|         if(event.type == InputTypeShort) { | ||||
|             if(event.key == InputKeyRight) { | ||||
|                 if(state->idx < test_renders_num - 1) { | ||||
|                     state->idx++; | ||||
|                 if(state.idx < test_renders_num - 1) { | ||||
|                     state.idx++; | ||||
|                 } | ||||
|             } else if(event.key == InputKeyLeft) { | ||||
|                 if(state->idx > 0) { | ||||
|                     state->idx--; | ||||
|                 if(state.idx > 0) { | ||||
|                     state.idx--; | ||||
|                 } | ||||
|             } else if(event.key == InputKeyBack) { | ||||
|                 release_mutex(&state_mutex, state); | ||||
|                 furi_mutex_release(state.mutex); | ||||
|                 break; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         release_mutex(&state_mutex, state); | ||||
|         furi_mutex_release(state.mutex); | ||||
|         view_port_update(view_port); | ||||
|     } | ||||
|  | ||||
| @@ -119,7 +121,7 @@ int32_t text_box_test_app(void* p) { | ||||
|     gui_remove_view_port(gui, view_port); | ||||
|     view_port_free(view_port); | ||||
|     furi_message_queue_free(event_queue); | ||||
|     delete_mutex(&state_mutex); | ||||
|     furi_mutex_free(state.mutex); | ||||
|  | ||||
|     furi_record_close(RECORD_GUI); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user