KWin
Loading...
Searching...
No Matches
kscreen.h
Go to the documentation of this file.
1/*
2 KWin - the KDE window manager
3 This file is part of the KDE project.
4
5 SPDX-FileCopyrightText: 2013 Martin Gräßlin <mgraesslin@kde.org>
6
7 SPDX-License-Identifier: GPL-2.0-or-later
8*/
9#pragma once
10
11#include "effect/effect.h"
12#include "effect/timeline.h"
13
14#include <xcb/xcb.h>
15
16namespace KWin
17{
18
19class KscreenEffect : public Effect
20{
21 Q_OBJECT
22
23public:
25 ~KscreenEffect() override;
26
27 void prePaintScreen(ScreenPrePaintData &data, std::chrono::milliseconds presentTime) override;
28 void postPaintScreen() override;
29 void prePaintWindow(EffectWindow *w, WindowPrePaintData &data, std::chrono::milliseconds presentTime) override;
30 void paintWindow(const RenderTarget &renderTarget, const RenderViewport &viewport, EffectWindow *w, int mask, QRegion region, WindowPaintData &data) override;
31
32 void reconfigure(ReconfigureFlags flags) override;
33 bool isActive() const override;
34
35 int requestedEffectChainPosition() const override
36 {
37 return 99;
38 }
39
40private Q_SLOTS:
41 void propertyNotify(KWin::EffectWindow *window, long atom);
42
43private:
44 enum FadeOutState {
45 StateNormal,
46 StateFadingOut,
47 StateFadedOut,
48 StateFadingIn,
49 LastState
50 };
51 struct ScreenState
52 {
53 TimeLine m_timeLine;
54 FadeOutState m_state = StateNormal;
55 };
56
57 void switchState(ScreenState &state);
58 void setState(ScreenState &state, FadeOutState newState);
59 void addScreen(Output *screen);
60 bool isScreenActive(Output *screen) const;
61
62 QHash<Output *, ScreenState> m_waylandStates;
63 ScreenState m_xcbState;
64 Output *m_currentScreen = nullptr;
65 xcb_atom_t m_atom;
66};
67
68} // namespace KWin
Base class for all KWin effects.
Definition effect.h:535
Representation of a window used by/for Effect classes.
void prePaintScreen(ScreenPrePaintData &data, std::chrono::milliseconds presentTime) override
Definition kscreen.cpp:95
~KscreenEffect() override
Definition kscreen.cpp:70
void prePaintWindow(EffectWindow *w, WindowPrePaintData &data, std::chrono::milliseconds presentTime) override
Definition kscreen.cpp:126
void reconfigure(ReconfigureFlags flags) override
Definition kscreen.cpp:88
void paintWindow(const RenderTarget &renderTarget, const RenderViewport &viewport, EffectWindow *w, int mask, QRegion region, WindowPaintData &data) override
Definition kscreen.cpp:138
bool isActive() const override
Definition kscreen.cpp:210
int requestedEffectChainPosition() const override
Definition kscreen.h:35
void postPaintScreen() override
Definition kscreen.cpp:115