screencast: make context current in tryEnqueue

The method is used when the cursor position changes. There is no guarantee
that a context would be current at that point in time
This commit is contained in:
Xaver Hugl 2022-03-13 02:04:33 +01:00
parent 9eecefd157
commit 1fd1c03742

View file

@ -522,8 +522,10 @@ void ScreenCastStream::tryEnqueue(pw_buffer *buffer)
// we need to insert a fence into the command stream and enqueue the pipewire buffer
// only after the fence is signaled; otherwise stream consumers will most likely see
// a corrupted buffer.
if (auto scene = Compositor::self()->scene()) {
scene->makeOpenGLContextCurrent();
}
if (kwinApp()->platform()->supportsNativeFence()) {
Q_ASSERT_X(eglGetCurrentContext(), "tryEnqueue", "no current context");
m_pendingFence = new EGLNativeFence(kwinApp()->platform()->sceneEglDisplay());
if (!m_pendingFence->isValid()) {
qCWarning(KWIN_SCREENCAST) << "Failed to create a native EGL fence";