blob: 86e6a66733d7ba3b659572a4984f8d4744e24fc0 [file] [log] [blame]
// Copyright 2018 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SCREENSHOT_PTR_UTIL_H_
#define SCREENSHOT_PTR_UTIL_H_
#include <gbm.h>
#include <xf86drm.h>
#include <xf86drmMode.h>
#include <memory>
namespace screenshot {
struct DrmModeResDeleter {
void operator()(drmModeRes* resources) {
drmModeFreeResources(resources);
}
};
using ScopedDrmModeResPtr = std::unique_ptr<drmModeRes, DrmModeResDeleter>;
struct DrmModeCrtcDeleter {
void operator()(drmModeCrtc* crtc) {
drmModeFreeCrtc(crtc);
}
};
using ScopedDrmModeCrtcPtr = std::unique_ptr<drmModeCrtc, DrmModeCrtcDeleter>;
struct DrmModeEncoderDeleter {
void operator()(drmModeEncoder* encoder) {
drmModeFreeEncoder(encoder);
}
};
using ScopedDrmModeEncoderPtr =
std::unique_ptr<drmModeEncoder, DrmModeEncoderDeleter>;
struct DrmModeConnectorDeleter {
void operator()(drmModeConnector* connector) {
drmModeFreeConnector(connector);
}
};
using ScopedDrmModeConnectorPtr =
std::unique_ptr<drmModeConnector, DrmModeConnectorDeleter>;
struct DrmModeFBDeleter {
void operator()(drmModeFB* fb) {
drmModeFreeFB(fb);
}
};
using ScopedDrmModeFBPtr = std::unique_ptr<drmModeFB, DrmModeFBDeleter>;
struct GbmDeviceDeleter {
void operator()(gbm_device* device) {
gbm_device_destroy(device);
}
};
using ScopedGbmDevicePtr = std::unique_ptr<gbm_device, GbmDeviceDeleter>;
struct GbmBoDeleter {
void operator()(gbm_bo* bo) {
gbm_bo_destroy(bo);
}
};
using ScopedGbmBoPtr = std::unique_ptr<gbm_bo, GbmBoDeleter>;
} // namespace screenshot
#endif // SCREENSHOT_PTR_UTIL_H_