6#if QT_CONFIG(gstreamer_gl) && QT_CONFIG(gstreamer_gl_egl)
8#include <QtCore/qapplicationstatic.h>
9#include <QtCore/qmutex.h>
10#include <QtCore/qthread.h>
11#include <QtGui/qguiapplication.h>
12#include <QtGui/qpa/qplatformnativeinterface.h>
21 Qt::HANDLE display =
nullptr;
23# if QT_CONFIG(linux_dmabuf)
24 QFunctionPointer targetTexture2D = eglGetProcAddress(
"glEGLImageTargetTexture2DOES");
29 Q_ASSERT(QThread::isMainThread());
30 using namespace Qt::StringLiterals;
31 auto *pni = qGuiApp ? qGuiApp->platformNativeInterface() :
nullptr;
32 display = pni ? pni->nativeResourceForIntegration(
"egldisplay"_ba) :
nullptr;
36Q_APPLICATION_STATIC(EglHolder, s_eglHolder);
38Qt::HANDLE qGstEglDisplay()
40 EglHolder *holder = s_eglHolder();
41 QMutexLocker lock(&holder->mutex);
42 if (!holder->display && QThread::isMainThread())
43 holder->queryDisplay();
44 return holder->display;
47# if QT_CONFIG(linux_dmabuf)
48bool qGstEglCanMapDmaBuf()
50 EglHolder *holder = s_eglHolder();
51 QMutexLocker lock(&holder->mutex);
52 if (!holder->display && QThread::isMainThread())
53 holder->queryDisplay();
54 return (holder->display && holder->targetTexture2D);
57QFunctionPointer qGstEglImageTargetTexture2D()
59 EglHolder *holder = s_eglHolder();
60 return holder->targetTexture2D;