kwin: remove unused kscreen effect

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2021-07-16 04:28:58 +03:00
parent 5c6056952d
commit dd91c12cef
8 changed files with 1 additions and 381 deletions

View file

@ -45,7 +45,6 @@ set(kwin4_effect_builtins_sources)
set(kwin4_effect_builtins_config_sources effects/configs_builtins.cpp)
set(kwin4_effect_include_directories)
include( effects/kscreen/CMakeLists.txt )
include( effects/presentwindows/CMakeLists.txt )
include( effects/slidingpopups/CMakeLists.txt )
include( effects/taskbarthumbnail/CMakeLists.txt )

View file

@ -68,7 +68,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "effects/diminactive/diminactive.h"
#include "effects/dimscreen/dimscreen.h"
#include "effects/highlightwindow/highlightwindow.h"
#include "effects/kscreen/kscreen.h"
#include "effects/logout/logout.h"
#include "effects/magnifier/magnifier.h"
#include "effects/minimizeanimation/minimizeanimation.h"
@ -1375,9 +1374,7 @@ bool EffectsHandlerImpl::loadEffect(const QString& name, bool checkDefault)
Effect* effect = 0;
QLibrary* library = 0;
// builtins first
if (internalname == "kwin4_effect_kscreen") {
effect = new KscreenEffect();
} else if (internalname == "kwin4_effect_presentwindows") {
if (internalname == "kwin4_effect_presentwindows") {
effect = new PresentWindowsEffect();
} else if (internalname == "kwin4_effect_slidingpopups") {
effect = new SlidingPopupsEffect();

View file

@ -1,13 +0,0 @@
#######################################
# Effect
# Source files
set(kwin4_effect_builtins_sources
${kwin4_effect_builtins_sources}
effects/kscreen/kscreen.cpp
)
kde4_add_kcfg_files(kwin4_effect_builtins_sources effects/kscreen/kscreenconfig.kcfgc)
# .desktop files
install(FILES effects/kscreen/kscreen.desktop DESTINATION ${KDE4_SERVICES_INSTALL_DIR}/kwin)

View file

@ -1,189 +0,0 @@
/********************************************************************
KWin - the KDE window manager
This file is part of the KDE project.
Copyright (C) 2013 Martin Gräßlin <mgraesslin@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*********************************************************************/
// own
#include "kscreen.h"
// KConfigSkeleton
#include "kscreenconfig.h"
/**
* How this effect works:
*
* Effect announces that it is around through property _KDE_KWIN_KSCREEN_SUPPORT on the root window.
*
* KScreen watches for this property and when it wants to adjust screens, KScreen goes
* through the following protocol:
* 1. KScreen sets the property value to 1
* 2. Effect starts to fade out all windows
* 3. When faded out the effect sets property value to 2
* 4. KScreen adjusts the screens
* 5. KScreen sets property value to 3
* 6. Effect starts to fade in all windows again
* 7. Effect sets back property value to 0
*
* The property has type 32 bits cardinal. To test it use:
* xprop -root -f _KDE_KWIN_KSCREEN_SUPPORT 32c -set _KDE_KWIN_KSCREEN_SUPPORT 1
*
* The states are:
* 0: normal
* 1: fading out
* 2: faded out
* 3: fading in
**/
namespace KWin
{
KscreenEffect::KscreenEffect()
: Effect()
, m_state(StateNormal)
, m_atom(effects->announceSupportProperty("_KDE_KWIN_KSCREEN_SUPPORT", this))
{
connect(effects, SIGNAL(propertyNotify(KWin::EffectWindow*,long)), SLOT(propertyNotify(KWin::EffectWindow*,long)));
reconfigure(ReconfigureAll);
}
KscreenEffect::~KscreenEffect()
{
}
void KscreenEffect::reconfigure(ReconfigureFlags flags)
{
Q_UNUSED(flags)
KscreenConfig::self()->readConfig();
m_timeLine.setDuration(animationTime<KscreenConfig>(250));
}
void KscreenEffect::prePaintScreen(ScreenPrePaintData &data, int time)
{
if (m_state == StateFadingIn || m_state == StateFadingOut) {
m_timeLine.setCurrentTime(m_timeLine.currentTime() + time);
if (m_timeLine.currentValue() >= 1.0) {
switchState();
}
}
effects->prePaintScreen(data, time);
}
void KscreenEffect::postPaintScreen()
{
if (m_state == StateFadingIn || m_state == StateFadingOut) {
effects->addRepaintFull();
}
}
void KscreenEffect::prePaintWindow(EffectWindow *w, WindowPrePaintData &data, int time)
{
if (m_state != StateNormal) {
data.setTranslucent();
}
effects->prePaintWindow(w, data, time);
}
void KscreenEffect::paintWindow(EffectWindow *w, int mask, QRegion region, WindowPaintData &data)
{
switch (m_state) {
case StateFadingOut:
data.multiplyOpacity(1.0 - m_timeLine.currentValue());
break;
case StateFadedOut:
data.multiplyOpacity(0.0);
break;
case StateFadingIn:
data.multiplyOpacity(m_timeLine.currentValue());
break;
default:
// no adjustment
break;
}
effects->paintWindow(w, mask, region, data);
}
void KscreenEffect::propertyNotify(EffectWindow *window, long atom)
{
if (window || atom != m_atom) {
return;
}
QByteArray byteData = effects->readRootProperty(m_atom, XCB_ATOM_CARDINAL, 32);
long *data = reinterpret_cast<long *>(byteData.data());
if (!data[0]) {
// Property was deleted
if (m_state != StateNormal) {
m_state = StateNormal;
effects->addRepaintFull();
}
return;
}
if (data[0] == 0) {
// normal state - KWin should have switched to it
if (m_state != StateNormal) {
m_state = StateNormal;
effects->addRepaintFull();
}
return;
}
if (data[0] == 2) {
// faded out state - KWin should have switched to it
if (m_state != StateFadedOut) {
m_state = StateFadedOut;
effects->addRepaintFull();
}
return;
}
if (data[0] == 1) {
// kscreen wants KWin to fade out all windows
m_state = StateFadingOut;
m_timeLine.setCurrentTime(0);
effects->addRepaintFull();
return;
}
if (data[0] == 3) {
// kscreen wants KWin to fade in again
m_state = StateFadingIn;
m_timeLine.setCurrentTime(0);
effects->addRepaintFull();
return;
}
kDebug(1212) << "Incorrect Property state, immediate stop: " << data[0];
m_state = StateNormal;
effects->addRepaintFull();
}
void KscreenEffect::switchState()
{
long value = -1l;
if (m_state == StateFadingOut) {
m_state = StateFadedOut;
value = 2l;
} else if (m_state == StateFadingIn) {
m_state = StateNormal;
value = 0l;
}
if (value != -1l) {
xcb_change_property(connection(), XCB_PROP_MODE_REPLACE, rootWindow(), m_atom, XCB_ATOM_CARDINAL, 32, 1, &value);
}
}
bool KscreenEffect::isActive() const
{
return m_state != StateNormal;
}
} // namespace KWin

View file

@ -1,93 +0,0 @@
[Desktop Entry]
Name=Kscreen
Name[bs]=KScreen
Name[ca]=Kscreen
Name[ca@valencia]=Kscreen
Name[cs]=Kscreen
Name[da]=KScreen
Name[de]=Kscreen
Name[el]=Kscreen
Name[en_GB]=Kscreen
Name[es]=Kscreen
Name[et]=Kscreen
Name[eu]=Kscreen
Name[fi]=Kscreen
Name[gl]=KScreen
Name[hu]=Kscreen
Name[ia]=Kscreen
Name[kk]=Kscreen
Name[ko]=Kscreen
Name[nb]=Kscreen
Name[nds]=KScreen
Name[nl]=Kscreen
Name[pa]=
Name[pl]=Kscreen
Name[pt]=Kscreen
Name[pt_BR]=KScreen
Name[ro]=Kscreen
Name[ru]=Kscreen
Name[sk]=Kscreen
Name[sl]=Kscreen
Name[sr]=Кекран
Name[sr@ijekavian]=Кекран
Name[sr@ijekavianlatin]=Kekran
Name[sr@latin]=Kekran
Name[sv]=Kskärm
Name[tr]=Kscreen
Name[uk]=Kscreen
Name[x-test]=xxKscreenxx
Name[zh_CN]=Kscreen
Name[zh_TW]=Kscreen
Icon=preferences-system-windows-effect-kscreen
Comment=Helper Effect for KScreen
Comment[bs]=Pomoćni efekat za KScreen
Comment[ca]=Efecte auxiliar pel KScreen
Comment[ca@valencia]=Efecte auxiliar pel KScreen
Comment[cs]=Pomocný efekt pro KScreen
Comment[da]=Hjælpeeffekt til KScreen
Comment[de]=Hilfseffekt für KScreen
Comment[el]=Βοηθητικό εφέ για το KScreen
Comment[en_GB]=Helper Effect for KScreen
Comment[es]=Efecto auxiliar para KScreen
Comment[et]=KScreeni abiefekt
Comment[eu]=KScreen-entzako efektu laguntzailea
Comment[fi]=KScreenin avustustehoste
Comment[gl]=Efecto auxiliar para KScreen.
Comment[hu]=Segédeffektus a KScreenhez
Comment[ia]=Effecto de adjutante pro KScreen
Comment[kk]=KScreen-нің көмек эффекті
Comment[ko]=KScreen
Comment[nb]=Hjelpereffekt for KScreen
Comment[nds]=Hülpeffekt för KScreen
Comment[nl]=Effect van hulp voor KScreen
Comment[pa]=
Comment[pl]=Efekt pomocniczy dla KScreen
Comment[pt]=Efeito auxiliar do KScreen
Comment[pt_BR]=Efeito auxiliar do KScreen
Comment[ro]=Efect ajutător pentru KScreen
Comment[ru]=Вспомогательный эффект для KScreen
Comment[sk]=Pomocný efekt pre KScreen
Comment[sl]=Pomožni učinek za KScreen
Comment[sr]=Помоћни ефекат за Кекран
Comment[sr@ijekavian]=Помоћни ефекат за Кекран
Comment[sr@ijekavianlatin]=Pomoćni efekat za Kekran
Comment[sr@latin]=Pomoćni efekat za Kekran
Comment[sv]=Hjälpeffekt för Kskärm
Comment[tr]=KScreen için Yardımcı Efekt
Comment[uk]=Допоміжний ефект KScreen
Comment[x-test]=xxHelper Effect for KScreenxx
Comment[zh_CN]=KScreen
Comment[zh_TW]=KScreen
Type=Service
X-KDE-ServiceTypes=KWin/Effect
X-KDE-PluginInfo-Author=Martin Gräßlin
X-KDE-PluginInfo-Email=mgraesslin@kde.org
X-KDE-PluginInfo-Name=kwin4_effect_kscreen
X-KDE-PluginInfo-Version=0.1.0
X-KDE-PluginInfo-Category=Appearance
X-KDE-PluginInfo-Depends=
X-KDE-PluginInfo-License=GPL
X-KDE-PluginInfo-EnabledByDefault=true
X-KDE-Ordering=99
X-KWin-Requires-Shaders=false

View file

@ -1,64 +0,0 @@
/********************************************************************
KWin - the KDE window manager
This file is part of the KDE project.
Copyright (C) 2013 Martin Gräßlin <mgraesslin@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*********************************************************************/
#ifndef KWIN_KSCREEN_H
#define KWIN_KSCREEN_H
#include <kwineffects.h>
// Qt
#include <QTimeLine>
namespace KWin
{
class KscreenEffect : public Effect
{
Q_OBJECT
public:
KscreenEffect();
virtual ~KscreenEffect();
virtual void prePaintScreen(ScreenPrePaintData &data, int time);
virtual void postPaintScreen();
virtual void prePaintWindow(EffectWindow *w, WindowPrePaintData &data, int time);
virtual void paintWindow(EffectWindow *w, int mask, QRegion region, WindowPaintData &data);
void reconfigure(ReconfigureFlags flags);
virtual bool isActive() const;
private Q_SLOTS:
void propertyNotify(KWin::EffectWindow *window, long atom);
private:
void switchState();
enum FadeOutState {
StateNormal,
StateFadingOut,
StateFadedOut,
StateFadingIn
};
QTimeLine m_timeLine;
FadeOutState m_state;
xcb_atom_t m_atom;
};
} // namespace KWin
#endif // KWIN_KSCREEN_H

View file

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
<kcfgfile name="kwinrc"/>
<group name="Effect-Kscreen">
<entry name="Duration" type="Int">
<default>0</default>
</entry>
</group>
</kcfg>

View file

@ -1,5 +0,0 @@
File=kscreen.kcfg
ClassName=KscreenConfig
NameSpace=KWin
Singleton=true
Mutators=true