summaryrefslogtreecommitdiff
path: root/src/protocols/types/WLBuffer.hpp
blob: 2e823c5e8a5f4661643a87dce81e0e04ee788ac6 (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
#pragma once

#include <vector>
#include <cstdint>
#include "../WaylandProtocol.hpp"
#include "wayland.hpp"
#include "../../helpers/signal/Signal.hpp"

class IHLBuffer;
class CWLSurfaceResource;

class CWLBufferResource {
  public:
    static SP<CWLBufferResource> create(WP<CWlBuffer> resource);
    static SP<CWLBufferResource> fromResource(wl_resource* res);

    bool                         good();
    void                         sendRelease();
    wl_resource*                 getResource();

    WP<IHLBuffer>                m_buffer;

    WP<CWLBufferResource>        m_self;

  private:
    CWLBufferResource(WP<CWlBuffer> resource_);

    SP<CWlBuffer> m_resource;

    friend class IHLBuffer;
};