2
* Copyright © 2013 Canonical Ltd.
4
* This program is free software: you can redistribute it and/or modify it
5
* under the terms of the GNU General Public License version 3,
6
* as published by the Free Software Foundation.
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
13
* You should have received a copy of the GNU General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
16
* Authored by: Alexandros Frantzis <alexandros.frantzis@canonical.com>
19
#ifndef MIR_GRAPHICS_GBM_DRM_MODE_RESOURCES_H_
20
#define MIR_GRAPHICS_GBM_DRM_MODE_RESOURCES_H_
23
#include <xf86drmMode.h>
35
typedef std::unique_ptr<drmModeCrtc,std::function<void(drmModeCrtc*)>> DRMModeCrtcUPtr;
36
typedef std::unique_ptr<drmModeEncoder,std::function<void(drmModeEncoder*)>> DRMModeEncoderUPtr;
37
typedef std::unique_ptr<drmModeConnector,std::function<void(drmModeConnector*)>> DRMModeConnectorUPtr;
38
typedef std::unique_ptr<drmModeRes,std::function<void(drmModeRes*)>> DRMModeResUPtr;
40
class DRMModeResources
43
explicit DRMModeResources(int drm_fd);
45
void for_each_connector(std::function<void(DRMModeConnectorUPtr)> const& f) const;
46
void for_each_encoder(std::function<void(DRMModeEncoderUPtr)> const& f) const;
47
void for_each_crtc(std::function<void(DRMModeCrtcUPtr)> const& f) const;
49
size_t num_connectors();
50
size_t num_encoders();
53
DRMModeConnectorUPtr connector(uint32_t id) const;
54
DRMModeEncoderUPtr encoder(uint32_t id) const;
55
DRMModeCrtcUPtr crtc(uint32_t id) const;
59
DRMModeResUPtr const resources;
66
#endif /* MIR_GRAPHICS_GBM_DRM_MODE_RESOURCES_H_ */