bool QGstreamerVideoWidgetControl::eventFilter(QObject *object, QEvent *e) { if (m_widget && object == m_widget) { if (e->type() == QEvent::ParentChange || e->type() == QEvent::Show) { WId newWId = m_widget->winId(); if (newWId != m_windowId) { m_windowId = newWId; // Even if we have created a winId at this point, other X applications // need to be aware of it. QApplication::syncX(); setOverlay(); } } if (e->type() == QEvent::Show) { // Setting these values ensures smooth resizing since it // will prevent the system from clearing the background m_widget->setAttribute(Qt::WA_NoSystemBackground, true); m_widget->setAttribute(Qt::WA_PaintOnScreen, true); } else if (e->type() == QEvent::Resize) { // This is a workaround for missing background repaints // when reducing window size windowExposed(); } } return false; }
void X11Renderer::setOverlay() { if (m_videoSink && GST_IS_X_OVERLAY(m_videoSink)) { WId windowId = m_renderWidget->winId(); // Even if we have created a winId at this point, other X applications // need to be aware of it. QApplication::syncX(); gst_x_overlay_set_xwindow_id ( GST_X_OVERLAY(m_videoSink) , windowId ); } windowExposed(); m_overlaySet = true; }
bool X11Renderer::eventFilter(QEvent *e) { if (e->type() == QEvent::Show) { // Setting these values ensures smooth resizing since it // will prevent the system from clearing the background m_renderWidget->setAttribute(Qt::WA_NoSystemBackground, true); m_renderWidget->setAttribute(Qt::WA_PaintOnScreen, true); setOverlay(); } else if (e->type() == QEvent::Resize) { // This is a workaround for missing background repaints // when reducing window size m_renderWidget->setGeometry(m_videoWidget->calculateDrawFrameRect()); windowExposed(); } return false; }
bool QGstreamerVideoWidgetControl::eventFilter(QObject *object, QEvent *e) { if (m_widget && object == m_widget) { if (e->type() == QEvent::ParentChange || e->type() == QEvent::Show) { WId newWId = m_widget->winId(); if (newWId != m_windowId) { m_windowId = newWId; setOverlay(); } } if (e->type() == QEvent::Show) { // Setting these values ensures smooth resizing since it // will prevent the system from clearing the background m_widget->setAttribute(Qt::WA_NoSystemBackground, true); } else if (e->type() == QEvent::Resize) { // This is a workaround for missing background repaints // when reducing window size windowExposed(); } } return false; }