[Development] X11/XCB QPA: QPlatformIntegration::ThreadedOpenGL returning false

Robin Burchell robin+qt at viroteck.net
Mon Aug 12 11:36:54 CEST 2013


Hi,

On Mon, Aug 12, 2013 at 11:29 AM, James Turner <james.turner at kdab.com> wrote:
>     bool supportsThreadedRendering() const { return m_reader->isRunning(); }
>
> I need someone to explain the rational for this test, since I'm no X11 or XCB expert, and hopefully this will illuminate why it's failing on the particular target. (Which as far as I know has a standard X11 build on it)

The reader will be running or not, set here in QXcbConnection::QXcbConnection:

    m_reader = new QXcbEventReader(this);
    connect(m_reader, SIGNAL(eventPending()), this,
SLOT(processXcbEvents()), Qt::QueuedConnection);
    connect(m_reader, SIGNAL(finished()), this, SLOT(processXcbEvents()));
    if (!m_reader->startThread()) {
...

And startThread checks for the existence of
m_xcb_poll_for_queued_event, which is searched for in
QXcbEventReader::QXcbEventReader:

#ifdef RTLD_DEFAULT
    m_xcb_poll_for_queued_event =
(XcbPollForQueuedEventFunctionPointer)dlsym(RTLD_DEFAULT,
"xcb_poll_for_queued_event");
#endif

So I'd guess either you have RTLD_DEFAULT not defined (probably not
the case, if this is a fairly stock linux system) or your xcb install
is out of date, as AFAIK this was only released fairly recently.

BR,

Robin



More information about the Development mailing list