rpcs3/rpcs3/headless_application.h
Megamouse 9cf7a63c77 Emu: Implement BlockingCallFromMainThread
Reduces some copy-paste clutter throughout the project
2022-06-25 14:01:40 +03:00

37 lines
820 B
C++

#pragma once
#include <QCoreApplication>
#include "main_application.h"
#include "util/atomic.hpp"
#include <functional>
/** Headless RPCS3 Application Class
* The main point of this class is to do application initialization and initialize callbacks.
*/
class headless_application : public QCoreApplication, public main_application
{
Q_OBJECT
public:
headless_application(int& argc, char** argv);
/** Call this method before calling app.exec */
bool Init() override;
private:
void InitializeCallbacks();
void InitializeConnects() const;
QThread* get_thread() override
{
return thread();
}
Q_SIGNALS:
void RequestCallFromMainThread(std::function<void()> func, atomic_t<bool>* wake_up);
private Q_SLOTS:
static void CallFromMainThread(const std::function<void()>& func, atomic_t<bool>* wake_up);
};