Age | Commit message (Collapse) | Author |
|
|
|
Update to latest pybind11 HEAD. We can't use the latest tag (v2.2.0) as
it has a regression.
There were two problems when updating:
1) Difficulty in managing DrmObject derived classes
Most of the DrmObjects are owned by Card, and can't be allocated or
freed, but a few of them are allocated and freed by the user. For the
former, we need to use unique_ptr with py::nodelete, but that prevents
the latter from working.
The solution was to not tell the python that the latter classes derive
from DrmObject.
This seems to be missing feature in pybind11, but I think we can live
with it.
2) DrmObjects in STL containers
vector<T> where T is a DrmObject derived class doesn't work. We need to
have a manual wrapper to return vector<unique_ptr<T, py::nodelete>>
instead.
This also seems to be a pybind11 missing feature.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
|
|
Unfortunately the nice event handler added previously doesn't work: we
may get multiple page-flip events, which would lead to unref'ing the
passed python object multiple times, leading to memory corruption.
I guess it's only possible to pass a plain int as user data to commit()
and page_flip().
|
|
The current event handling relies on the PageFlipHandlerBase class which
has to be implemented on the python side.
This patch implements a more versatile event handling, where any python
object can be passed as data to the commit or page flip, and it's up to
the python implementation to decide what to do with that data when
receiving the event.
Note that when doing the commit or page_flip, the ref count of the
given python object is incremented to keep it alive. The ref count is
decremented when reading the events with the new helper method
card.read_events(). This helper _has_ to be used to ensure the objects
get released properly.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
|
|
Separate the Python bindings sources from the test scripts. While at it,
remove the unneeded run.sh script.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|