mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-11 06:09:08 -07:00
Merge remote-tracking branch 'OFW/dev' into dev
This commit is contained in:
@@ -21,14 +21,14 @@ static void archive_tick_event_callback(void* context) {
|
||||
ArchiveApp* archive_alloc(void) {
|
||||
ArchiveApp* archive = malloc(sizeof(ArchiveApp));
|
||||
|
||||
archive->gui = furi_record_open(RECORD_GUI);
|
||||
archive->loader = furi_record_open(RECORD_LOADER);
|
||||
archive->fav_move_str = furi_string_alloc();
|
||||
archive->dst_path = furi_string_alloc();
|
||||
|
||||
archive->scene_manager = scene_manager_alloc(&archive_scene_handlers, archive);
|
||||
archive->view_dispatcher = view_dispatcher_alloc();
|
||||
|
||||
archive->gui = furi_record_open(RECORD_GUI);
|
||||
|
||||
ViewDispatcher* view_dispatcher = archive->view_dispatcher;
|
||||
view_dispatcher_enable_queue(view_dispatcher);
|
||||
view_dispatcher_set_event_callback_context(view_dispatcher, archive);
|
||||
@@ -88,6 +88,8 @@ void archive_free(ArchiveApp* archive) {
|
||||
furi_record_close(RECORD_DIALOGS);
|
||||
archive->dialogs = NULL;
|
||||
|
||||
furi_record_close(RECORD_LOADER);
|
||||
archive->loader = NULL;
|
||||
furi_record_close(RECORD_GUI);
|
||||
archive->gui = NULL;
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ typedef enum {
|
||||
|
||||
struct ArchiveApp {
|
||||
Gui* gui;
|
||||
Loader* loader;
|
||||
ViewDispatcher* view_dispatcher;
|
||||
ViewStack* view_stack;
|
||||
SceneManager* scene_manager;
|
||||
|
||||
@@ -88,10 +88,8 @@ void archive_scene_browser_on_enter(void* context) {
|
||||
archive_update_focus(browser, archive->text_store);
|
||||
view_dispatcher_switch_to_view(archive->view_dispatcher, ArchiveViewBrowser);
|
||||
|
||||
Loader* loader = furi_record_open(RECORD_LOADER);
|
||||
archive->loader_stop_subscription =
|
||||
furi_pubsub_subscribe(loader_get_pubsub(loader), archive_loader_callback, archive);
|
||||
furi_record_close(RECORD_LOADER);
|
||||
archive->loader_stop_subscription = furi_pubsub_subscribe(
|
||||
loader_get_pubsub(archive->loader), archive_loader_callback, archive);
|
||||
|
||||
uint32_t state = scene_manager_get_scene_state(archive->scene_manager, ArchiveAppSceneBrowser);
|
||||
|
||||
@@ -302,10 +300,11 @@ bool archive_scene_browser_on_event(void* context, SceneManagerEvent event) {
|
||||
if(!archive_is_home(browser)) {
|
||||
archive_leave_dir(browser);
|
||||
} else {
|
||||
Loader* loader = furi_record_open(RECORD_LOADER);
|
||||
furi_pubsub_unsubscribe(
|
||||
loader_get_pubsub(loader), archive->loader_stop_subscription);
|
||||
furi_record_close(RECORD_LOADER);
|
||||
if(archive->loader_stop_subscription) {
|
||||
furi_pubsub_unsubscribe(
|
||||
loader_get_pubsub(archive->loader), archive->loader_stop_subscription);
|
||||
archive->loader_stop_subscription = NULL;
|
||||
}
|
||||
|
||||
view_dispatcher_stop(archive->view_dispatcher);
|
||||
}
|
||||
@@ -321,8 +320,9 @@ bool archive_scene_browser_on_event(void* context, SceneManagerEvent event) {
|
||||
|
||||
void archive_scene_browser_on_exit(void* context) {
|
||||
ArchiveApp* archive = (ArchiveApp*)context;
|
||||
|
||||
Loader* loader = furi_record_open(RECORD_LOADER);
|
||||
furi_pubsub_unsubscribe(loader_get_pubsub(loader), archive->loader_stop_subscription);
|
||||
furi_record_close(RECORD_LOADER);
|
||||
if(archive->loader_stop_subscription) {
|
||||
furi_pubsub_unsubscribe(
|
||||
loader_get_pubsub(archive->loader), archive->loader_stop_subscription);
|
||||
archive->loader_stop_subscription = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user