QPlatformWindow *HeadlessIntegration::createPlatformWindow(QWindow *window) const { Q_UNUSED(window); QPlatformWindow *w = new QPlatformWindow(window); w->requestActivateWindow(); return w; }
QPlatformWindow *QOffscreenIntegration::createPlatformWindow(QWindow *window) const { Q_UNUSED(window); QPlatformWindow *w = new QOffscreenWindow(window); w->requestActivateWindow(); return w; }
QPlatformWindow *QMinimalEglIntegration::createPlatformWindow(QWindow *window) const { #ifdef QEGL_EXTRA_DEBUG qWarning("QMinimalEglIntegration::createPlatformWindow %p\n",window); #endif QPlatformWindow *w = new QMinimalEglWindow(window); w->requestActivateWindow(); return w; }
QPlatformWindow *EglFSIntegration::createPlatformWindow(QWindow *window) const { QWindowSystemInterface::flushWindowSystemEvents(); QPlatformWindow *w = egl_device_integration()->createPlatformWindow(window); if (!w) { w = new EglFSWindow(window); static_cast<EglFSWindow *>(w)->create(); } // Activate only the compositor window for the primary screen in order to // make keyboard input work if (window->type() != Qt::ToolTip && window->screen() == QGuiApplication::primaryScreen()) w->requestActivateWindow(); return w; }
void QKmsContext::swapBuffers(QPlatformSurface *surface) { //Cast context to a window surface and get the screen the context //is on and call swapBuffers on that screen. QPlatformWindow *window = static_cast<QPlatformWindow *>(surface); QKmsScreen *screen = static_cast<QKmsScreen *> (QPlatformScreen::platformScreenForWindow(window->window())); screen->swapBuffers(); }
void QOpenWFDGLContext::swapBuffers(QPlatformSurface *surface) { glFlush(); QPlatformWindow *window = static_cast<QPlatformWindow *>(surface); QOpenWFDScreen *screen = static_cast<QOpenWFDScreen *>(QPlatformScreen::platformScreenForWindow(window->window())); screen->swapBuffers(); }
QWindow *QXcbScreen::topLevelAt(const QPoint &p) const { xcb_window_t root = m_screen->root; int x = p.x(); int y = p.y(); xcb_window_t parent = root; xcb_window_t child = root; do { xcb_translate_coordinates_cookie_t translate_cookie = xcb_translate_coordinates_unchecked(xcb_connection(), parent, child, x, y); xcb_translate_coordinates_reply_t *translate_reply = xcb_translate_coordinates_reply(xcb_connection(), translate_cookie, NULL); if (!translate_reply) { return 0; } parent = child; child = translate_reply->child; x = translate_reply->dst_x; y = translate_reply->dst_y; free(translate_reply); if (!child || child == root) return 0; QPlatformWindow *platformWindow = connection()->platformWindowFromId(child); if (platformWindow) return platformWindow->window(); } while (parent != child); return 0; }
bool QOpenWFDGLContext::makeCurrent(QPlatformSurface *surface) { Q_ASSERT(surface->surface()->surfaceType() == QSurface::OpenGLSurface); EGLDisplay display = mWfdDevice->eglDisplay(); EGLContext context = mWfdDevice->eglContext(); if (!eglMakeCurrent(display,EGL_NO_SURFACE,EGL_NO_SURFACE,context)) { qDebug("GLContext: eglMakeCurrent FAILED!"); } QPlatformWindow *window = static_cast<QPlatformWindow *>(surface); QOpenWFDScreen *screen = static_cast<QOpenWFDScreen *>(QPlatformScreen::platformScreenForWindow(window->window())); screen->bindFramebuffer(); return true; }
QT_BEGIN_NAMESPACE QMinimalIntegration::QMinimalIntegration() : m_fontDb(new QGenericUnixFontDatabase()), #ifdef Q_OS_WIN m_eventDispatcher(new QEventDispatcherWin32()) #else m_eventDispatcher(createUnixEventDispatcher()) #endif { QGuiApplicationPrivate::instance()->setEventDispatcher(m_eventDispatcher); QMinimalScreen *mPrimaryScreen = new QMinimalScreen(); mPrimaryScreen->mGeometry = QRect(0, 0, 240, 320); mPrimaryScreen->mDepth = 32; mPrimaryScreen->mFormat = QImage::Format_ARGB32_Premultiplied; screenAdded(mPrimaryScreen); } bool QMinimalIntegration::hasCapability(QPlatformIntegration::Capability cap) const { switch (cap) { case ThreadedPixmaps: return true; case MultipleWindows: return true; default: return QPlatformIntegration::hasCapability(cap); } } QPlatformWindow *QMinimalIntegration::createPlatformWindow(QWindow *window) const { Q_UNUSED(window); QPlatformWindow *w = new QPlatformWindow(window); w->requestActivateWindow(); return w; }
bool QKmsContext::makeCurrent(QPlatformSurface *surface) { Q_ASSERT(surface->surface()->supportsOpenGL()); EGLDisplay display = m_device->eglDisplay(); EGLSurface eglSurface; if (surface->surface()->surfaceClass() == QSurface::Window) { QPlatformWindow *window = static_cast<QPlatformWindow *>(surface); QKmsScreen *screen = static_cast<QKmsScreen *>(QPlatformScreen::platformScreenForWindow(window->window())); eglSurface = screen->eglSurface(); screen->waitForPageFlipComplete(); } else { eglSurface = static_cast<QKmsOffscreenWindow *>(surface)->surface(); } bool ok = eglMakeCurrent(display, eglSurface, eglSurface, m_eglContext); if (!ok) qWarning("QKmsContext::makeCurrent(): eglError: %x, this: %p", eglGetError(), this); return true; }
QPlatformWindow *QHaikuIntegration::createPlatformWindow(QWindow *window) const { QPlatformWindow *platformWindow = new QHaikuRasterWindow(window); platformWindow->requestActivateWindow(); return platformWindow; }