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

View File

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

View File

@ -365,7 +365,7 @@ bool FullBackgroundWidget::eventFilter(QObject *obj, QEvent *event)
if(event->type() == QEvent::WindowDeactivate){ if(event->type() == QEvent::WindowDeactivate){
QTimer::singleShot(50,this,SLOT(laterActivate())); QTimer::singleShot(50,this,SLOT(laterActivate()));
}else if(event->type() == QEvent::WindowActivate){ }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); PlasmaShellManager::getInstance()->setAppWindowKeepAbove(true);
} }
@ -1222,7 +1222,7 @@ void FullBackgroundWidget::onDesktopResized()
update(); update();
#endif #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)); PlasmaShellManager::getInstance()->setPos(this->windowHandle(),QPoint(0,0));
} }
} }

View File

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