34 static QDxgiVSyncService *instance();
40 void refAdapter(LUID luid);
41 void derefAdapter(LUID luid);
44 void beginFrame(LUID luid);
49 void registerWindow(QWindow *window);
50 void unregisterWindow(QWindow *window);
62 bool supportsWindow(QWindow *window);
67 using CallbackWindowList = QVarLengthArray<QWindow *, 16>;
68 using Callback = std::function<
void(
const CallbackWindowList &windowList, qint64 timestampNs)>;
69 qsizetype registerCallback(Callback cb);
70 void unregisterCallback(qsizetype id);
77 static void global_destroy();
82 IDXGIAdapter *adapter;
85 QDxgiVSyncThread *thread;
87 QHash<HMONITOR, NotifierData> notifiers;
93 float reportedRefreshIntervalMs;
96 void cleanupAdapterData(AdapterData *a);
97 void cleanupWindowData(WindowData *w);
98 void updateWindowData(QWindow *window, WindowData *w);
100 bool disableService =
false;
101 bool cleanupRegistered =
false;
102 IDXGIFactory2 *dxgiFactory =
nullptr;
104 QVector<AdapterData> adapters;
105 QHash<QWindow *, WindowData> windows;
106 QVector<Callback> callbacks;