Files
z-bar-qt/Plugins/ZShell/Internal/wallpapersurface.hpp
T
zach 11e94fbb4b
C++ / fmt (pull_request) Failing after 4s
C++ / build (pull_request) Failing after 9s
C++ / clang-tidy (pull_request) Failing after 10s
JS/TS / fmt (pull_request) Successful in 10s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Successful in 28s
Rust / build (pull_request) Successful in 47s
Python / verify (pull_request) Successful in 1m40s
Rust / fmt (pull_request) Successful in 29s
Rust / clippy (pull_request) Successful in 46s
Merge branch 'main' into feat/llm-chat-tab
2026-10-05 19:33:42 +02:00

59 lines
1.4 KiB
C++

#pragma once
#include <EGL/egl.h>
#include <wayland-egl.h>
#include <QSize>
#include <QString>
#include <qwayland-fractional-scale-v1.h>
#include <qwayland-viewporter.h>
#include <qwayland-wlr-layer-shell-unstable-v1.h>
#include <wayland-client-protocol.h>
namespace ZShell::internal {
class WallpaperService;
class WallpaperSurface : public QtWayland::zwlr_layer_surface_v1,
public QtWayland::wp_viewport,
public QtWayland::wp_fractional_scale_v1 {
public:
WallpaperSurface(
WallpaperService* service,
wl_surface* surface,
wl_output* output,
const QString& screen);
~WallpaperSurface() override;
[[nodiscard]] const QString& screen() const { return m_screen; }
[[nodiscard]] const QSize& size() const { return m_size; }
[[nodiscard]] const QSize& bufferSize() const { return m_bufferSize; }
[[nodiscard]] EGLSurface eglSurface() const { return m_eglSurface; }
void redraw();
private:
void zwlr_layer_surface_v1_configure(
uint32_t serial, uint32_t width, uint32_t height) override;
void zwlr_layer_surface_v1_closed() override;
void wp_fractional_scale_v1_preferred_scale(uint32_t scale) override;
void updateBuffer();
WallpaperService* m_service;
QString m_screen;
wl_surface* m_surface;
wl_egl_window* m_window = nullptr;
EGLSurface m_eglSurface = EGL_NO_SURFACE;
QSize m_size;
QSize m_bufferSize;
qreal m_scale = 1.0;
bool configured = false;
};
} // namespace ZShell::internal