42 if (s_connectedWindow == window)
return;
47 for (
auto &conn : s_connections) {
48 QObject::disconnect(conn);
49 conn = QMetaObject::Connection();
52 s_connectedWindow = window;
53 s_connections[0] = QObject::connect(window, &QQuickWindow::sceneGraphInitialized, window, [window]() {
54 s_cachedRhi.store(window->rhi(), std::memory_order_release);
55 }, Qt::DirectConnection);
56 s_connections[1] = QObject::connect(window, &QQuickWindow::sceneGraphInvalidated, window, []() {
57 s_cachedRhi.store(
nullptr, std::memory_order_release);
58#if defined(QGC_HAS_GST_GLMEMORY_GPU_PATH) || defined(QGC_HAS_GST_D3D11_GPU_PATH) || defined(QGC_HAS_GST_D3D12_GPU_PATH)
60 GstContextBridgeRegistry::resetAllBridges();
62 }, Qt::DirectConnection);
64 s_connections[2] = QObject::connect(window, &QQuickWindow::destroyed, window, [](QObject *) {
65 s_cachedRhi.store(
nullptr, std::memory_order_release);
66#if defined(QGC_HAS_GST_GLMEMORY_GPU_PATH) || defined(QGC_HAS_GST_D3D11_GPU_PATH) || defined(QGC_HAS_GST_D3D12_GPU_PATH)
67 GstContextBridgeRegistry::resetAllBridges();
69 }, Qt::DirectConnection);