Home | History | Annotate | Download | only in sequence_manager

Lines Matching refs:main_thread_only

138     if (main_thread_only().time_domain)
139 main_thread_only().time_domain->UnregisterQueue(this);
144 main_thread_only().on_task_completed_handler = OnTaskCompletedHandler();
146 main_thread_only().time_domain = nullptr;
149 main_thread_only().sequence_manager = nullptr;
152 main_thread_only().on_next_wake_up_changed_callback =
170 delayed_incoming_queue.swap(main_thread_only().delayed_incoming_queue);
173 std::move(main_thread_only().immediate_work_queue);
175 std::move(main_thread_only().delayed_work_queue);
220 if (!main_thread_only().sequence_manager)
224 main_thread_only().sequence_manager->GetNextSequenceNumber();
226 TimeTicks time_domain_now = main_thread_only().time_domain->Now();
254 main_thread_only().sequence_manager->WillQueueTask(&pending_task);
255 main_thread_only().delayed_incoming_queue.push(std::move(pending_task));
281 TimeTicks time_domain_now = main_thread_only().time_domain->Now();
288 main_thread_only().delayed_incoming_queue.push(std::move(pending_task));
319 (!IsQueueEnabled() || main_thread_only().current_fence);
330 if (!main_thread_only().immediate_work_queue->Empty())
333 main_thread_only().immediate_work_queue->ReloadEmptyImmediateQueue();
347 if (main_thread_only().delayed_fence) {
349 if (task.delayed_run_time >= main_thread_only().delayed_fence.value()) {
350 main_thread_only().delayed_fence = nullopt;
351 DCHECK(!main_thread_only().current_fence);
352 main_thread_only().current_fence = task.enqueue_order();
355 main_thread_only().immediate_work_queue->InsertFenceSilently(
356 main_thread_only().current_fence);
357 main_thread_only().delayed_work_queue->InsertFenceSilently(
358 main_thread_only().current_fence);
366 if (!main_thread_only().delayed_work_queue->Empty() ||
367 !main_thread_only().delayed_incoming_queue.empty() ||
368 !main_thread_only().immediate_work_queue->Empty()) {
378 task_count += main_thread_only().delayed_work_queue->Size();
379 task_count += main_thread_only().delayed_incoming_queue.size();
380 task_count += main_thread_only().immediate_work_queue->Size();
389 if (!main_thread_only().delayed_work_queue->Empty() ||
390 !main_thread_only().immediate_work_queue->Empty()) {
396 if (!main_thread_only().delayed_incoming_queue.empty() &&
397 main_thread_only().delayed_incoming_queue.top().delayed_run_time <=
398 main_thread_only().time_domain->CreateLazyNow().Now()) {
410 if (main_thread_only().delayed_incoming_queue.empty() || !IsQueueEnabled())
413 return main_thread_only().delayed_incoming_queue.top().delayed_wake_up();
426 while (!main_thread_only().delayed_incoming_queue.empty()) {
428 const_cast<Task&>(main_thread_only().delayed_incoming_queue.top());
430 main_thread_only().delayed_incoming_queue.pop();
437 main_thread_only().sequence_manager->GetNextSequenceNumber());
438 main_thread_only().delayed_work_queue->Push(std::move(task));
439 main_thread_only().delayed_incoming_queue.pop();
445 if (IsQueueEnabled() || !main_thread_only().current_fence) {
446 main_thread_only().sequence_manager->MaybeScheduleImmediateWork(
469 main_thread_only().immediate_work_queue->Size() +
470 main_thread_only().delayed_work_queue->Size() +
471 main_thread_only().delayed_incoming_queue.size());
475 if (!main_thread_only().sequence_manager || priority == GetQueuePriority())
477 main_thread_only()
478 .sequence_manager->main_thread_only()
494 if (!main_thread_only().sequence_manager) {
499 DCHECK(main_thread_only().time_domain);
500 DCHECK(main_thread_only().delayed_work_queue);
501 DCHECK(main_thread_only().immediate_work_queue);
509 main_thread_only().time_domain->GetName());
513 main_thread_only().delayed_incoming_queue.size());
515 main_thread_only().immediate_work_queue->Size());
517 main_thread_only().delayed_work_queue->Size());
519 if (!main_thread_only().delayed_incoming_queue.empty()) {
521 (main_thread_only().delayed_incoming_queue.top().delayed_run_time -
522 main_thread_only().time_domain->CreateLazyNow().Now());
526 if (main_thread_only().current_fence)
527 state->SetInteger("current_fence", main_thread_only().current_fence);
528 if (main_thread_only().delayed_fence) {
531 (main_thread_only().delayed_fence.value() - now).InSecondsF());
544 main_thread_only().delayed_work_queue->AsValueInto(now, state);
547 main_thread_only().immediate_work_queue->AsValueInto(now, state);
550 QueueAsValueInto(main_thread_only().delayed_incoming_queue, now, state);
558 main_thread_only().task_observers.AddObserver(task_observer);
563 main_thread_only().task_observers.RemoveObserver(task_observer);
568 if (main_thread_only().blame_context)
569 main_thread_only().blame_context->Enter();
570 for (auto& observer : main_thread_only().task_observers)
576 for (auto& observer : main_thread_only().task_observers)
578 if (main_thread_only().blame_context)
579 main_thread_only().blame_context->Leave();
594 if (time_domain == main_thread_only().time_domain)
600 main_thread_only().time_domain->UnregisterQueue(this);
601 main_thread_only().time_domain = time_domain;
608 main_thread_only().scheduled_wake_up = nullopt;
614 return main_thread_only().time_domain;
621 main_thread_only().blame_context = blame_context;
625 if (!main_thread_only().sequence_manager)
629 main_thread_only().delayed_fence = nullopt;
631 EnqueueOrder previous_fence = main_thread_only().current_fence;
634 ? main_thread_only().sequence_manager->GetNextSequenceNumber()
639 main_thread_only().current_fence = current_fence;
641 main_thread_only().immediate_work_queue->InsertFence(current_fence);
643 main_thread_only().delayed_work_queue->InsertFence(current_fence);
655 main_thread_only().sequence_manager->MaybeScheduleImmediateWork(FROM_HERE);
662 main_thread_only().delayed_fence = time;
666 if (!main_thread_only().sequence_manager)
669 EnqueueOrder previous_fence = main_thread_only().current_fence;
670 main_thread_only().current_fence = EnqueueOrder::none();
671 main_thread_only().delayed_fence = nullopt;
673 bool task_unblocked = main_thread_only().immediate_work_queue->RemoveFence();
674 task_unblocked |= main_thread_only().delayed_work_queue->RemoveFence();
685 main_thread_only().sequence_manager->MaybeScheduleImmediateWork(FROM_HERE);
690 if (!main_thread_only().current_fence)
693 if (!main_thread_only().immediate_work_queue->BlockedByFence() ||
694 !main_thread_only().delayed_work_queue->BlockedByFence()) {
703 main_thread_only().current_fence;
707 if (main_thread_only().delayed_fence &&
708 main_thread_only().time_domain->Now() >
709 main_thread_only().delayed_fence.value()) {
712 return !!main_thread_only().current_fence;
719 if (!main_thread_only().current_fence)
722 return enqueue_order < main_thread_only().current_fence;
790 if (!main_thread_only().time_domain)
795 main_thread_only().is_enabled_refcount--;
796 DCHECK_GE(main_thread_only().is_enabled_refcount, 0);
799 main_thread_only().voter_refcount--;
800 DCHECK_GE(main_thread_only().voter_refcount, 0);
809 return (main_thread_only().is_enabled_refcount ==
810 main_thread_only().voter_refcount) &&
811 main_thread_only().is_enabled_for_test;
817 main_thread_only().is_enabled_refcount++;
818 DCHECK_LE(main_thread_only().is_enabled_refcount,
819 main_thread_only().voter_refcount);
821 main_thread_only().is_enabled_refcount--;
822 DCHECK_GE(main_thread_only().is_enabled_refcount, 0);
831 if (!main_thread_only().sequence_manager)
834 LazyNow lazy_now = main_thread_only().time_domain->CreateLazyNow();
839 !main_thread_only().on_next_wake_up_changed_callback.is_null()) {
841 main_thread_only().on_next_wake_up_changed_callback.Run(TimeTicks());
846 main_thread_only()
847 .sequence_manager->main_thread_only()
850 main_thread_only()
851 .sequence_manager->main_thread_only()
859 main_thread_only().voter_refcount++;
860 main_thread_only().is_enabled_refcount++;
865 if (main_thread_only().delayed_incoming_queue.empty())
870 while (!main_thread_only().delayed_incoming_queue.empty()) {
871 if (!main_thread_only().delayed_incoming_queue.top().task.IsCancelled()) {
873 const_cast<Task&>(main_thread_only().delayed_incoming_queue.top())));
875 main_thread_only().delayed_incoming_queue.pop();
878 main_thread_only().delayed_incoming_queue = std::move(remaining_tasks);
898 main_thread_only().delayed_work_queue->PushNonNestableTaskToFront(
901 main_thread_only().immediate_work_queue->PushNonNestableTaskToFront(
910 DCHECK(main_thread_only().on_next_wake_up_changed_callback.is_null())
917 main_thread_only().on_next_wake_up_changed_callback = callback;
927 if (main_thread_only().scheduled_wake_up == wake_up)
929 main_thread_only().scheduled_wake_up = wake_up;
932 !main_thread_only().on_next_wake_up_changed_callback.is_null() &&
934 main_thread_only().on_next_wake_up_changed_callback.Run(wake_up->time);
937 main_thread_only().time_domain->SetNextWakeUpForQueue(this, wake_up,
943 LazyNow lazy_now = main_thread_only().time_domain->CreateLazyNow();
949 if (!main_thread_only().delayed_work_queue->Empty() ||
950 !main_thread_only().immediate_work_queue->Empty()) {
961 main_thread_only().on_task_started_handler = std::move(handler);
966 if (!main_thread_only().on_task_started_handler.is_null())
967 main_thread_only().on_task_started_handler.Run(task, task_timing);
972 main_thread_only().on_task_completed_handler = std::move(handler);
977 if (!main_thread_only().on_task_completed_handler.is_null())
978 main_thread_only().on_task_completed_handler.Run(task, task_timing);
982 return !main_thread_only().on_task_started_handler.is_null() ||
983 !main_thread_only().on_task_completed_handler.is_null();
992 return main_thread_only().sequence_manager->GetWeakPtr();
997 return main_thread_only().sequence_manager->GetGracefulQueueShutdownHelper();
1001 main_thread_only().is_enabled_for_test = enabled;
1006 if (!main_thread_only().delayed_fence)
1008 if (main_thread_only().delayed_fence.value() > now)
1011 main_thread_only().delayed_fence = nullopt;