16static void pageFlipHandler(
int fd,
unsigned int sequence,
unsigned int tv_sec,
unsigned int tv_usec,
void *user_data)
23 QEglFSKmsScreen *screen =
static_cast<QEglFSKmsScreen *>(user_data);
24 if (QEglFSKmsScreen::isScreenKnown(screen))
25 screen->pageFlipped(sequence, tv_sec, tv_usec);
27 qWarning(
"Deleted screen got it's pageFlipHandler called; Dead pointer: %p", user_data);
118 qCDebug(qLcEglfsKmsDebug,
"Event reader thread: entering event loop");
120 QSocketNotifier notifier(m_fd, QSocketNotifier::Read);
121 QObject::connect(¬ifier, &QSocketNotifier::activated, ¬ifier, [
this] {
122 drmEventContext drmEvent;
123 memset(&drmEvent, 0,
sizeof(drmEvent));
124 drmEvent.version = 2;
125 drmEvent.vblank_handler =
nullptr;
126 drmEvent.page_flip_handler = pageFlipHandler;
127 drmHandleEvent(m_fd, &drmEvent);
132 m_ev.moveToThread(thread());
134 qCDebug(qLcEglfsKmsDebug,
"Event reader thread: event loop stopped");
142void QEglFSKmsEventReader::create(QEglFSKmsDevice *device)
151 qCDebug(qLcEglfsKmsDebug,
"Initializing event reader for device %p fd %d",
152 m_device, m_device->fd());
154 m_thread =
new QEglFSKmsEventReaderThread(m_device->fd());
159 m_thread->eventHost()->moveToThread(m_thread);
179void QEglFSKmsEventReader::startWaitFlip(
void *key, QMutex *mutex, QWaitCondition *cond)
182 QCoreApplication::postEvent(m_thread->eventHost(),
183 new RegisterWaitFlipEvent(key, mutex, cond));