Load and init the KWinX11Platform plugin in main_x11
kwin_x11 now also loads a platform plugin and initializes it. It doesn't do much except loading it and init it. Though it's also set up to continue startup only when screens are queried.
This commit is contained in:
parent
ee89f3f34f
commit
8b148fa11a
1 changed files with 32 additions and 3 deletions
35
main_x11.cpp
35
main_x11.cpp
|
@ -22,12 +22,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
#include "main_x11.h"
|
||||
#include <config-kwin.h>
|
||||
// kwin
|
||||
#include "platform.h"
|
||||
#include "sm.h"
|
||||
#include "workspace.h"
|
||||
#include "xcbutils.h"
|
||||
|
||||
// KDE
|
||||
#include <KLocalizedString>
|
||||
#include <KPluginLoader>
|
||||
#include <KPluginMetaData>
|
||||
// Qt
|
||||
#include <qplatformdefs.h>
|
||||
#include <QCommandLineParser>
|
||||
|
@ -36,6 +39,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
#ifdef HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#endif // HAVE_UNISTD_H
|
||||
#include <iostream>
|
||||
|
||||
namespace KWin
|
||||
{
|
||||
|
@ -179,11 +183,23 @@ void ApplicationX11::performStartup()
|
|||
}
|
||||
|
||||
createInput();
|
||||
createWorkspace();
|
||||
|
||||
Xcb::sync(); // Trigger possible errors, there's still a chance to abort
|
||||
connect(platform(), &Platform::screensQueried, this,
|
||||
[this] {
|
||||
createWorkspace();
|
||||
|
||||
notifyKSplash();
|
||||
Xcb::sync(); // Trigger possible errors, there's still a chance to abort
|
||||
|
||||
notifyKSplash();
|
||||
}
|
||||
);
|
||||
connect(platform(), &Platform::initFailed, this,
|
||||
[] () {
|
||||
std::cerr << "FATAL ERROR: backend failed to initialize, exiting now" << std::endl;
|
||||
::exit(1);
|
||||
}
|
||||
);
|
||||
platform()->init();
|
||||
});
|
||||
// we need to do an XSync here, otherwise the QPA might crash us later on
|
||||
Xcb::sync();
|
||||
|
@ -319,6 +335,19 @@ KWIN_EXPORT int kdemain(int argc, char * argv[])
|
|||
exit(1);
|
||||
}
|
||||
|
||||
// find and load the X11 platform plugin
|
||||
const auto plugins = KPluginLoader::findPluginsById(QStringLiteral("org.kde.kwin.platforms"),
|
||||
QStringLiteral("KWinX11Platform"));
|
||||
if (plugins.isEmpty()) {
|
||||
std::cerr << "FATAL ERROR: KWin could not find the KWinX11Platform plugin" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
a.initPlatform(plugins.first());
|
||||
if (!a.platform()) {
|
||||
std::cerr << "FATAL ERROR: could not instantiate the platform plugin" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
a.start();
|
||||
|
||||
KWin::SessionSaveDoneHelper helper;
|
||||
|
|
Loading…
Reference in a new issue