, m_orientation(Qt::PrimaryOrientation)
, m_directRenderSurface(0)
, m_directRenderContext(0)
+ , m_directRenderActive(false)
#if defined (QT_COMPOSITOR_WAYLAND_GL)
, m_graphics_hw_integration(0)
#endif
m_pageFlipper = QGuiApplication::primaryScreen()->handle()->pageFlipper();
}
+ if (!surface)
+ setDirectRenderingActive(false);
+
if (m_graphics_hw_integration && m_graphics_hw_integration->setDirectRenderSurface(surface ? surface->waylandSurface() : 0)) {
m_directRenderSurface = surface;
m_directRenderContext = context;
return false;
}
+void Compositor::setDirectRenderingActive(bool active)
+{
+ if (m_directRenderActive == active)
+ return;
+ m_directRenderActive = active;
+
+ if (m_pageFlipper)
+ QMetaObject::invokeMethod(m_pageFlipper, "setDirectRenderingActive", Q_ARG(bool, active));
+}
+
QList<struct wl_client *> Compositor::clients() const
{
QList<struct wl_client *> list;
Surface *directRenderSurface() const {return m_directRenderSurface;}
QOpenGLContext *directRenderContext() const {return m_directRenderContext;}
QPlatformScreenPageFlipper *pageFlipper() const { return m_pageFlipper; }
+ void setDirectRenderingActive(bool active);
QList<Surface*> surfaces() const { return m_surfaces; }
QList<Surface*> surfacesForClient(wl_client* client);
Surface *m_directRenderSurface;
QOpenGLContext *m_directRenderContext;
+ bool m_directRenderActive;
#ifdef QT_COMPOSITOR_WAYLAND_GL
GraphicsHardwareIntegration *m_graphics_hw_integration;
if (surfaceBuffer && m_compositor->pageFlipper()) {
if (m_compositor->pageFlipper()->displayBuffer(surfaceBuffer)) {
surfaceBuffer->setPageFlipperHasBuffer(true);
+ m_compositor->setDirectRenderingActive(true);
return true;
} else {
qDebug() << "could not post buffer";