Archive: dont start browser worker on favourites tab (#1628)
Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
		
							parent
							
								
									0a6d775fa7
								
							
						
					
					
						commit
						cfc0383b96
					
				| @ -77,14 +77,24 @@ static void archive_long_load_cb(void* context) { | |||||||
|         }); |         }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void archive_file_browser_set_callbacks(ArchiveBrowserView* browser) { | static void archive_file_browser_set_path( | ||||||
|  |     ArchiveBrowserView* browser, | ||||||
|  |     string_t path, | ||||||
|  |     const char* filter_ext, | ||||||
|  |     bool skip_assets) { | ||||||
|     furi_assert(browser); |     furi_assert(browser); | ||||||
| 
 |     if(!browser->worker_running) { | ||||||
|     file_browser_worker_set_callback_context(browser->worker, browser); |         browser->worker = file_browser_worker_alloc(path, filter_ext, skip_assets); | ||||||
|     file_browser_worker_set_folder_callback(browser->worker, archive_folder_open_cb); |         file_browser_worker_set_callback_context(browser->worker, browser); | ||||||
|     file_browser_worker_set_list_callback(browser->worker, archive_list_load_cb); |         file_browser_worker_set_folder_callback(browser->worker, archive_folder_open_cb); | ||||||
|     file_browser_worker_set_item_callback(browser->worker, archive_list_item_cb); |         file_browser_worker_set_list_callback(browser->worker, archive_list_load_cb); | ||||||
|     file_browser_worker_set_long_load_callback(browser->worker, archive_long_load_cb); |         file_browser_worker_set_item_callback(browser->worker, archive_list_item_cb); | ||||||
|  |         file_browser_worker_set_long_load_callback(browser->worker, archive_long_load_cb); | ||||||
|  |         browser->worker_running = true; | ||||||
|  |     } else { | ||||||
|  |         furi_assert(browser->worker); | ||||||
|  |         file_browser_worker_set_config(browser->worker, path, filter_ext, skip_assets); | ||||||
|  |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool archive_is_item_in_array(ArchiveBrowserViewModel* model, uint32_t idx) { | bool archive_is_item_in_array(ArchiveBrowserViewModel* model, uint32_t idx) { | ||||||
| @ -438,8 +448,8 @@ void archive_switch_tab(ArchiveBrowserView* browser, InputKey key) { | |||||||
|         tab = archive_get_tab(browser); |         tab = archive_get_tab(browser); | ||||||
|         if(archive_is_dir_exists(browser->path)) { |         if(archive_is_dir_exists(browser->path)) { | ||||||
|             bool skip_assets = (strcmp(archive_get_tab_ext(tab), "*") == 0) ? false : true; |             bool skip_assets = (strcmp(archive_get_tab_ext(tab), "*") == 0) ? false : true; | ||||||
|             file_browser_worker_set_config( |             archive_file_browser_set_path( | ||||||
|                 browser->worker, browser->path, archive_get_tab_ext(tab), skip_assets); |                 browser, browser->path, archive_get_tab_ext(tab), skip_assets); | ||||||
|             tab_empty = false; // Empty check will be performed later
 |             tab_empty = false; // Empty check will be performed later
 | ||||||
|         } else { |         } else { | ||||||
|             tab_empty = true; |             tab_empty = true; | ||||||
|  | |||||||
| @ -87,4 +87,3 @@ void archive_switch_tab(ArchiveBrowserView* browser, InputKey key); | |||||||
| void archive_enter_dir(ArchiveBrowserView* browser, string_t name); | void archive_enter_dir(ArchiveBrowserView* browser, string_t name); | ||||||
| void archive_leave_dir(ArchiveBrowserView* browser); | void archive_leave_dir(ArchiveBrowserView* browser); | ||||||
| void archive_refresh_dir(ArchiveBrowserView* browser); | void archive_refresh_dir(ArchiveBrowserView* browser); | ||||||
| void archive_file_browser_set_callbacks(ArchiveBrowserView* browser); |  | ||||||
|  | |||||||
| @ -370,18 +370,15 @@ ArchiveBrowserView* browser_alloc() { | |||||||
|             return true; |             return true; | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|     browser->worker = file_browser_worker_alloc(browser->path, "*", false); |  | ||||||
|     archive_file_browser_set_callbacks(browser); |  | ||||||
| 
 |  | ||||||
|     file_browser_worker_set_callback_context(browser->worker, browser); |  | ||||||
| 
 |  | ||||||
|     return browser; |     return browser; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void browser_free(ArchiveBrowserView* browser) { | void browser_free(ArchiveBrowserView* browser) { | ||||||
|     furi_assert(browser); |     furi_assert(browser); | ||||||
| 
 | 
 | ||||||
|     file_browser_worker_free(browser->worker); |     if(browser->worker_running) { | ||||||
|  |         file_browser_worker_free(browser->worker); | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     with_view_model( |     with_view_model( | ||||||
|         browser->view, (ArchiveBrowserViewModel * model) { |         browser->view, (ArchiveBrowserViewModel * model) { | ||||||
|  | |||||||
| @ -74,6 +74,7 @@ typedef enum { | |||||||
| struct ArchiveBrowserView { | struct ArchiveBrowserView { | ||||||
|     View* view; |     View* view; | ||||||
|     BrowserWorker* worker; |     BrowserWorker* worker; | ||||||
|  |     bool worker_running; | ||||||
|     ArchiveBrowserViewCallback callback; |     ArchiveBrowserViewCallback callback; | ||||||
|     void* context; |     void* context; | ||||||
|     string_t path; |     string_t path; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Nikolay Minaylov
						Nikolay Minaylov