示例#1
0
void Compositor::closeWindowWithId(int winId)
{
    qDebug() << Q_FUNC_INFO << "winId" << winId;

    CompositorWindow *window = mWindows.value(winId, 0);
    if (window && window->surface()) {
        QWaylandSurface *surface = window->surface();

        if (window->checkIsAllowedToStay() ||
            hasProcessMultipleWindows(surface->client()) ||
            window->keepAlive()) {
            qDebug() << Q_FUNC_INFO << "Destroying surface and keeping client alive";
            window->sendClose();
        }
        else {
            qDebug() << Q_FUNC_INFO << "Closing client and destroying surface";
            destroyClientForSurface(surface);
        }
    }
}
示例#2
0
 void destroyClientForWindow(QVariant window) {
     WaylandSurface *surface = qobject_cast<WaylandSurfaceItem *>(qvariant_cast<QObject *>(window))->surface();
     destroyClientForSurface(surface);
 }
示例#3
0
void SystemCompositor::destroyClientForWindow(QVariant window)
{
    QWaylandSurface *surface = qobject_cast<QWaylandSurfaceItem *>(
                                  qvariant_cast<QObject *>(window))->surface();
    destroyClientForSurface(surface);
}
示例#4
0
void LipstickCompositor::closeClientForWindowId(int id)
{
    LipstickCompositorWindow *window = m_mappedSurfaces.value(id, 0);
    if (window && window->surface())
        destroyClientForSurface(window->surface());
}