Paste P422

Masterwork From Distant Lands
ActivePublic

Authored by davidedmundson on Jun 28 2019, 12:37 PM.
diff --git a/plugins/qpa/integration.cpp b/plugins/qpa/integration.cpp
index c48b471e7..66d7e4b31 100644
--- a/plugins/qpa/integration.cpp
+++ b/plugins/qpa/integration.cpp
@@ -154,9 +154,13 @@ QPlatformWindow *Integration::createPlatformWindow(QWindow *window) const
if (!s || !c) {
return new QPlatformWindow(window);
} else {
- // don't set window as parent, cause infinite recursion in PlasmaQuick::Dialog
- auto surface = c->createSurface(c);
- return new Window(window, surface, s->createSurface(surface, surface), this);
+ if (window->surfaceClass() == QSurface::Window) {
+ // don't set window as parent, cause infinite recursion in PlasmaQuick::Dialog
+ auto surface = c->createSurface(c);
+ return new Window(window, surface, s->createSurface(surface, surface), this);
+ } else {
+ return new Window(window, this);
+ }
}
}
diff --git a/plugins/qpa/window.cpp b/plugins/qpa/window.cpp
index 8b0717321..dcc792fa7 100644
--- a/plugins/qpa/window.cpp
+++ b/plugins/qpa/window.cpp
@@ -53,6 +53,16 @@ Window::Window(QWindow *window, KWayland::Client::Surface *surface, KWayland::Cl
waylandServer()->internalClientConection()->flush();
}
+Window::Window(QWindow *window, const Integration *integration)
+ : QPlatformWindow(window)
+ , m_surface(nullptr)
+ , m_shellSurface(nullptr)
+ , m_windowId(++s_windowId)
+ , m_integration(integration)
+ , m_scale(screens()->maxScale())
+{
+}
+
Window::~Window()
{
unmap();
@@ -126,7 +136,9 @@ QSharedPointer<QOpenGLFramebufferObject> Window::swapFBO()
{
auto fbo = m_contentFBO;
m_contentFBO.clear();
- m_surface->commit(KWayland::Client::Surface::CommitFlag::None);
+ if (m_surface) {
+ m_surface->commit(KWayland::Client::Surface::CommitFlag::None);
+ }
return fbo;
}
diff --git a/plugins/qpa/window.h b/plugins/qpa/window.h
index f43019535..a7c0ceb00 100644
--- a/plugins/qpa/window.h
+++ b/plugins/qpa/window.h
@@ -52,6 +52,8 @@ class Window : public QPlatformWindow
{
public:
explicit Window(QWindow *window, KWayland::Client::Surface *surface, KWayland::Client::ShellSurface *shellSurface, const Integration *integration);
+ explicit Window(QWindow *window, const Integration *integration);
+
virtual ~Window();
void setVisible(bool visible) override;
davidedmundson edited the content of this paste. (Show Details)Jun 28 2019, 12:37 PM
davidedmundson changed the title of this paste from untitled to Masterwork From Distant Lands.