summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2017-02-12 01:11:41 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2017-02-12 17:01:38 +0200
commit3037dba80d888a0322d8ebf4e9728800fc314275 (patch)
treeba2995cd531f81214a44ba900f2f14bcd568d4be
parente96a0e9b7aecc5c3b3cc3fbf705a0942bf105c9e (diff)
[HACK] py: Expose Videomode::to_blob method
Returning the blob through an std::unique_ptr<> causes issues with pybind11. Return the blob pointer directly as a workaround while the root cause is investigated and fixed. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--kms++/inc/kms++/videomode.h2
-rw-r--r--kms++/src/videomode.cpp5
-rw-r--r--py/pykms/pykmsbase.cpp1
3 files changed, 5 insertions, 3 deletions
diff --git a/kms++/inc/kms++/videomode.h b/kms++/inc/kms++/videomode.h
index 39e5639..085c23a 100644
--- a/kms++/inc/kms++/videomode.h
+++ b/kms++/inc/kms++/videomode.h
@@ -29,7 +29,7 @@ struct Videomode
uint32_t flags; // DRM_MODE_FLAG_*
uint32_t type; // DRM_MODE_TYPE_*
- std::unique_ptr<Blob> to_blob(Card& card) const;
+ Blob *to_blob(Card& card) const;
uint16_t hfp() const { return hsync_start - hdisplay; }
uint16_t hsw() const { return hsync_end - hsync_start; }
diff --git a/kms++/src/videomode.cpp b/kms++/src/videomode.cpp
index 4964a57..98754e0 100644
--- a/kms++/src/videomode.cpp
+++ b/kms++/src/videomode.cpp
@@ -10,11 +10,12 @@ using namespace std;
namespace kms
{
-unique_ptr<Blob> Videomode::to_blob(Card& card) const
+Blob *Videomode::to_blob(Card& card) const
{
drmModeModeInfo drm_mode = video_mode_to_drm_mode(*this);
+ Blob *blob = new Blob(card, &drm_mode, sizeof(drm_mode));
- return unique_ptr<Blob>(new Blob(card, &drm_mode, sizeof(drm_mode)));
+ return blob;
}
float Videomode::calculated_vrefresh() const
diff --git a/py/pykms/pykmsbase.cpp b/py/pykms/pykmsbase.cpp
index 090c212..1492e53 100644
--- a/py/pykms/pykmsbase.cpp
+++ b/py/pykms/pykmsbase.cpp
@@ -148,6 +148,7 @@ void init_pykmsbase(py::module &m)
py::class_<Videomode>(m, "Videomode")
.def(py::init<>())
+ .def("blob", &Videomode::to_blob)
.def_readwrite("name", &Videomode::name)