Decouple apps to allow smaller builds. Loader deadlock fix and refactoring. (#929)
* Lib: always include rfal * Gui: remove screen_stream * Input: decouple from Cli * Loader: decouple from Cli * Desktop: ignore missing favorite app, decouple from Archive * Make: make Notification a Gui dependency * Make: embed debugging information into elfs * Loader: hide Plugins submenu when plugins ga arimasen * Applications: update on start hook usage * Loader: fix dead lock on menu rebuild with open rpc, new cli command. Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
This commit is contained in:
@@ -254,43 +254,6 @@ void gui_unlock(Gui* gui) {
|
||||
furi_check(osMutexRelease(gui->mutex) == osOK);
|
||||
}
|
||||
|
||||
void gui_cli_screen_stream_callback(uint8_t* data, size_t size, void* context) {
|
||||
furi_assert(data);
|
||||
furi_assert(size == 1024);
|
||||
furi_assert(context);
|
||||
|
||||
Gui* gui = context;
|
||||
const uint8_t magic[] = {0xF0, 0xE1, 0xD2, 0xC3};
|
||||
cli_write(gui->cli, magic, sizeof(magic));
|
||||
cli_write(gui->cli, data, size);
|
||||
}
|
||||
|
||||
void gui_cli_screen_stream(Cli* cli, string_t args, void* context) {
|
||||
furi_assert(context);
|
||||
Gui* gui = context;
|
||||
gui_set_framebuffer_callback(gui, gui_cli_screen_stream_callback, gui);
|
||||
gui_redraw(gui);
|
||||
|
||||
// Wait for control events
|
||||
while(true) {
|
||||
char c = cli_getc(gui->cli);
|
||||
if(c == CliSymbolAsciiEsc) {
|
||||
c = cli_getc(gui->cli);
|
||||
if(c == 'i') {
|
||||
InputEvent input_event;
|
||||
input_event.key = cli_getc(gui->cli);
|
||||
input_event.type = cli_getc(gui->cli);
|
||||
osMessageQueuePut(gui->input_queue, &input_event, 0, osWaitForever);
|
||||
osThreadFlagsSet(gui->thread, GUI_THREAD_FLAG_INPUT);
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
gui_set_framebuffer_callback(gui, NULL, NULL);
|
||||
}
|
||||
|
||||
void gui_add_view_port(Gui* gui, ViewPort* view_port, GuiLayer layer) {
|
||||
furi_assert(gui);
|
||||
furi_assert(view_port);
|
||||
@@ -401,6 +364,10 @@ void gui_set_framebuffer_callback(Gui* gui, GuiCanvasCommitCallback callback, vo
|
||||
gui->canvas_callback = callback;
|
||||
gui->canvas_callback_context = context;
|
||||
gui_unlock(gui);
|
||||
|
||||
if(callback != NULL) {
|
||||
gui_redraw(gui);
|
||||
}
|
||||
}
|
||||
|
||||
Gui* gui_alloc() {
|
||||
@@ -421,10 +388,6 @@ Gui* gui_alloc() {
|
||||
gui->input_events = furi_record_open("input_events");
|
||||
furi_check(gui->input_events);
|
||||
furi_pubsub_subscribe(gui->input_events, gui_input_events_callback, gui);
|
||||
// Cli
|
||||
gui->cli = furi_record_open("cli");
|
||||
cli_add_command(
|
||||
gui->cli, "screen_stream", CliCommandFlagParallelSafe, gui_cli_screen_stream, gui);
|
||||
|
||||
return gui;
|
||||
}
|
||||
|
@@ -11,7 +11,6 @@
|
||||
#include <m-array.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <cli/cli.h>
|
||||
#include "canvas.h"
|
||||
#include "canvas_i.h"
|
||||
#include "view_port.h"
|
||||
@@ -60,9 +59,6 @@ struct Gui {
|
||||
FuriPubSub* input_events;
|
||||
uint8_t ongoing_input;
|
||||
ViewPort* ongoing_input_view_port;
|
||||
|
||||
// Cli
|
||||
Cli* cli;
|
||||
};
|
||||
|
||||
ViewPort* gui_view_port_find_enabled(ViewPortArray_t array);
|
||||
@@ -78,7 +74,3 @@ void gui_input_events_callback(const void* value, void* ctx);
|
||||
void gui_lock(Gui* gui);
|
||||
|
||||
void gui_unlock(Gui* gui);
|
||||
|
||||
void gui_cli_screen_stream_callback(uint8_t* data, size_t size, void* context);
|
||||
|
||||
void gui_cli_screen_stream(Cli* cli, string_t args, void* context);
|
||||
|
Reference in New Issue
Block a user