diff options
author | Tomi Valkeinen <tomi.valkeinen@iki.fi> | 2015-10-03 21:13:06 +0300 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@iki.fi> | 2015-10-03 22:41:49 +0300 |
commit | 4832ae09005c5e2bb86b9ab378af000f2ab313f1 (patch) | |
tree | 1c9b047c2e07f27b2c1793512a20bc7d6115fef6 /libkms++/card.cpp | |
parent | 9e3f0a9c4b6790618637b4ed93d45092e84dd84b (diff) |
add PageFlipHandler
Diffstat (limited to 'libkms++/card.cpp')
-rw-r--r-- | libkms++/card.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/libkms++/card.cpp b/libkms++/card.cpp index ae41f10..8438629 100644 --- a/libkms++/card.cpp +++ b/libkms++/card.cpp @@ -246,4 +246,24 @@ std::vector<kms::Pipeline> Card::get_connected_pipelines() return outputs; } +static void page_flip_handler(int fd, unsigned int frame, + unsigned int sec, unsigned int usec, + void *data) +{ + auto handler = (PageFlipHandlerBase*)data; + double time = sec + usec / 1000000.0; + handler->handle_page_flip(frame, time); +} + +void Card::call_page_flip_handlers() +{ + drmEventContext ev = { + .version = DRM_EVENT_CONTEXT_VERSION, + .vblank_handler = 0, + .page_flip_handler = page_flip_handler, + }; + + drmHandleEvent(fd(), &ev); +} + } |