Merge remote-tracking branch 'OFW/astra/3934-alarm-improvements' into dev

This commit is contained in:
MX
2025-02-25 02:06:05 +03:00
6 changed files with 92 additions and 3 deletions

View File

@@ -249,7 +249,7 @@ static void gui_redraw(Gui* gui) {
canvas_reset(gui->canvas);
if(gui->lockdown) {
if(gui_is_lockdown(gui)) {
gui_redraw_desktop(gui);
bool need_attention =
(gui_view_port_find_enabled(gui->layers[GuiLayerWindow]) != 0 ||
@@ -299,7 +299,7 @@ static void gui_input(Gui* gui, InputEvent* input_event) {
ViewPort* view_port = NULL;
if(gui->lockdown) {
if(gui_is_lockdown(gui)) {
view_port = gui_view_port_find_enabled(gui->layers[GuiLayerDesktop]);
} else {
view_port = gui_view_port_find_enabled(gui->layers[GuiLayerFullscreen]);
@@ -495,6 +495,23 @@ void gui_set_lockdown(Gui* gui, bool lockdown) {
gui_update(gui);
}
void gui_set_lockdown_inhibit(Gui* gui, bool inhibit) {
furi_check(gui);
gui_lock(gui);
gui->lockdown_inhibit = inhibit;
gui_unlock(gui);
// Request redraw
gui_update(gui);
}
bool gui_is_lockdown(const Gui* gui) {
furi_check(gui);
return gui->lockdown && !gui->lockdown_inhibit;
}
Canvas* gui_direct_draw_acquire(Gui* gui) {
furi_check(gui);

View File

@@ -110,6 +110,23 @@ size_t gui_get_framebuffer_size(const Gui* gui);
*/
void gui_set_lockdown(Gui* gui, bool lockdown);
/** Inhibit lockdown mode
*
* Lockdown mode can be inhibited by calling this function with inhibit set to true.
* This is used to show information even when flipper is locked.
*
* @param gui Gui instance
* @param inhibit true to inhibit lockdown mode
*/
void gui_set_lockdown_inhibit(Gui* gui, bool inhibit);
/** Check if Gui is in lockdown mode
*
* @param gui Gui instance
* @return bool true if Gui is in lockdown mode
*/
bool gui_is_lockdown(const Gui* gui);
/** Acquire Direct Draw lock and get Canvas instance
*
* This method return Canvas instance for use in monopoly mode. Direct draw lock

View File

@@ -51,6 +51,7 @@ struct Gui {
// Layers and Canvas
bool lockdown;
bool lockdown_inhibit;
bool direct_draw;
ViewPortArray_t layers[GuiLayerMAX];
Canvas* canvas;