aanper 5 лет назад
Родитель
Сommit
78e016412e
4 измененных файлов с 27 добавлено и 33 удалено
  1. 10 12
      applications/gui/gui.c
  2. 6 6
      applications/gui/gui_event.c
  3. 7 7
      applications/gui/gui_event.h
  4. 4 8
      applications/gui/widget.c

+ 10 - 12
applications/gui/gui.c

@@ -73,10 +73,10 @@ Widget* gui_widget_find_enabled(WidgetArray_t array) {
 }
 
 bool gui_redraw_fs(Gui* gui) {
-    canvas_frame_set(gui->canvas, 0, 0, 128, 64);
+    canvas_frame_set(gui->canvas_api, 0, 0, 128, 64);
     Widget* widget = gui_widget_find_enabled(gui->widgets_fs);
     if(widget) {
-        widget_draw(widget, gui->canvas);
+        widget_draw(widget, gui->canvas_api);
         return true;
     } else {
         return false;
@@ -84,21 +84,21 @@ bool gui_redraw_fs(Gui* gui) {
 }
 
 void gui_redraw_status_bar(Gui* gui) {
-    canvas_frame_set(gui->canvas, 0, 0, 128, 64);
+    canvas_frame_set(gui->canvas_api, 0, 0, 128, 64);
     Widget* widget = gui_widget_find_enabled(gui->widgets_status_bar);
-    if(widget) widget_draw(widget, gui->canvas);
+    if(widget) widget_draw(widget, gui->canvas_api);
 }
 
 void gui_redraw_normal(Gui* gui) {
-    canvas_frame_set(gui->canvas, 0, 9, 128, 55);
+    canvas_frame_set(gui->canvas_api, 0, 9, 128, 55);
     Widget* widget = gui_widget_find_enabled(gui->widgets);
-    if(widget) widget_draw(widget, gui->canvas);
+    if(widget) widget_draw(widget, gui->canvas_api);
 }
 
 void gui_redraw_dialogs(Gui* gui) {
-    canvas_frame_set(gui->canvas, 10, 20, 118, 44);
+    canvas_frame_set(gui->canvas_api, 10, 20, 118, 44);
     Widget* widget = gui_widget_find_enabled(gui->widgets_dialog);
-    if(widget) widget_draw(widget, gui->canvas);
+    if(widget) widget_draw(widget, gui->canvas_api);
 }
 
 void gui_redraw(Gui* gui) {
@@ -110,8 +110,7 @@ void gui_redraw(Gui* gui) {
     }
     gui_redraw_dialogs(gui);
 
-    // canvas_commit(gui->canvas);
-    // redraw u8g2
+    canvas_commit(gui->canvas);
 }
 
 void gui_input(Gui* gui, InputEvent* input_event) {
@@ -139,8 +138,7 @@ Gui* gui_alloc() {
 
     // Drawing canvas api
 
-    gui->canvas_api = 
-    canvas_api_init();
+    gui->canvas_api = canvas_api_init();
 
     return gui;
 }

+ 6 - 6
applications/gui/gui_event.c

@@ -15,8 +15,8 @@ void gui_event_input_events_callback(const void* value, size_t size, void* ctx)
     assert(ctx);
     GuiEvent* gui_event = ctx;
 
-    GUIMessage message;
-    message.type = GUIMessageTypeInput;
+    GuiMessage message;
+    message.type = GuiMessageTypeInput;
     message.input = *(InputEvent*)value;
 
     osMessageQueuePut(gui_event->mqueue, &message, 0, 0);
@@ -25,7 +25,7 @@ void gui_event_input_events_callback(const void* value, size_t size, void* ctx)
 GuiEvent* gui_event_alloc() {
     GuiEvent* gui_event = furi_alloc(sizeof(GuiEvent));
     // Allocate message que
-    gui_event->mqueue = osMessageQueueNew(GUI_EVENT_MQUEUE_SIZE, sizeof(GUIMessage), NULL);
+    gui_event->mqueue = osMessageQueueNew(GUI_EVENT_MQUEUE_SIZE, sizeof(GuiMessage), NULL);
     assert(gui_event->mqueue);
 
     // Input
@@ -57,15 +57,15 @@ void gui_event_unlock(GuiEvent* gui_event) {
     assert(osMutexRelease(gui_event->lock_mutex) == osOK);
 }
 
-void gui_event_messsage_send(GuiEvent* gui_event, GUIMessage* message) {
+void gui_event_messsage_send(GuiEvent* gui_event, GuiMessage* message) {
     assert(gui_event);
     assert(message);
     osMessageQueuePut(gui_event->mqueue, message, 0, 0);
 }
 
-GUIMessage gui_event_message_next(GuiEvent* gui_event) {
+GuiMessage gui_event_message_next(GuiEvent* gui_event) {
     assert(gui_event);
-    GUIMessage message;
+    GuiMessage message;
     gui_event_unlock(gui_event);
     while(osMessageQueueGet(gui_event->mqueue, &message, NULL, osWaitForever) != osOK) {
     };

+ 7 - 7
applications/gui/gui_event.h

@@ -4,15 +4,15 @@
 #include <input/input.h>
 
 typedef enum {
-    GUIMessageTypeRedraw = 0x00,
-    GUIMessageTypeInput = 0x01,
-} GUIMessageType;
+    GuiMessageTypeRedraw = 0x00,
+    GuiMessageTypeInput = 0x01,
+} GuiMessageType;
 
 typedef struct {
-    GUIMessageType type;
+    GuiMessageType type;
     InputEvent input;
     void* data;
-} GUIMessage;
+} GuiMessage;
 
 typedef struct GuiEvent GuiEvent;
 
@@ -24,6 +24,6 @@ void gui_event_lock(GuiEvent* gui_event);
 
 void gui_event_unlock(GuiEvent* gui_event);
 
-void gui_event_messsage_send(GuiEvent* gui_event, GUIMessage* message);
+void gui_event_messsage_send(GuiEvent* gui_event, GuiMessage* message);
 
-GUIMessage gui_event_message_next(GuiEvent* gui_event);
+GuiMessage gui_event_message_next(GuiEvent* gui_event);

+ 4 - 8
applications/gui/widget.c

@@ -56,23 +56,19 @@ void widget_update(Widget* widget) {
     if(widget->gui) gui_update(widget->gui);
 }
 
-void widget_gui_set(Widget* widget, GUI* gui) {
+void widget_gui_set(Widget* widget, Gui* gui) {
     assert(widget);
     assert(gui);
     widget->gui = gui;
 }
 
-void widget_draw(Widget* widget, ValueMutex* canvas_api_mutex) {
+void widget_draw(Widget* widget, CanvasApi* canvas_api) {
     assert(widget);
-    assert(canvas_api_mutex);
+    assert(canvas_api);
     assert(widget->gui);
 
     if(widget->draw_callback) {
-        CanvasApi* api = acquire_mutex_block(canvas_api_mutex); // TODO: timeout?
-        if(api != NULL) {
-            widget->draw_callback(api, widget->draw_callback_context);
-        }
-        release_mutex(canvas_api_mutex, api);
+            widget->draw_callback(canvas_api, widget->draw_callback_context);
     }
 }