Exemplo n.º 1
0
void
KVirtualBGRenderer::initRenderers()
{
    KConfigGroup cg(m_pConfig, "Background Common");
    // Same config for each screen?
    // FIXME: Could use same renderer for identically-sized screens.
    m_bCommonScreen = cg.readEntry("CommonScreen", _defCommonScreen);
    // Do not split one big image over all screens?
    m_bDrawBackgroundPerScreen =
        cg.readEntry("DrawBackgroundPerScreen_0", _defDrawBackgroundPerScreen);

    m_numRenderers = m_bDrawBackgroundPerScreen ? QApplication::desktop()->numScreens() : 1;

    m_bFinished.resize(m_numRenderers);
    m_bFinished.fill(false);

    if (m_numRenderers == m_renderer.size())
        return;

    qDeleteAll(m_renderer);
    m_renderer.resize(m_numRenderers);
    for (int i = 0; i < m_numRenderers; i++) {
        int eScreen = m_bCommonScreen ? 0 : i;
        KBackgroundRenderer *r = new KBackgroundRenderer(eScreen, m_bDrawBackgroundPerScreen, m_pConfig);
        m_renderer.insert(i, r);
        r->setSize(renderSize(i));
        connect(r, SIGNAL(imageDone(int)), SLOT(screenDone(int)));
    }
}