diff --git a/abstract_egl_backend.cpp b/abstract_egl_backend.cpp --- a/abstract_egl_backend.cpp +++ b/abstract_egl_backend.cpp @@ -112,8 +112,6 @@ initEGL(); GLPlatform *glPlatform = GLPlatform::instance(); glPlatform->detect(EglPlatformInterface); - if (GLPlatform::instance()->driver() == Driver_Intel) - options->setUnredirectFullscreen(false); // bug #252817 options->setGlPreferBufferSwap(options->glPreferBufferSwap()); // resolve autosetting if (options->glPreferBufferSwap() == Options::AutoSwapStrategy) options->setGlPreferBufferSwap('e'); // for unknown drivers - should not happen diff --git a/client.h b/client.h --- a/client.h +++ b/client.h @@ -391,7 +391,6 @@ protected: virtual void debug(QDebug& stream) const; - virtual bool shouldUnredirect() const; void addDamage(const QRegion &damage) override; bool belongsToSameApplication(const AbstractClient *other, bool active_hack) const override; void doSetActive() override; diff --git a/client.cpp b/client.cpp --- a/client.cpp +++ b/client.cpp @@ -944,9 +944,6 @@ m_decoInputExtent.map(); updateHiddenPreview(); } - if (Compositor::isCreated()) { - Compositor::self()->checkUnredirect(); - } emit windowShown(this); } @@ -963,9 +960,6 @@ addWorkspaceRepaint(visibleRect()); workspace()->clientHidden(this); emit windowHidden(this); - if (Compositor::isCreated()) { - Compositor::self()->checkUnredirect(); - } } void Client::internalKeep() @@ -983,9 +977,6 @@ updateHiddenPreview(); addWorkspaceRepaint(visibleRect()); workspace()->clientHidden(this); - if (Compositor::isCreated()) { - Compositor::self()->checkUnredirect(); - } } /** diff --git a/composite.h b/composite.h --- a/composite.h +++ b/composite.h @@ -166,8 +166,6 @@ * Schedules a new repaint if no repaint is currently scheduled. **/ void scheduleRepaint(); - void checkUnredirect(); - void checkUnredirect(bool force); void updateCompositeBlocking(); void updateCompositeBlocking(KWin::Client* c); @@ -205,7 +203,6 @@ void restart(); void fallbackToXRenderCompositing(); void performCompositing(); - void delayedCheckUnredirect(); void slotConfigChanged(); void releaseCompositorSelection(); void deleteUnusedSupportProperties(); @@ -234,8 +231,6 @@ QElapsedTimer nextPaintReference; QRegion repaints_region; - QTimer unredirectTimer; - bool forceUnredirectCheck; QTimer compositeResetTimer; // for compressing composite resets bool m_finishing; // finish() sets this variable while shutting down bool m_starting; // start() sets this variable while starting diff --git a/composite.cpp b/composite.cpp --- a/composite.cpp +++ b/composite.cpp @@ -89,19 +89,15 @@ , vBlankInterval(0) , fpsInterval(0) , m_xrrRefreshRate(0) - , forceUnredirectCheck(false) , m_finishing(false) , m_timeSinceLastVBlank(0) , m_scene(NULL) , m_bufferSwapPending(false) , m_composeAtSwapCompletion(false) { qRegisterMetaType("Compositor::SuspendReason"); - connect(&unredirectTimer, SIGNAL(timeout()), SLOT(delayedCheckUnredirect())); connect(&compositeResetTimer, SIGNAL(timeout()), SLOT(restart())); connect(options, &Options::configChanged, this, &Compositor::slotConfigChanged); - connect(options, SIGNAL(unredirectFullscreenChanged()), SLOT(delayedCheckUnredirect())); - unredirectTimer.setSingleShot(true); compositeResetTimer.setSingleShot(true); nextPaintReference.invalidate(); // Initialize the timer @@ -852,54 +848,6 @@ return !m_finishing && hasScene(); } -void Compositor::checkUnredirect() -{ - checkUnredirect(false); -} - -// force is needed when the list of windows changes (e.g. a window goes away) -void Compositor::checkUnredirect(bool force) -{ - if (!hasScene() || !m_scene->overlayWindow() || m_scene->overlayWindow()->window() == None || !options->isUnredirectFullscreen()) - return; - if (force) - forceUnredirectCheck = true; - if (!unredirectTimer.isActive()) - unredirectTimer.start(0); -} - -void Compositor::delayedCheckUnredirect() -{ - if (!hasScene() || !m_scene->overlayWindow() || m_scene->overlayWindow()->window() == None || !(options->isUnredirectFullscreen() || sender() == options)) - return; - ToplevelList list; - bool changed = forceUnredirectCheck; - foreach (Client * c, Workspace::self()->clientList()) - list.append(c); - foreach (Unmanaged * c, Workspace::self()->unmanagedList()) - list.append(c); - foreach (Toplevel * c, list) { - if (c->updateUnredirectedState()) { - changed = true; - break; - } - } - // no desktops, no Deleted ones - if (!changed) - return; - forceUnredirectCheck = false; - // Cut out parts from the overlay window where unredirected windows are, - // so that they are actually visible. - const QSize &s = screens()->size(); - QRegion reg(0, 0, s.width(), s.height()); - foreach (Toplevel * c, list) { - if (c->unredirected()) - reg -= c->geometry(); - } - m_scene->overlayWindow()->setShape(reg); - addRepaint(reg); -} - bool Compositor::checkForOverlayWindow(WId w) const { if (!hasScene()) { @@ -971,9 +919,7 @@ damage_region = QRegion(0, 0, width(), height()); effect_window = new EffectWindowImpl(this); - unredirect = false; - Compositor::self()->checkUnredirect(true); Compositor::self()->scene()->windowAdded(this); // With unmanaged windows there is a race condition between the client painting the window @@ -990,7 +936,6 @@ { if (kwinApp()->operationMode() == Application::OperationModeX11 && damage_handle == XCB_NONE) return; - Compositor::self()->checkUnredirect(true); if (effect_window->window() == this) { // otherwise it's already passed to Deleted, don't free data discardWindowPixmap(); delete effect_window; @@ -1200,41 +1145,6 @@ Compositor::self()->addRepaint(r2); } -bool Toplevel::updateUnredirectedState() -{ - assert(compositing()); - bool should = options->isUnredirectFullscreen() && shouldUnredirect() && !unredirectSuspend && - !shape() && !hasAlpha() && opacity() == 1.0 && - !static_cast(effects)->activeFullScreenEffect(); - if (should == unredirect) - return false; - static QElapsedTimer lastUnredirect; - static const qint64 msecRedirectInterval = 100; - if (!lastUnredirect.hasExpired(msecRedirectInterval)) { - QTimer::singleShot(msecRedirectInterval, Compositor::self(), SLOT(checkUnredirect())); - return false; - } - lastUnredirect.start(); - unredirect = should; - if (unredirect) { - qCDebug(KWIN_CORE) << "Unredirecting:" << this; - xcb_composite_unredirect_window(connection(), frameId(), XCB_COMPOSITE_REDIRECT_MANUAL); - } else { - qCDebug(KWIN_CORE) << "Redirecting:" << this; - xcb_composite_redirect_window(connection(), frameId(), XCB_COMPOSITE_REDIRECT_MANUAL); - discardWindowPixmap(); - } - return true; -} - -void Toplevel::suspendUnredirect(bool suspend) -{ - if (unredirectSuspend == suspend) - return; - unredirectSuspend = suspend; - Compositor::self()->checkUnredirect(); -} - //**************************************** // Client //**************************************** @@ -1264,65 +1174,4 @@ resetHaveResizeEffect(); } -bool Client::shouldUnredirect() const -{ - if (isActiveFullScreen()) { - ToplevelList stacking = workspace()->xStackingOrder(); - for (int pos = stacking.count() - 1; - pos >= 0; - --pos) { - Toplevel* c = stacking.at(pos); - if (c == this) // is not covered by any other window, ok to unredirect - return true; - if (c->geometry().intersects(geometry())) - return false; - } - abort(); - } - return false; -} - - -//**************************************** -// Unmanaged -//**************************************** - -bool Unmanaged::shouldUnredirect() const -{ - // the pixmap is needed for the login effect, a nicer solution would be the login effect increasing - // refcount for the window pixmap (which would prevent unredirect), avoiding this hack - if (resourceClass() == "ksplashx" - || resourceClass() == "ksplashsimple" - || resourceClass() == "ksplashqml" - ) - return false; -// it must cover whole display or one xinerama screen, and be the topmost there - const int desktop = VirtualDesktopManager::self()->current(); - if (geometry() == workspace()->clientArea(FullArea, geometry().center(), desktop) - || geometry() == workspace()->clientArea(ScreenArea, geometry().center(), desktop)) { - ToplevelList stacking = workspace()->xStackingOrder(); - for (int pos = stacking.count() - 1; - pos >= 0; - --pos) { - Toplevel* c = stacking.at(pos); - if (c == this) // is not covered by any other window, ok to unredirect - return true; - if (c->geometry().intersects(geometry())) - return false; - } - abort(); - } - return false; -} - -//**************************************** -// Deleted -//**************************************** - -bool Deleted::shouldUnredirect() const -{ - return false; -} - - } // namespace diff --git a/deleted.h b/deleted.h --- a/deleted.h +++ b/deleted.h @@ -94,7 +94,6 @@ } protected: virtual void debug(QDebug& stream) const; - virtual bool shouldUnredirect() const; private Q_SLOTS: void mainClientClosed(KWin::Toplevel *client); private: diff --git a/effects.cpp b/effects.cpp --- a/effects.cpp +++ b/effects.cpp @@ -681,7 +681,6 @@ void EffectsHandlerImpl::setActiveFullScreenEffect(Effect* e) { fullscreen_effect = e; - m_compositor->checkUnredirect(); } Effect* EffectsHandlerImpl::activeFullScreenEffect() const diff --git a/geometry.cpp b/geometry.cpp --- a/geometry.cpp +++ b/geometry.cpp @@ -84,9 +84,6 @@ if (effects) { static_cast(effects)->desktopResized(geom.size()); } - - //Update the shape of the overlay window to fix redrawing of unredirected windows. bug#305781 - m_compositor->checkUnredirect(true); } void Workspace::saveOldScreenSizes() @@ -2108,10 +2105,6 @@ updateWindowRules(Rules::Position); screens()->setCurrent(this); workspace()->updateStackingOrder(); - if (Compositor::isCreated()) { - // TODO: move out of geometry.cpp, is this really needed here? - Compositor::self()->checkUnredirect(); - } // client itself is not damaged addRepaintDuringGeometryUpdates(); updateGeometryBeforeUpdateBlocking(); diff --git a/kcmkwin/kwincompositing/compositing.h b/kcmkwin/kwincompositing/compositing.h --- a/kcmkwin/kwincompositing/compositing.h +++ b/kcmkwin/kwincompositing/compositing.h @@ -38,7 +38,6 @@ Q_PROPERTY(int windowThumbnail READ windowThumbnail WRITE setWindowThumbnail NOTIFY windowThumbnailChanged) Q_PROPERTY(int glScaleFilter READ glScaleFilter WRITE setGlScaleFilter NOTIFY glScaleFilterChanged) Q_PROPERTY(bool xrScaleFilter READ xrScaleFilter WRITE setXrScaleFilter NOTIFY xrScaleFilterChanged) - Q_PROPERTY(bool unredirectFullscreen READ unredirectFullscreen WRITE setUnredirectFullscreen NOTIFY unredirectFullscreenChanged) Q_PROPERTY(int glSwapStrategy READ glSwapStrategy WRITE setGlSwapStrategy NOTIFY glSwapStrategyChanged) Q_PROPERTY(bool glColorCorrection READ glColorCorrection WRITE setGlColorCorrection NOTIFY glColorCorrectionChanged) Q_PROPERTY(int compositingType READ compositingType WRITE setCompositingType NOTIFY compositingTypeChanged) @@ -55,7 +54,6 @@ int windowThumbnail() const; int glScaleFilter() const; bool xrScaleFilter() const; - bool unredirectFullscreen() const; int glSwapStrategy() const; bool glColorCorrection() const; int compositingType() const; @@ -68,7 +66,6 @@ void setWindowThumbnail(int index); void setGlScaleFilter(int index); void setXrScaleFilter(bool filter); - void setUnredirectFullscreen(bool unredirect); void setGlSwapStrategy(int strategy); void setGlColorCorrection(bool correction); void setCompositingType(int index); @@ -87,7 +84,6 @@ void windowThumbnailChanged(int); void glScaleFilterChanged(int); void xrScaleFilterChanged(int); - void unredirectFullscreenChanged(bool); void glSwapStrategyChanged(int); void glColorCorrectionChanged(bool); void compositingTypeChanged(int); @@ -99,7 +95,6 @@ int m_windowThumbnail; int m_glScaleFilter; bool m_xrScaleFilter; - bool m_unredirectFullscreen; int m_glSwapStrategy; bool m_glColorCorrection; int m_compositingType; diff --git a/kcmkwin/kwincompositing/compositing.cpp b/kcmkwin/kwincompositing/compositing.cpp --- a/kcmkwin/kwincompositing/compositing.cpp +++ b/kcmkwin/kwincompositing/compositing.cpp @@ -41,7 +41,6 @@ , m_windowThumbnail(0) , m_glScaleFilter(0) , m_xrScaleFilter(false) - , m_unredirectFullscreen(false) , m_glSwapStrategy(0) , m_glColorCorrection(false) , m_compositingType(0) @@ -55,7 +54,6 @@ connect(this, &Compositing::windowThumbnailChanged, this, &Compositing::changed); connect(this, &Compositing::glScaleFilterChanged, this, &Compositing::changed); connect(this, &Compositing::xrScaleFilterChanged, this, &Compositing::changed); - connect(this, &Compositing::unredirectFullscreenChanged, this, &Compositing::changed); connect(this, &Compositing::glSwapStrategyChanged, this, &Compositing::changed); connect(this, &Compositing::glColorCorrectionChanged, this, &Compositing::changed); connect(this, &Compositing::compositingTypeChanged, this, &Compositing::changed); @@ -74,7 +72,6 @@ setWindowThumbnail(kwinConfig.readEntry("HiddenPreviews", 5) - 4); setGlScaleFilter(kwinConfig.readEntry("GLTextureFilter", 2)); setXrScaleFilter(kwinConfig.readEntry("XRenderSmoothScale", false)); - setUnredirectFullscreen(kwinConfig.readEntry("UnredirectFullscreen", false)); setCompositingEnabled(kwinConfig.readEntry("Enabled", true)); auto swapStrategy = [&kwinConfig]() { @@ -124,7 +121,6 @@ setWindowThumbnail(1); setGlScaleFilter(2); setXrScaleFilter(false); - setUnredirectFullscreen(false); setGlSwapStrategy(1); setGlColorCorrection(false); setCompositingType(CompositingType::OPENGL20_INDEX); @@ -188,11 +184,6 @@ return m_xrScaleFilter; } -bool Compositing::unredirectFullscreen() const -{ - return m_unredirectFullscreen; -} - int Compositing::glSwapStrategy() const { return m_glSwapStrategy; @@ -249,15 +240,6 @@ emit glSwapStrategyChanged(strategy); } -void Compositing::setUnredirectFullscreen(bool unredirect) -{ - if (unredirect == m_unredirectFullscreen) { - return; - } - m_unredirectFullscreen = unredirect; - emit unredirectFullscreenChanged(unredirect); -} - void Compositing::setWindowThumbnail(int index) { if (index == m_windowThumbnail) { @@ -302,7 +284,6 @@ kwinConfig.writeEntry("HiddenPreviews", windowThumbnail() + 4); kwinConfig.writeEntry("GLTextureFilter", glScaleFilter()); kwinConfig.writeEntry("XRenderSmoothScale", xrScaleFilter()); - kwinConfig.writeEntry("UnredirectFullscreen", unredirectFullscreen()); kwinConfig.writeEntry("Enabled", compositingEnabled()); auto swapStrategy = [this] { switch (glSwapStrategy()) { diff --git a/kcmkwin/kwincompositing/compositing.ui b/kcmkwin/kwincompositing/compositing.ui --- a/kcmkwin/kwincompositing/compositing.ui +++ b/kcmkwin/kwincompositing/compositing.ui @@ -7,7 +7,7 @@ 0 0 481 - 415 + 349 @@ -81,22 +81,6 @@ - - - - false - - - Having full screen windows bypass the compositor is not supported on every hardware. - - - true - - - KMessageWidget::Information - - - @@ -298,27 +282,13 @@ - - - Expert: - - - - - - - Suspend compositor for full screen windows - - - - Experimental: - + Enable color correction diff --git a/kcmkwin/kwincompositing/main.cpp b/kcmkwin/kwincompositing/main.cpp --- a/kcmkwin/kwincompositing/main.cpp +++ b/kcmkwin/kwincompositing/main.cpp @@ -86,7 +86,6 @@ m_form.scaleWarning->setIcon(QIcon::fromTheme(QStringLiteral("dialog-warning"))); m_form.tearingWarning->setIcon(QIcon::fromTheme(QStringLiteral("dialog-warning"))); m_form.windowThumbnailWarning->setIcon(QIcon::fromTheme(QStringLiteral("dialog-warning"))); - m_form.unredirectInformation->setIcon(QIcon::fromTheme(QStringLiteral("dialog-information"))); init(); } @@ -165,20 +164,6 @@ } ); - // unredirect fullscreen - m_form.unredirectFullscreen->setChecked(m_compositing->unredirectFullscreen()); - connect(m_compositing, &Compositing::unredirectFullscreenChanged, m_form.unredirectFullscreen, &QCheckBox::setChecked); - connect(m_form.unredirectFullscreen, &QCheckBox::toggled, m_compositing, &Compositing::setUnredirectFullscreen); - connect(m_form.unredirectFullscreen, &QCheckBox::toggled, - [this](bool enabled) { - if (enabled) { - m_form.unredirectInformation->animatedShow(); - } else { - m_form.unredirectInformation->animatedHide(); - } - } - ); - // color correction m_form.colorCorrection->setChecked(m_compositing->glColorCorrection()); connect(m_compositing, &Compositing::glColorCorrectionChanged, m_form.colorCorrection, &QCheckBox::setChecked); diff --git a/kwin.kcfg b/kwin.kcfg --- a/kwin.kcfg +++ b/kwin.kcfg @@ -254,9 +254,6 @@ 4 6 - - false - 3 0 diff --git a/layers.cpp b/layers.cpp --- a/layers.cpp +++ b/layers.cpp @@ -722,9 +722,6 @@ x_stacking << c; } } - if (m_compositor) { - const_cast< Workspace* >(this)->m_compositor->checkUnredirect(); - } return x_stacking; } diff --git a/options.h b/options.h --- a/options.h +++ b/options.h @@ -169,7 +169,6 @@ Q_PROPERTY(bool useCompositing READ isUseCompositing WRITE setUseCompositing NOTIFY useCompositingChanged) Q_PROPERTY(bool compositingInitialized READ isCompositingInitialized WRITE setCompositingInitialized NOTIFY compositingInitializedChanged) Q_PROPERTY(int hiddenPreviews READ hiddenPreviews WRITE setHiddenPreviews NOTIFY hiddenPreviewsChanged) - Q_PROPERTY(bool unredirectFullscreen READ isUnredirectFullscreen WRITE setUnredirectFullscreen NOTIFY unredirectFullscreenChanged) /** * 0 = no, 1 = yes when transformed, * 2 = try trilinear when transformed; else 1, @@ -551,7 +550,6 @@ HiddenPreviews hiddenPreviews() const { return m_hiddenPreviews; } - bool isUnredirectFullscreen() const; // OpenGL // 0 = no, 1 = yes when transformed, // 2 = try trilinear when transformed; else 1, @@ -648,7 +646,6 @@ void setUseCompositing(bool useCompositing); void setCompositingInitialized(bool compositingInitialized); void setHiddenPreviews(int hiddenPreviews); - void setUnredirectFullscreen(bool unredirectFullscreen); void setGlSmoothScale(int glSmoothScale); void setXrenderSmoothScale(bool xrenderSmoothScale); void setMaxFpsInterval(qint64 maxFpsInterval); @@ -736,9 +733,6 @@ static HiddenPreviews defaultHiddenPreviews() { return HiddenPreviewsShown; } - static bool defaultUnredirectFullscreen() { - return false; - } static int defaultGlSmoothScale() { return 2; } @@ -843,7 +837,6 @@ void useCompositingChanged(); void compositingInitializedChanged(); void hiddenPreviewsChanged(); - void unredirectFullscreenChanged(); void glSmoothScaleChanged(); void colorCorrectedChanged(); void xrenderSmoothScaleChanged(); @@ -892,7 +885,6 @@ bool m_useCompositing; bool m_compositingInitialized; HiddenPreviews m_hiddenPreviews; - bool m_unredirectFullscreen; int m_glSmoothScale; bool m_colorCorrected; bool m_xrenderSmoothScale; diff --git a/options.cpp b/options.cpp --- a/options.cpp +++ b/options.cpp @@ -114,7 +114,6 @@ , m_useCompositing(Options::defaultUseCompositing()) , m_compositingInitialized(Options::defaultCompositingInitialized()) , m_hiddenPreviews(Options::defaultHiddenPreviews()) - , m_unredirectFullscreen(Options::defaultUnredirectFullscreen()) , m_glSmoothScale(Options::defaultGlSmoothScale()) , m_colorCorrected(Options::defaultColorCorrected()) , m_xrenderSmoothScale(Options::defaultXrenderSmoothScale()) @@ -634,20 +633,6 @@ emit hiddenPreviewsChanged(); } -void Options::setUnredirectFullscreen(bool unredirectFullscreen) -{ - if (GLPlatform::instance()->driver() == Driver_Intel) - unredirectFullscreen = false; // bug #252817 - if (m_unredirectFullscreen == unredirectFullscreen) { - return; - } - if (GLPlatform::instance()->driver() == Driver_Intel) { // write back the value - KConfigGroup(m_settings->config(), "Compositing").writeEntry("UnredirectFullscreen", false); - } - m_unredirectFullscreen = unredirectFullscreen; - emit unredirectFullscreenChanged(); -} - void Options::setGlSmoothScale(int glSmoothScale) { if (m_glSmoothScale == glSmoothScale) { @@ -1007,7 +992,6 @@ previews = HiddenPreviewsAlways; setHiddenPreviews(previews); - setUnredirectFullscreen(config.readEntry("UnredirectFullscreen", Options::defaultUnredirectFullscreen())); // TOOD: add setter animationSpeed = qBound(0, config.readEntry("AnimationSpeed", Options::defaultAnimationSpeed()), 6); @@ -1162,10 +1146,4 @@ return m_useCompositing || kwinApp()->platform()->requiresCompositing(); } - -bool Options::isUnredirectFullscreen() const -{ - return m_unredirectFullscreen && !kwinApp()->platform()->requiresCompositing(); -} - } // namespace diff --git a/plugins/platforms/x11/standalone/glxbackend.cpp b/plugins/platforms/x11/standalone/glxbackend.cpp --- a/plugins/platforms/x11/standalone/glxbackend.cpp +++ b/plugins/platforms/x11/standalone/glxbackend.cpp @@ -173,8 +173,6 @@ // Initialize OpenGL GLPlatform *glPlatform = GLPlatform::instance(); glPlatform->detect(GlxPlatformInterface); - if (GLPlatform::instance()->driver() == Driver_Intel) - options->setUnredirectFullscreen(false); // bug #252817 options->setGlPreferBufferSwap(options->glPreferBufferSwap()); // resolve autosetting if (options->glPreferBufferSwap() == Options::AutoSwapStrategy) options->setGlPreferBufferSwap('e'); // for unknown drivers - should not happen diff --git a/scene.h b/scene.h --- a/scene.h +++ b/scene.h @@ -275,7 +275,6 @@ void updateToplevel(Toplevel* c); // creates initial quad list for the window virtual WindowQuadList buildQuads(bool force = false) const; - void suspendUnredirect(bool suspend); void updateShadow(Shadow* shadow); const Shadow* shadow() const; Shadow* shadow(); @@ -535,12 +534,6 @@ } inline -void Scene::Window::suspendUnredirect(bool suspend) -{ - toplevel->suspendUnredirect(suspend); -} - -inline void Scene::Window::updateShadow(Shadow* shadow) { m_shadow = shadow; diff --git a/scene.cpp b/scene.cpp --- a/scene.cpp +++ b/scene.cpp @@ -234,9 +234,6 @@ continue; } phase2.append(Phase2Data(w, infiniteRegion(), data.clip, data.mask, data.quads)); - // transformations require window pixmap - w->suspendUnredirect(data.mask - & (PAINT_WINDOW_TRANSLUCENT | PAINT_SCREEN_TRANSFORMED | PAINT_WINDOW_TRANSFORMED)); } foreach (const Phase2Data & d, phase2) { @@ -309,15 +306,12 @@ } #endif if (!w->isPaintingEnabled()) { - w->suspendUnredirect(true); continue; } dirtyArea |= data.paint; // Schedule the window for painting phase2data.append(QPair< Window*, Phase2Data >(w,Phase2Data(w, data.paint, data.clip, data.mask, data.quads))); - // no transformations, but translucency requires window pixmap - w->suspendUnredirect(data.mask & PAINT_WINDOW_TRANSLUCENT); } // Save the part of the repaint region that's exclusively rendered to diff --git a/shell_client.h b/shell_client.h --- a/shell_client.h +++ b/shell_client.h @@ -50,7 +50,6 @@ QPoint clientContentPos() const override; QSize clientSize() const override; QRect transparentRect() const override; - bool shouldUnredirect() const override; NET::WindowType windowType(bool direct = false, int supported_types = 0) const override; void debug(QDebug &stream) const override; double opacity() const override; diff --git a/shell_client.cpp b/shell_client.cpp --- a/shell_client.cpp +++ b/shell_client.cpp @@ -322,12 +322,6 @@ return AbstractClient::layerForDock(); } -bool ShellClient::shouldUnredirect() const -{ - // TODO: unredirect for fullscreen - return false; -} - QRect ShellClient::transparentRect() const { // TODO: implement diff --git a/toplevel.h b/toplevel.h --- a/toplevel.h +++ b/toplevel.h @@ -295,9 +295,6 @@ bool hasAlpha() const; virtual bool setupCompositing(); virtual void finishCompositing(ReleaseReason releaseReason = ReleaseReason::Release); - bool updateUnredirectedState(); - bool unredirected() const; - void suspendUnredirect(bool suspend); Q_INVOKABLE void addRepaint(const QRect& r); Q_INVOKABLE void addRepaint(const QRegion& r); Q_INVOKABLE void addRepaint(int x, int y, int w, int h); @@ -500,7 +497,6 @@ void disownDataPassedToDeleted(); friend QDebug& operator<<(QDebug& stream, const Toplevel*); void deleteEffectWindow(); - virtual bool shouldUnredirect() const = 0; void setDepth(int depth); QRect geom; xcb_visualid_t m_visual; @@ -524,8 +520,6 @@ QByteArray resource_class; ClientMachine *m_clientMachine; WId wmClientLeaderWin; - bool unredirect; - bool unredirectSuspend; // when unredirected, but pixmap is needed temporarily bool m_damageReplyPending; QRegion opaque_region; xcb_xfixes_fetch_region_cookie_t m_regionCookie; @@ -763,11 +757,6 @@ return resource_class; // it is always lowercase } -inline bool Toplevel::unredirected() const -{ - return unredirect; -} - inline const ClientMachine *Toplevel::clientMachine() const { return m_clientMachine; diff --git a/toplevel.cpp b/toplevel.cpp --- a/toplevel.cpp +++ b/toplevel.cpp @@ -50,8 +50,6 @@ , effect_window(NULL) , m_clientMachine(new ClientMachine(this)) , wmClientLeaderWin(0) - , unredirect(false) - , unredirectSuspend(false) , m_damageReplyPending(false) , m_screen(0) , m_skipCloseAnimation(false) diff --git a/unmanaged.h b/unmanaged.h --- a/unmanaged.h +++ b/unmanaged.h @@ -51,7 +51,6 @@ void release(ReleaseReason releaseReason = ReleaseReason::Release); protected: virtual void debug(QDebug& stream) const; - virtual bool shouldUnredirect() const; private: virtual ~Unmanaged(); // use release() // handlers for X11 events diff --git a/workspace.cpp b/workspace.cpp --- a/workspace.cpp +++ b/workspace.cpp @@ -495,10 +495,6 @@ StackingUpdatesBlocker blocker(this); Client* c = new Client(); setupClientConnections(c); - connect(c, &Client::activeChanged, m_compositor, static_cast(&Compositor::checkUnredirect)); - connect(c, SIGNAL(fullScreenChanged()), m_compositor, SLOT(checkUnredirect())); - connect(c, SIGNAL(geometryChanged()), m_compositor, SLOT(checkUnredirect())); - connect(c, SIGNAL(geometryShapeChanged(KWin::Toplevel*,QRect)), m_compositor, SLOT(checkUnredirect())); connect(c, SIGNAL(blockingCompositingChanged(KWin::Client*)), m_compositor, SLOT(updateCompositeBlocking(KWin::Client*))); connect(c, SIGNAL(clientFullScreenSet(KWin::Client*,bool,bool)), ScreenEdges::self(), SIGNAL(checkBlocking())); if (!c->manage(w, is_mapped)) {