42 bool processEvents(QEventLoop::ProcessEventsFlags
flags)
override;
48 QObject *
object)
override final;
49 bool unregisterTimer(
Qt::TimerId timerId)
override final;
50 bool unregisterTimers(
QObject *
object)
override final;
51 QList<TimerInfoV2> timersForObject(
QObject *
object)
const override final;
54 void interrupt()
override;
55 void wakeUp()
override;
57 static void runOnMainThread(std::function<
void(
void)> fn);
59 bool *selectForRead,
bool *selectForWrite,
bool *socketDisconnect);
61 static void registerStartupTask();
62 static void completeStarupTask();
63 static void callOnLoadedIfRequired();
64 virtual void onLoaded();
67 virtual bool processPostedEvents();
70 bool isMainThreadEventDispatcher();
71 bool isSecondaryThreadEventDispatcher();
74 void handleApplicationExec();
75 void handleDialogExec();
77 bool wakeEventDispatcherThread();
78 static void callProcessPostedEvents(
void *eventDispatcher);
81 void updateNativeTimer();
82 static void callProcessTimers(
void *eventDispatcher);
84 static void setEmscriptenSocketCallbacks();
85 static void clearEmscriptenSocketCallbacks();
86 static void socketError(
int fd,
int err,
const char* msg,
void *
context);
87 static void socketOpen(
int fd,
void *
context);
88 static void socketListen(
int fd,
void *
context);
89 static void socketConnection(
int fd,
void *
context);
90 static void socketMessage(
int fd,
void *
context);
91 static void socketClose(
int fd,
void *
context);
93 static void setSocketState(
int socket,
bool setReadyRead,
bool setReadyWrite);
94 static void clearSocketState(
int socket);
95 void waitForSocketState(
int timeout,
int socket,
bool checkRead,
bool checkWrite,
96 bool *selectForRead,
bool *selectForWrite,
bool *socketDisconnect);
98 static void run(std::function<
void(
void)> fn);
99 static void runAsync(std::function<
void(
void)> fn);
100 static void runOnMainThreadAsync(std::function<
void(
void)> fn);
104 bool m_interrupted =
false;
105 bool m_processTimers =
false;
106 bool m_pendingProcessEvents =
false;
110 std::chrono::milliseconds m_timerTargetTime{};
114 bool m_wakeUpCalled =
false;
115 std::condition_variable m_moreEvents;
117 static QVector<QEventDispatcherWasm *> g_secondaryThreadEventDispatchers;
118 static std::mutex g_staticDataMutex;
119 static emscripten::ProxyingQueue g_proxyingQueue;
120 static pthread_t g_mainThread;
127 static std::multimap<int, QSocketNotifier *> g_socketNotifiers;
129 struct SocketReadyState {
132 bool waitForReadyWrite =
false;
133 bool readyRead =
false;
134 bool readyWrite =
false;
136 static std::map<int, SocketReadyState> g_socketState;