mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	Merge branch 'reduce_main_loop' into integration
This commit is contained in:
		| @@ -234,10 +234,12 @@ void HOT Scheduler::call() { | ||||
|     // The outer check is done without a lock for performance. If the queue | ||||
|     // appears non-empty, we lock and process an item. We don't need to check | ||||
|     // empty() again inside the lock because only this thread can remove items. | ||||
|     this->lock_.lock(); | ||||
|     auto item = std::move(this->defer_queue_.front()); | ||||
|     this->defer_queue_.pop_front(); | ||||
|     this->lock_.unlock(); | ||||
|     std::unique_ptr<SchedulerItem> item; | ||||
|     { | ||||
|       LockGuard lock(this->lock_); | ||||
|       item = std::move(this->defer_queue_.front()); | ||||
|       this->defer_queue_.pop_front(); | ||||
|     } | ||||
|  | ||||
|     // Execute callback without holding lock to prevent deadlocks | ||||
|     // if the callback tries to call defer() again | ||||
|   | ||||
| @@ -143,6 +143,7 @@ class Scheduler { | ||||
|   // Common implementation for cancel operations | ||||
|   bool cancel_item_common_(Component *component, bool is_static_string, const void *name_ptr, SchedulerItem::Type type); | ||||
|  | ||||
|  private: | ||||
|   bool cancel_item_(Component *component, const std::string &name, SchedulerItem::Type type); | ||||
|   bool cancel_item_(Component *component, const char *name, SchedulerItem::Type type); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user