kwin/src/plugins/qpa/offscreensurface.cpp
Vlad Zahorodnii 7096e3ead8 Run clang-format
The .clang-format file is based on the one in ECM except the following
style options:

 - AlwaysBreakBeforeMultilineStrings
 - BinPackArguments
 - BinPackParameters
 - ColumnLimit
 - BreakBeforeBraces
 - KeepEmptyLinesAtTheStartOfBlocks
2022-03-25 13:25:15 +02:00

70 lines
1.5 KiB
C++

/*
KWin - the KDE window manager
This file is part of the KDE project.
SPDX-FileCopyrightText: 2019 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "offscreensurface.h"
#include "eglhelpers.h"
#include "main.h"
#include "platform.h"
#include <QOffscreenSurface>
namespace KWin
{
namespace QPA
{
OffscreenSurface::OffscreenSurface(QOffscreenSurface *surface)
: QPlatformOffscreenSurface(surface)
, m_eglDisplay(kwinApp()->platform()->sceneEglDisplay())
{
const QSize size = surface->size();
EGLConfig config = configFromFormat(m_eglDisplay, surface->requestedFormat(), EGL_PBUFFER_BIT);
if (config == EGL_NO_CONFIG_KHR) {
return;
}
const EGLint attributes[] = {
EGL_WIDTH, size.width(),
EGL_HEIGHT, size.height(),
EGL_NONE};
m_surface = eglCreatePbufferSurface(m_eglDisplay, config, attributes);
if (m_surface == EGL_NO_SURFACE) {
return;
}
// Requested and actual surface format might be different.
m_format = formatFromConfig(m_eglDisplay, config);
}
OffscreenSurface::~OffscreenSurface()
{
if (m_surface != EGL_NO_SURFACE) {
eglDestroySurface(m_eglDisplay, m_surface);
}
}
QSurfaceFormat OffscreenSurface::format() const
{
return m_format;
}
bool OffscreenSurface::isValid() const
{
return m_surface != EGL_NO_SURFACE;
}
EGLSurface OffscreenSurface::eglSurface() const
{
return m_surface;
}
} // namespace QPA
} // namespace KWin