You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Tag:
Branch:
Tree:
5da8b4c78a
Plasma/5.17
Plasma/5.20
Plasma/5.21
Plasma/5.22
Plasma/5.23
Plasma/5.24
master
upstream
wilder-Plasma/5.16
wilder-Plasma/5.17
wilder-Plasma/5.18
wilder-Plasma/5.19
wilder-Plasma/5.20
wilder-Plasma/5.23
wilder-Plasma/5.24
wilder-Plasma/5.25
wilder-Plasma/5.25-rebase
wilder-Plasma/5.26
wilder-Plasma/5.26-bottom-rebase-terse
wilder-Plasma/5.26-rebase
wilder-Plasma/5.26-rebase-terse
wilder-Plasma/5.26-tip-rebase
wilder-Plasma/5.26-works
wilder-Plasma/5.27
wilder-Plasma/5.27-bottom-rebase
wilder-last-point
wilder-master
wilder-master-debugging-multiscreen
wilder-master-rebase
wilder-master-rebase-stable
wilder/Plasma/6.2
wilder/Plasma/6.3
wilder/rebase-5.27
wilder/rebase-5.27-current
windowview-enhance
windowview-enhance-+debug
v4.96.0
v4.97.0
v4.98.0
v5.0.0
v5.0.1
v5.0.2
v5.0.95
v5.1.0
v5.1.1
v5.1.2
v5.1.95
v5.10.0
v5.10.1
v5.10.2
v5.10.3
v5.10.3.1
v5.10.4
v5.10.5
v5.10.95
v5.11.0
v5.11.1
v5.11.2
v5.11.3
v5.11.4
v5.11.5
v5.11.95
v5.12.0
v5.12.1
v5.12.2
v5.12.3
v5.12.4
v5.12.5
v5.12.6
v5.12.7
v5.12.8
v5.12.9
v5.12.90
v5.13.0
v5.13.1
v5.13.2
v5.13.3
v5.13.4
v5.13.5
v5.13.90
v5.14.0
v5.14.1
v5.14.2
v5.14.3
v5.14.4
v5.14.5
v5.14.90
v5.15.0
v5.15.1
v5.15.2
v5.15.3
v5.15.3.1
v5.15.3.2
v5.15.4
v5.15.5
v5.15.90
v5.16.0
v5.16.1
v5.16.2
v5.16.3
v5.16.4
v5.16.5
v5.16.90
v5.17.0
v5.17.1
v5.17.2
v5.17.3
v5.17.4
v5.17.5
v5.17.90
v5.18.0
v5.18.1
v5.18.2
v5.18.3
v5.18.4
v5.18.4.1
v5.18.5
v5.18.6
v5.18.7
v5.18.8
v5.18.90
v5.19.0
v5.19.1
v5.19.2
v5.19.3
v5.19.4
v5.19.5
v5.19.90
v5.2.0
v5.2.0.1
v5.2.1
v5.2.2
v5.2.95
v5.20.0
v5.20.1
v5.20.2
v5.20.3
v5.20.4
v5.20.5
v5.20.90
v5.21.0
v5.21.1
v5.21.2
v5.21.3
v5.21.4
v5.21.5
v5.21.90
v5.22.0
v5.22.1
v5.22.2
v5.22.3
v5.22.4
v5.22.5
v5.22.90
v5.23.0
v5.23.1
v5.23.2
v5.23.3
v5.23.4
v5.23.5
v5.23.90
v5.24.0
v5.24.1
v5.24.2
v5.24.3
v5.24.4
v5.24.5
v5.24.6
v5.24.7
v5.24.90
v5.25.0
v5.25.1
v5.25.2
v5.25.3
v5.25.4
v5.25.5
v5.25.90
v5.26.0
v5.26.1
v5.26.2
v5.26.3
v5.26.4
v5.26.5
v5.26.90
v5.27.0
v5.27.1
v5.27.2
v5.27.3
v5.27.4
v5.27.4.1
v5.27.5
v5.27.6
v5.3.0
v5.3.1
v5.3.2
v5.3.95
v5.4.0
v5.4.1
v5.4.2
v5.4.3
v5.4.95
v5.5.0
${ noResults }
Summary:
Most effects use QTimeLine in the following manner
```lang=cpp
if (...) {
m_timeline->setCurrentTime(m_timeline->currentTime() + time);
} else {
m_timeline->setCurrentTime(m_timeline->currentTime() - time);
}
```
Because effects do not rely on a timer that QTimeLine has, they can't
toggle direction of the QTimeLine, which makes somewhat harder to write
effects. In some cases that's obvious what condition to use to figure
out whether to add or subtract `time`, but there are cases when it's
not. In addition to that, setCurrentTime allows to have negative
currentTime, which in some cases causes bugs.
And overall, the way effects use QTimeLine is really hack-ish. It makes
more sense just to use an integer accumulator(like the Fall Apart
effect is doing) than to use QTimeLine.
Another problem with QTimeLine is that it's a QObject and some effects
do
```lang=cpp
class WindowInfo
{
public:
~WindowInfo();
QTimeLine *timeLine;
};
WindowInfo::~WindowInfo()
{
delete timeLine;
}
// ...
QHash<EffectWindow*, WindowInfo> m_windows;
```
which is unsafe.
This change adds the TimeLine class. The TimeLine class is a timeline
helper that designed specifically for needs of effects.
Demo
```lang=cpp
TimeLine timeLine(1000, TimeLine::Forward);
timeLine.setEasingCurve(QEasingCurve::Linear);
timeLine.value(); // 0.0
timeLine.running(); // false
timeLine.done(); // false
timeLine.update(420);
timeLine.value(); // 0.42
timeLine.running(); // true
timeLine.done(); // false
timeLine.toggleDirection();
timeLine.value(); // 0.42
timeLine.running(); // true
timeLine.done(); // false
timeLine.update(100);
timeLine.value(); // 0.32
timeLine.running(); // true
timeLine.done(); // false
timeLine.update(1000);
timeLine.value(); // 0.0
timeLine.running(); // false
timeLine.done(); // true
```
Test Plan: Ran tests.
Reviewers: #kwin, davidedmundson, graesslin
Reviewed By: #kwin, davidedmundson, graesslin
Subscribers: romangg, graesslin, anthonyfieroni, davidedmundson, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D13740
|
8 years ago | |
|---|---|---|
| .. | ||
| data/glplatform | Properly detect Gallium drivers with newer Mesa | 8 years ago |
| CMakeLists.txt | [libkwineffects] Add TimeLine helper | 8 years ago |
| kwinglplatformtest.cpp | Remove Qt module declarations in includes | 8 years ago |
| mock_gl.cpp |
…
|
|
| mock_gl.h |
…
|
|
| timelinetest.cpp | [libkwineffects] Add TimeLine helper | 8 years ago |
| windowquadlisttest.cpp | Remove Qt module declarations in includes | 8 years ago |