33 static QDxgiVSyncService *instance();
39 void refAdapter(LUID luid);
40 void derefAdapter(LUID luid);
43 void beginFrame(LUID luid);
48 void registerWindow(QWindow *window);
49 void unregisterWindow(QWindow *window);
61 bool supportsWindow(QWindow *window);
66 using CallbackWindowList = QVarLengthArray<QWindow *, 16>;
67 using Callback = std::function<
void(
const CallbackWindowList &windowList, qint64 timestampNs)>;
68 qsizetype registerCallback(Callback cb);
69 void unregisterCallback(qsizetype id);
76 static void global_destroy();
81 IDXGIAdapter *adapter;
84 QDxgiVSyncThread *thread;
86 QHash<HMONITOR, NotifierData> notifiers;
92 float reportedRefreshIntervalMs;
95 void cleanupAdapterData(AdapterData *a);
96 void cleanupWindowData(WindowData *w);
97 void updateWindowData(QWindow *window, WindowData *w);
99 bool disableService =
false;
100 bool cleanupRegistered =
false;
101 IDXGIFactory2 *dxgiFactory =
nullptr;
103 QVector<AdapterData> adapters;
104 QHash<QWindow *, WindowData> windows;
105 QVector<Callback> callbacks;