fix(wayland): Fixed 990 machine crashing when running under the machine

Description:修复990机器下运行会崩溃的问题

Log: 无
This commit is contained in:
liuyuanpeng 2023-06-01 10:28:05 +08:00
parent cfe2038a26
commit eb675096ee
5 changed files with 11 additions and 9 deletions

View File

@ -28,4 +28,4 @@ set(Common_SRC
)
add_library(Common STATIC ${Common_SRC})
target_link_libraries(Common Qt5::Core Qt5::DBus Qt5::Widgets ${GIOUNIX2_LIBRARIES} ${KF5Wayland_LIBRARIES} -lKF5WaylandClient -lKF5WaylandServer KF5::WindowSystem)
target_link_libraries(Common Qt5::Core Qt5::DBus Qt5::Widgets Qt5::X11Extras ${GIOUNIX2_LIBRARIES} ${KF5Wayland_LIBRARIES} -lKF5WaylandClient -lKF5WaylandServer KF5::WindowSystem)

View File

@ -19,6 +19,7 @@
#include "plasma-shell-manager.h"
#include <QApplication>
#include <QX11Info>
#include <KWayland/Client/connection_thread.h>
#include <KWayland/Client/registry.h>
@ -31,6 +32,9 @@ static PlasmaShellManager* global_instance = nullptr;
PlasmaShellManager *PlasmaShellManager::getInstance()
{
if(QString(qgetenv("XDG_SESSION_TYPE")) != "wayland" || QX11Info::isPlatformX11()){
return nullptr;
}
if (!global_instance)
{
global_instance = new PlasmaShellManager;

View File

@ -28,7 +28,7 @@ LettersWidget::LettersWidget(QWidget *parent/* = nullptr*/)
this->setAttribute(Qt::WA_TranslucentBackground);//背景透明
initUI();
if(QString(qgetenv("XDG_SESSION_TYPE")) == "wayland") {
if(QString(qgetenv("XDG_SESSION_TYPE")) == "wayland" && !QX11Info::isPlatformX11()) {
isWayland = true;
}

View File

@ -365,7 +365,7 @@ bool FullBackgroundWidget::eventFilter(QObject *obj, QEvent *event)
if(event->type() == QEvent::WindowDeactivate){
QTimer::singleShot(50,this,SLOT(laterActivate()));
}else if(event->type() == QEvent::WindowActivate){
if(QString(qgetenv("XDG_SESSION_TYPE")) == "wayland") {
if(QString(qgetenv("XDG_SESSION_TYPE")) == "wayland" && !QX11Info::isPlatformX11()) {
PlasmaShellManager::getInstance()->setAppWindowKeepAbove(true);
}
@ -1222,7 +1222,7 @@ void FullBackgroundWidget::onDesktopResized()
update();
#endif
if(QString(qgetenv("XDG_SESSION_TYPE")) == "wayland") {
if(QString(qgetenv("XDG_SESSION_TYPE")) == "wayland" && !QX11Info::isPlatformX11() ) {
PlasmaShellManager::getInstance()->setPos(this->windowHandle(),QPoint(0,0));
}
}

View File

@ -26,6 +26,7 @@
#include <QDateTime>
#include <QWidget>
#include <QDebug>
#include <QX11Info>
#include <QDesktopWidget>
#include <QDBusInterface>
#include "plasma-shell-manager.h"
@ -253,9 +254,6 @@ int main(int argc, char *argv[])
}
#ifndef USE_INTEL
if (QString(qgetenv("XDG_SESSION_TYPE")) == "wayland")
window->show();
else
window->show();
window->activateWindow();
#endif
@ -300,7 +298,7 @@ int main(int argc, char *argv[])
bool isWayland = false;
if(QString(qgetenv("XDG_SESSION_TYPE")) == "wayland") {
if(QString(qgetenv("XDG_SESSION_TYPE")) == "wayland" && !QX11Info::isPlatformX11()) {
isWayland = true;
}
if (isWayland){