Review Request 116787: Always create NETEventFilter (a QWidget subclass) in the main application thread

Thomas Lübking thomas.luebking at gmail.com
Fri Mar 14 12:46:33 UTC 2014



> On March 13, 2014, 10:40 p.m., Thomas Lübking wrote:
> > You'll need a drawable, clients will require XInitThreads if that is accessed from a different than the GUI thread, but it might be possible to use an internal Window and move the QObject to the GUI thread on construction.
> 
> Martin Gräßlin wrote:
>     > clients will require XInitThreads
>     
>     Qt does that

My Qt broken?

// gcc -fPIC -o qapplication `pkg-config --libs --cflags Qt5Widgets` -lstdc++ qapplication.cpp

#include <QApplication>
#include <QWidget>
#include <QtDebug>

class Widget : public QWidget {
public:
    Widget() : QWidget() {}
protected:
    virtual void showEvent(QShowEvent *ev) {
        qDebug() << QCoreApplication::testAttribute(Qt::AA_X11InitThreads);
        QWidget::showEvent(ev);
    }
};

int main(int argc, char **argv)
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

--------
Prints false (as i frankly expected ...)


- Thomas


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/116787/#review52915
-----------------------------------------------------------


On March 14, 2014, 10:36 a.m., Aaron J. Seigo wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/116787/
> -----------------------------------------------------------
> 
> (Updated March 14, 2014, 10:36 a.m.)
> 
> 
> Review request for KDE Frameworks, kwin and Martin Gräßlin.
> 
> 
> Repository: kwindowsystem
> 
> 
> Description
> -------
> 
> When using KWindowInfo from a thread other than the main application thread, the application fails on an assert triggered by creating a QWidget in another thread. This is due to NETEventFilter being a QWidget. This patch addresses the issue by using a QObject to create the NETEventFilter, which is itself first moved to the main application thread. 
> 
> 
> Diffs
> -----
> 
>   src/kwindowsystem.cpp 4c17baa 
>   src/kwindowsystem_p_x11.h 75f3028 
>   src/kwindowsystem_x11.cpp 95c396b 
> 
> Diff: https://git.reviewboard.kde.org/r/116787/diff/
> 
> 
> Testing
> -------
> 
> Used in the Sprinter Windows plugin and works lovely to find desktops, windows, etc.
> 
> 
> Thanks,
> 
> Aaron J. Seigo
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20140314/9c5e9488/attachment.html>


More information about the Kde-frameworks-devel mailing list