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