[Development] qtsystems doesn't compile - mtcore mandatory dependency

xizhi.zhu at nokia.com xizhi.zhu at nokia.com
Tue Nov 1 16:50:31 CET 2011


Hi,

Yes, the screen saver for Linux needs to be fixed, and it's on my todo list.

For the MAC implementation, I already have some code locally, but they're not properly tested yet, so I don't want to publish them now...

================
Xizhi Zhu (Steven)

Software Engineer @ Qt Development Frameworks
Nokia

Mobile: +358 (0)50 480 1247
________________________________________
From: development-bounces+xizhi.zhu=nokia.com at qt-project.org [development-bounces+xizhi.zhu=nokia.com at qt-project.org] on behalf of ext Thiago Macieira [thiago at kde.org]
Sent: Tuesday, November 01, 2011 4:44 PM
To: development at qt-project.org
Subject: Re: [Development] qtsystems doesn't compile - mtcore mandatory dependency

On Tuesday, 1 de November de 2011 15:06:57 Robin Burchell wrote:
>     !contains(QT_CONFIG, jsondb): {
>         PRIVATE_HEADERS += qscreensaver_linux_p.h
>         SOURCES += qscreensaver_linux.cpp
>
>         DEFINES += QT_NO_JSONDB
>     } else {
>         PRIVATE_HEADERS += qjsondbwrapper_p.h \
>                            qscreensaver_jsondb_p.h
>
>         SOURCES += qjsondbwrapper.cpp \
>                    qscreensaver_jsondb.cpp
>
>         QT += jsondb
>         PKGCONFIG += mtcore
>         LIBS += -L$$[QT_INSTALL_PREFIX]/opt/mt/lib -lmtcore
> -Wl,-rpath,$$[QT_INSTALL_PREFIX]/opt/mt/lib
>     }
>
> Whoever maintains this, you should probably change that contains()
> conditional to also check packagesExist(mtcore). For an example, see:

I'm not sure that's the proper solution.

Look at the files it's turning off because jsondb was found: the screensaver
files. I have no clue what a database has to do with screensavers, but I doubt
my KDE will react to it, so the proper solution is to fix
qscreensaver_linux.cpp.


And now I've looked at qscreensaver_linux.cpp. First of all, it should be
called qscreensaver_x11.cpp, since it's an X11 implementation. Second, in
Qt 5, there's no more Q_WS_X11, so this code will never work. It needs to be
replaced with a QPA equivalent, getting the name of the QPA plugin loaded at
runtime (like we discussed) and do the proper thing.

At minimum, this file needs to be qscreensaver_unix.cpp and deal with X11/XCB
and Wayland, plus the Mac and Windows implementations. Also note a Mac
implementation (a reference platform) is missing.

I have no clue what the jsondb implementation is for, but it looks extremely
non-standard to me. If anyone wants it, they should set a flag when compiling
qtsystems. The default should be to use the QPA solutions.


It seems to me we have two tasks here. The first is a P0, to fix the build. The
second is a P1, to implement the functionality for the reference platforms.
I'll create those tasks tomorrow.

--
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
   Software Architect - Intel Open Source Technology Center
      PGP/GPG: 0x6EF45358; fingerprint:
      E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358



More information about the Development mailing list