summaryrefslogtreecommitdiff
path: root/src/config/supplementary/propRefresher/PropRefresher.hpp
blob: 457112fa0197623ea455e57ba585ac5750ed709d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#pragma once

#include <cstdint>
#include <type_traits>

#include "../../../helpers/memory/Memory.hpp"

namespace Config::Supplementary {
    enum ePropRefreshProp : uint16_t {
        REFRESH_LAYOUTS            = (1 << 0),
        REFRESH_INPUT_DEVICES      = (1 << 1),
        REFRESH_SCREEN_SHADER      = (1 << 2),
        REFRESH_BLUR_FB            = (1 << 3),
        REFRESH_RULES              = (1 << 4),
        REFRESH_WINDOW_STATES      = (1 << 5) | REFRESH_RULES,
        REFRESH_MONITOR_STATES     = (1 << 6) | REFRESH_LAYOUTS,
        REFRESH_CURSOR_ZOOMS       = (1 << 7),
        REFRESH_CONFIG_WATCHER     = (1 << 8),
        REFRESH_GRADIENTS_GROUPBAR = (1 << 9),

        REFRESH_ALL = std::numeric_limits<std::underlying_type_t<ePropRefreshProp>>::max(),
    };

    using PropRefreshBits = std::underlying_type_t<ePropRefreshProp>;

    class CPropRefresher {
      public:
        void scheduleRefresh(PropRefreshBits reason);

      private:
        bool            m_scheduled = false;
        PropRefreshBits m_propsTripped;
    };

    UP<CPropRefresher>& refresher();
};