GUI: fix issue with gui update on view draw (#301)
This commit is contained in:
		
							parent
							
								
									6126d117a9
								
							
						
					
					
						commit
						34dbb2ea86
					
				| @ -93,14 +93,19 @@ void* view_get_model(View* view) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void view_commit_model(View* view) { | void view_commit_model(View* view) { | ||||||
|  |     furi_assert(view); | ||||||
|  |     view_unlock_model(view); | ||||||
|  |     if(view->dispatcher) { | ||||||
|  |         view_dispatcher_update(view->dispatcher, view); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void view_unlock_model(View* view) { | ||||||
|     furi_assert(view); |     furi_assert(view); | ||||||
|     if(view->model_type == ViewModelTypeLocking) { |     if(view->model_type == ViewModelTypeLocking) { | ||||||
|         ViewModelLocking* model = (ViewModelLocking*)(view->model); |         ViewModelLocking* model = (ViewModelLocking*)(view->model); | ||||||
|         furi_check(osMutexRelease(model->mutex) == osOK); |         furi_check(osMutexRelease(model->mutex) == osOK); | ||||||
|     } |     } | ||||||
|     if(view->dispatcher) { |  | ||||||
|         view_dispatcher_update(view->dispatcher, view); |  | ||||||
|     } |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void view_draw(View* view, Canvas* canvas) { | void view_draw(View* view, Canvas* canvas) { | ||||||
| @ -108,7 +113,7 @@ void view_draw(View* view, Canvas* canvas) { | |||||||
|     if(view->draw_callback) { |     if(view->draw_callback) { | ||||||
|         void* data = view_get_model(view); |         void* data = view_get_model(view); | ||||||
|         view->draw_callback(canvas, data); |         view->draw_callback(canvas, data); | ||||||
|         view_commit_model(view); |         view_unlock_model(view); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -23,6 +23,9 @@ struct View { | |||||||
| /* Set View dispatcher */ | /* Set View dispatcher */ | ||||||
| void view_set_dispatcher(View* view, ViewDispatcher* view_dispatcher); | void view_set_dispatcher(View* view, ViewDispatcher* view_dispatcher); | ||||||
| 
 | 
 | ||||||
|  | /* Unlock model */ | ||||||
|  | void view_unlock_model(View* view); | ||||||
|  | 
 | ||||||
| /* Draw Callback for View dispatcher */ | /* Draw Callback for View dispatcher */ | ||||||
| void view_draw(View* view, Canvas* canvas); | void view_draw(View* view, Canvas* canvas); | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 あく
						あく