OBSQTDisplay::OBSQTDisplay(QWidget *parent, Qt::WindowFlags flags) : QWidget(parent, flags) { setAttribute(Qt::WA_PaintOnScreen); setAttribute(Qt::WA_StaticContents); setAttribute(Qt::WA_NoSystemBackground); setAttribute(Qt::WA_OpaquePaintEvent); setAttribute(Qt::WA_DontCreateNativeAncestors); setAttribute(Qt::WA_NativeWindow); auto windowVisible = [this] (bool visible) { if (!visible) return; if (!display) { CreateDisplay(); } else { QSize size = GetPixelSize(this); obs_display_resize(display, size.width(), size.height()); } }; auto sizeChanged = [this] (QScreen*) { CreateDisplay(); QSize size = GetPixelSize(this); obs_display_resize(display, size.width(), size.height()); }; connect(windowHandle(), &QWindow::visibleChanged, windowVisible); connect(windowHandle(), &QWindow::screenChanged, sizeChanged); }
void OBSQTDisplay::resizeEvent(QResizeEvent *event) { QWidget::resizeEvent(event); CreateDisplay(); if (isVisible() && display) { QSize size = GetPixelSize(this); obs_display_resize(display, size.width(), size.height()); } emit DisplayResized(); }
void obs_resize(uint32_t cx, uint32_t cy) { if (!obs || !obs->video.video || !obs->video.graphics) return; obs_display_resize(&obs->video.main_display, cx, cy); }