3package org.qtproject.qt.android;
5import java.util.concurrent.ConcurrentLinkedQueue;
6import java.util.concurrent.atomic.AtomicInteger;
9class BackgroundActionsTracker {
11 private int m_maxActions = -1;
12 private final ConcurrentLinkedQueue<Runnable> m_backgroundActionsQueue =
new ConcurrentLinkedQueue<>();
13 private final AtomicInteger m_actionsCount =
new AtomicInteger(0);
15 public void setMaxAllowedActions(
int maxActions) {
16 m_maxActions = maxActions;
19 public void enqueue(Runnable action) {
20 if (m_maxActions == 0 || action ==
null)
23 if (m_maxActions > 0 && m_actionsCount.get() >= m_maxActions) {
25 m_backgroundActionsQueue.poll();
26 m_actionsCount.decrementAndGet();
28 m_backgroundActionsQueue.offer(action);
29 m_actionsCount.incrementAndGet();
32 public void processActions() {
34 while ((action = m_backgroundActionsQueue.poll()) !=
null) {
35 m_actionsCount.decrementAndGet();
36 QtNative.runAction(action);
40 public int getActionsCount() {
41 return m_actionsCount.get();